我的ad程序,开始运行第一个周期能进中断,而后就进不去了,下面是程序,请高手帮我指点一下,小弟急啊,已经郁闷了几天了
.ref _c_int0
.ref GISR1
.ref ADCISR
.ref PHANTOM
.def PVECTORS
.sect ".vectors"
RSVECT B _c_int0 ;PM0 段的首地址
INT1 B GISR1 ;PM2
INT2 B PHANTOM ;PM4
INT3 B PHANTOM ;PM6
INT4 B PHANTOM ;PM8
INT5 B PHANTOM ;PMA
INT6 B PHANTOM ;PMC
RESERVED B PHANTOM ;PME
SW_INT8 B PHANTOM ;PM10
SW_INT9 B PHANTOM ;PM12
SW_INT10 B PHANTOM ;PM14
SW_INT11 B PHANTOM ;PM16
SW_INT12 B PHANTOM ;PM18
SW_INT13 B PHANTOM ;PM1A
SW_INT14 B PHANTOM ;PM1C
SW_INT15 B PHANTOM ;PM1E
SW_INT16 B PHANTOM ;PM20
SW_INT17 B PHANTOM ;PM22
SW_INT18 B PHANTOM ;PM24
SW_INT19 B PHANTOM ;PM26
SW_INT20 B PHANTOM ;PM28
SW_INT21 B PHANTOM ;PM2A
SW_INT22 B PHANTOM ;PM2C
SW_INT23 B PHANTOM ;PM2E
SW_INT24 B PHANTOM ;PM30
SW_INT25 B PHANTOM ;PM32
SW_INT26 B PHANTOM ;PM34
SW_INT27 B PHANTOM ;PM36
SW_INT28 B PHANTOM ;PM38
SW_INT29 B PHANTOM ;PM3A
SW_INT30 B PHANTOM ;PM3C
SW_INT31 B PHANTOM ;PM3E
;中断子向量入口定义pvecs
.sect ".pvecs" ;定义子向量段
PVECTORS B PHANTOM ;保留向量地址偏移量 0000h
B PHANTOM ;保留向量地址偏移量 0001h
B PHANTOM ;保留向量地址偏移量 0002h
B PHANTOM ;保留向量地址偏移量 0003h
B ADCISR ;保留向量地址偏移量 0004h
B PHANTOM ;保留向量地址偏移量 0005h
B PHANTOM ;保留向量地址偏移量 0006h
B PHANTOM ;保留向量地址偏移量 0007h
B PHANTOM ;保留向量地址偏移量 0008h
B PHANTOM ;保留向量地址偏移量0009h
B PHANTOM ;保留向量地址偏移量 000Ah
B PHANTOM ;保留向量地址偏移量 000Bh
B PHANTOM ;保留向量地址偏移量 000Ch
B PHANTOM ;保留向量地址偏移量 000Dh
B PHANTOM ;保留向量地址偏移量 000Eh
B PHANTOM ;保留向量地址偏移量 000Fh
B PHANTOM ;保留向量地址偏移量 0010h
B PHANTOM ;保留向量地址偏移量 0011h
B PHANTOM ;保留向量地址偏移量 0012h
B PHANTOM ;保留向量地址偏移量 0013h
B PHANTOM ;保留向量地址偏移量 0014h
B PHANTOM ;保留向量地址偏移量 0015h
B PHANTOM ;保留向量地址偏移量 0016h
B PHANTOM ;保留向量地址偏移量 0017h
B PHANTOM ;保留向量地址偏移量 0018h
B PHANTOM ;保留向量地址偏移量 0019h
B PHANTOM ;保留向量地址偏移量 001Ah
B PHANTOM ;保留向量地址偏移量 001Bh
B PHANTOM ;保留向量地址偏移量 001Ch
B PHANTOM ;保留向量地址偏移量 001Dh
B PHANTOM ;保留向量地址偏移量 001Eh
B PHANTOM ;保留向量地址偏移量 001Fh
B PHANTOM ;保留向量地址偏移量 0020h
B PHANTOM ;保留向量地址偏移量 0021h
B PHANTOM ;保留向量地址偏移量 0022h
B PHANTOM ;保留向量地址偏移量 0023h
B PHANTOM ;保留向量地址偏移量 0024h
B PHANTOM ;保留向量地址偏移量 0025h
B PHANTOM ;保留向量地址偏移量 0026h
B PHANTOM ;定时器周期中断 0027h
B PHANTOM ;保留向量地址偏移量 0028h
B PHANTOM ;定时器下溢中断 0029h
B PHANTOM ;保留向量地址偏移量 002Ah
B PHANTOM ;保留向量地址偏移量 002Bh
B PHANTOM ;保留向量地址偏移量 002Ch
B PHANTOM ;保留向量地址偏移量 002Dh
B PHANTOM ;保留向量地址偏移量 002Eh
B PHANTOM ;保留向量地址偏移量 002Fh
B PHANTOM ;保留向量地址偏移量 0030h
B PHANTOM ;保留向量地址偏移量 0031h
B PHANTOM ;保留向量地址偏移量 0032h
B PHANTOM ;保留向量地址偏移量 0033h
B PHANTOM ;保留向量地址偏移量 0034h
B PHANTOM ;保留向量地址偏移量 0035h
B PHANTOM ;捕获4中断 0036h
B PHANTOM ;保留向量地址偏移量 0037h
B PHANTOM ;保留向量地址偏移量 0038h
B PHANTOM ;保留向量地址偏移量 0039h
B PHANTOM ;保留向量地址偏移量 003Ah
B PHANTOM ;保留向量地址偏移量 003Bh
B PHANTOM ;保留向量地址偏移量 003Ch
B PHANTOM ;保留向量地址偏移量 003Dh
B PHANTOM ;保留向量地址偏移量 003Eh
B PHANTOM ;保留向量地址偏移量 003Fh
B PHANTOM ;保留向量地址偏移量 0040h
B PHANTOM ;保留向量地址偏移量 0041h
下面是主程序
.include "F2407REGS.H"
.def _c_int0,INIT_AD
.def PHANTOM
.def GISR1,ADCISR
.ref PVECTORS
STK_LEN .set 100
STK .usect "STACK",STK_LEN
AD0 .usect "data2",1
AD1 .usect "data2",1
STEP .usect "data2",1 ;151EBH ;256/200 Q14
N1 .set 2
ZHUANSHU .set 200
.text
_c_int0:
CALL INIT_SYS
CALL INIT_PWM
CALL INIT_AD
START:
LDP #GPTCONA>>7
LACL T1CON
OR #0040H
SACL T1CON
SPLK #0FFFFH,EVAIFRA
SPLK #0FFFFH,EVAIFRB
SPLK #0FFFFH,EVAIFRC
LDP #GPTCONB>>7
LACL T3CON
OR #0040H
SACL T3CON
SPLK #0FFFFH,EVBIFRA
SPLK #0FFFFH,EVBIFRB
SPLK #0FFFFH,EVBIFRC
LDP #0H
CLRC INTM
LOOP:
NOP
B LOOP
INIT_SYS:
SETC INTM ;禁止所有中断
SETC SXM ;允许符号扩展
CLRC OVM ;累加器中结果正常溢出
CLRC CNF ;双口RAM区被映射到数据存储空间
LDP #SCSR1>>7 ;装载系统控制与状态寄存器页地址
SPLK #818FH,SCSR1 ;设置系统控制与状态寄存器1
LACC SCSR2
OR #0BH
AND #0FH
SACL SCSR2 ;设置系统控制与状态寄存器2
;禁止引导rom
;SRAM被映射到片内程序空间又被映射到片内数据空间
SPLK #0E8H,WDCR ;看门狗禁止
LDP #IMR>>7 ;装载中断屏蔽寄存器页地址
SPLK #01H,IMR ;使能INT1
SPLK #0FFFFH,IFR ;清所有中断标志寄存器
LAR AR0,#STK
LDP #7H
RET
INIT_PWM:
LDP #MCRA>>7 ;装载IO复用控制寄存器数据页地址
LACL MCRA
OR #0FC0H ;IO-->PWM1-6
SACL MCRA
LDP #GPTCONA>>7
SPLK #0999H,ACTRA ;
SPLK #0FFCH,DBTCONA ;disable dead control
SPLK #1000,CMPR1
SPLK #1500,CMPR2
SPLK #0000,CMPR3
SPLK #2000,T1PR
SPLK #0AE00H,COMCONA
SPLK #00H,T1CNT
SPLK #000AH,GPTCONA
SPLK #00H,EVAIMRA
SPLK #00H,EVAIMRB
SPLK #00H,EVAIMRC
SPLK #080CH,T1CON ;定时器1连续增减模式, 1预分频
;定时器不使能,内部CPU时钟,比较不使能
RET
INIT_AD:
LDP #GPTCONB>>7
LACL GPTCONB
OR #008AH
SACL GPTCONB
SPLK #5,T3CNT
SPLK #250,T3PR
SPLK #0B0CH,T3CON
SPLK #0H,EVBIMRA
SPLK #0H,EVBIMRB
SPLK #0H,EVBIMRC
LDP #ADCTRL1>>7
SPLK #4000H,ADCTRL1
NOP
SPLK #0012H,ADCTRL1
SPLK #0C404H,ADCTRL2
SPLK #01H,MAXCONV
SPLK #0010H,CHSELSEQ1
SPLK #0000H,CHSELSEQ2
SPLK #0000H,CHSELSEQ3
SPLK #0000H,CHSELSEQ4
RET
;中断程序
GISR1:
MAR *,AR0
MAR *+
SST #0,*+
SST #1,*+
SACH *+
SACL *+ ;保护现场
LDP #0E0H
LACC PIVR,1
ADD #PVECTORS
BACC
ADCISR:
LDP #ADCTRL2>>7
BIT ADCTRL1,BIT0
BCND ADCISR,TC
LACL ADCTRL2
OR #4200H
SACL ADCTRL2
LACC RESULT0,10
LDP #AD0
SACH AD0
LDP #ADCTRL2>>7
LACC RESULT1,10
LDP #AD0
SACH AD1
BLDD AD0,#CMPR1
BLDD AD1,#CMPR2
;BLDD X3,#CMPR3
NOP
GIRS1_RET:
MAR *,AR0
MAR *-
LACL *-
ADD *-,16
LST #1,*-
LST #0,*-
RET
PHANTOM:
KICK_DOG
RET
END
请教高手,我的ad(2407A)程序进不了中断,郁闷了几天了,急急
全部回复(16)
正序查看
倒序查看
现在还没有回复呢,说说你的想法