?? ad.asm
字號(hào):
.include "2407.H" ;引用頭部文件
.include "conx.h"
.include "varx.h"
.include "intx.h"
.def _c_int0
ADCOUNT .usect ".user",1
ADRESULT .usect ".user",1
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.text
_c_int0
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF
LDP #0E0H
SPLK #81FEH,SCSR1 ;CLKIN=6 M,CLKOUT=24 M
SPLK #0E8h,WDCR ;關(guān)看門狗
LDP #0
SPLK #0001h,IMR ;允許INT1中斷
SPLK #0FFFFh,IFR ;清所有中斷標(biāo)志
CALL ADINIT ;初始化ADC程序
CLRC INTM ;開總中斷
CALL AD ;啟動(dòng)模數(shù)轉(zhuǎn)換程序
WAIT: NOP
B WAIT
;(3)ADC初始化程序
ADINIT:
LDP #225 ;設(shè)置通用定時(shí)器 4
SPLK #0000H,T4CNT
SPLK #170CH,T4CON
SPLK #075H,T4PR
SPLK #0400H,GPTCONB
SPLK #0FFFFH,EVBIFRB
SPLK #0000H,EVBIMRB
LDP #DP_PF2
SPLK #0010H,ADCTRL1 ;設(shè)置ADC控制寄存器
SPLK #8404H,ADCTRL2
SPLK #000FH,MAXCONV ;16 通道
SPLK #3210H,CHSELSEQ1
SPLK #7654H,CHSELSEQ2
SPLK #0BA98H,CHSELSEQ3
SPLK #0FEDCH,CHSELSEQ4
LDP #DP_SARAM2 ;指向0A00h~0A80h
;SPLK #0000H,ADRESULT
SPLK #ADRESULT,ADCOUNT
RET
;(4)啟動(dòng)模數(shù)轉(zhuǎn)換程序
AD:
LDP #225
LACL T4CON
OR #40H ;啟動(dòng)定時(shí)器4
SACL T4CON
RET
;(5)中斷程序
GISR1: ;優(yōu)先級(jí)INT1中斷子程序入口
;保護(hù)現(xiàn)場(chǎng)
LDP #0E0H
LACC PIVR,1 ;讀取外設(shè)中斷向量寄存器(PIVR),并左移一位
ADD #PVECTORS ;加上外設(shè)中斷入口地址
BACC ;跳到相應(yīng)的中斷服務(wù)子程序
ADCINT_ISR:
CLRC SXM
LDP #DP_SARAM2
LAR AR1,ADCOUNT
LAR AR0,#15
LAR AR2,#ADC_RESULT0
MAR *,AR2
ADC1: LACC *+,10,AR1
SACH *
ADRK #32
MAR *,AR0
BANZ ADC1,*-,AR2
LDP #DP_PF2
LACL ADCTRL2
OR #4000H ;復(fù)位 SEQ1
AND #0FFDFH ;清 INT FLAG SEQ1
SACL ADCTRL2
LDP #DP_SARAM2
LACL ADCOUNT
SUB #ADRESULT+31
BCND ADC2,GEQ
ADD #ADRESULT+32 ;<32
SACL ADCOUNT
B GISR1_RET
ADC2: SPLK #ADRESULT,ADCOUNT ;=32
LACL T4CON
AND #0FFBFH ;停止定時(shí)器4,即停止AD轉(zhuǎn)換
SACL T4CON
B GISR1_RET
GISR1_RET: ;中斷返回出口
;恢復(fù)現(xiàn)場(chǎng)
CLRC INTM ;開總中斷,因?yàn)橐贿M(jìn)中斷就自動(dòng)關(guān)閉了總中斷
RET
;(6)假中斷程序
PHANTOM
KICK_DOG ;復(fù)位看門狗
RET
END
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -