我的ad程序,開始運(yùn)行第一個(gè)周期能進(jìn)中斷,而后就進(jìn)不去了,下面是程序,請高手幫我指點(diǎn)一下,小弟急啊,已經(jīng)郁悶了幾天了
.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 ;定時(shí)器周期中斷 0027h
B PHANTOM ;保留向量地址偏移量 0028h
B PHANTOM ;定時(shí)器下溢中斷 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 ;允許符號(hào)擴(kuò)展
CLRC OVM ;累加器中結(jié)果正常溢出
CLRC CNF ;雙口RAM區(qū)被映射到數(shù)據(jù)存儲(chǔ)空間
LDP #SCSR1>>7 ;裝載系統(tǒng)控制與狀態(tài)寄存器頁地址
SPLK #818FH,SCSR1 ;設(shè)置系統(tǒng)控制與狀態(tài)寄存器1
LACC SCSR2
OR #0BH
AND #0FH
SACL SCSR2 ;設(shè)置系統(tǒng)控制與狀態(tài)寄存器2
;禁止引導(dǎo)rom
;SRAM被映射到片內(nèi)程序空間又被映射到片內(nèi)數(shù)據(jù)空間
SPLK #0E8H,WDCR ;看門狗禁止
LDP #IMR>>7 ;裝載中斷屏蔽寄存器頁地址
SPLK #01H,IMR ;使能INT1
SPLK #0FFFFH,IFR ;清所有中斷標(biāo)志寄存器
LAR AR0,#STK
LDP #7H
RET
INIT_PWM:
LDP #MCRA>>7 ;裝載IO復(fù)用控制寄存器數(shù)據(jù)頁地址
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 ;定時(shí)器1連續(xù)增減模式, 1預(yù)分頻
;定時(shí)器不使能,內(nèi)部CPU時(shí)鐘,比較不使能
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 *+ ;保護(hù)現(xiàn)場
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)程序進(jìn)不了中斷,郁悶了幾天了,急急
全部回復(fù)(16)
正序查看
倒序查看
@jingangcom
定時(shí)器使能了啊,在初始化后統(tǒng)一使能的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
不好意思,沒仔細(xì)看!
對了,進(jìn)中斷后,需要清中斷標(biāo)志位吧?!
ldp #EVBIFRC>>7
SPLK #0FFFFH,EVBIFRC
對了,進(jìn)中斷后,需要清中斷標(biāo)志位吧?!
ldp #EVBIFRC>>7
SPLK #0FFFFH,EVBIFRC
0
回復(fù)
@jingangcom
定時(shí)器使能了啊,在初始化后統(tǒng)一使能的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
這是什么意思,沒看明白!
LDP #ADCTRL2>>7
BIT ADCTRL1,BIT0
BCND ADCISR,TC
你用的是2407嗎?!
LDP #ADCTRL2>>7
BIT ADCTRL1,BIT0
BCND ADCISR,TC
你用的是2407嗎?!
0
回復(fù)