?? adc.asm
字號(hào):
st0_temp .usect ".b20",1 ;60
st1_temp .usect ".b20",1 ;61
context .usect ".b20",7 ;62-68
STACK .usect ".stack",40
ADCOUNT .usect ".data0",1 ;288
ADRESULT .usect ".data0",1 ;289
.include "F2407REGS.H" ;引用頭部文件
.def _c_int0
;#################################################
;(1)建立中斷向量表
.sect ".vectors" ;定義主向量段
RSVECT B _c_int0 ;PM 0 Reset Vector 1
INT2 B PHANTOM ;PM 4 Int level 2 5
INT3 B PHANTOM ;PM 6 Int level 3 6
INT4 B PHANTOM ;PM 8 Int level 4 7
INT5 B PHANTOM ;PM A Int level 5 8
INT6 B PHANTOM ;PM C Int level 6 9
RESERVED B PHANTOM ;PM E (Analysis Int) 10
SW_INT8 B PHANTOM ;PM 10 User S/W int -
SW_INT9 B PHANTOM ;PM 12 User S/W int -
SW_INT10 B PHANTOM ;PM 14 User S/W int -
SW_INT11 B PHANTOM ;PM 16 User S/W int -
SW_INT12 B PHANTOM ;PM 18 User S/W int -
SW_INT13 B PHANTOM ;PM 1A User S/W int -
SW_INT14 B PHANTOM ;PM 1C User S/W int -
SW_INT15 B PHANTOM ;PM 1E User S/W int -
SW_INT16 B PHANTOM ;PM 20 User S/W int -
TRAP B PHANTOM ;PM 22 Trap vector -
NMI B PHANTOM ;PM 24 Non maskable Int3
EMU_TRAP B PHANTOM ;PM 26 Emulator Trap2 -
SW_INT20 B PHANTOM ;PM 28 User S/W int -
SW_INT21 B PHANTOM ;PM 2A User S/W int -
SW_INT22 B PHANTOM ;PM 2C User S/W int -
SW_INT23 B PHANTOM ;PM 2E User S/W int -
SW_INT24 B PHANTOM ;PM 30 User S/W int -
SW_INT25 B PHANTOM ;PM 32 User S/W int -
SW_INT26 B PHANTOM ;PM 34 User S/W int -
SW_INT27 B PHANTOM ;PM 36 User S/W int -
SW_INT28 B PHANTOM ;PM 38 User S/W int -
SW_INT29 B PHANTOM ;PM 3A User S/W int -
SW_INT30 B PHANTOM ;PM 3C User S/W int -
SW_INT31 B PHANTOM ;PM 3E User S/W int -
;中斷子向量入口定義pvecs
.sect ".pvecs" ;定義子向量段
PVECTORS B PHANTOM ;Reserved pvector addr offset-00H
B PHANTOM ;Reserved pvector addr offset-01H
B PHANTOM ;Reserved pvector addr offset-02H
B PHANTOM ;Reserved pvector addr offset-03H
B ADCINT_ISR ;Reserved pvector addr offset-04H ADC中斷
B PHANTOM ;Reserved pvector addr offset-05H
B PHANTOM ;Reserved pvector addr offset-06H
B PHANTOM ;Reserved pvector addr offset-07H
B PHANTOM ;Reserved pvector addr offset-08H
B PHANTOM ;Reserved pvector addr offset-09H
B PHANTOM ;Reserved pvector addr offset-0AH
B PHANTOM ;Reserved pvector addr offset-0BH
B PHANTOM ;Reserved pvector addr offset-0CH
B PHANTOM ;Reserved pvector addr offset-0DH
B PHANTOM ;Reserved pvector addr offset-0EH
B PHANTOM ;Reserved pvector addr offset-0FH
B PHANTOM ;Reserved pvector addr offset-10H
B PHANTOM ;Reserved pvector addr offset-11H
B PHANTOM ;Reserved pvector addr offset-12H
B PHANTOM ;Reserved pvector addr offset-13H
B PHANTOM ;Reserved pvector addr offset-14H
B PHANTOM ;Reserved pvector addr offset-15H
B PHANTOM ;Reserved pvector addr offset-16H
B PHANTOM ;Reserved pvector addr offset-17H
B PHANTOM ;Reserved pvector addr offset-18H
B PHANTOM ;Reserved pvector addr offset-19H
B PHANTOM ;Reserved pvector addr offset-1AH
B PHANTOM ;Reserved pvector addr offset-1BH
B PHANTOM ;Reserved pvector addr offset-1CH
B PHANTOM ;Reserved pvector addr offset-1DH
B PHANTOM ;Reserved pvector addr offset-1EH
B PHANTOM ;Reserved pvector addr offset-1FH
B PHANTOM ;Reserved pvector addr offset-20H
B PHANTOM ;Reserved pvector addr offset-21H
B PHANTOM ;Reserved pvector addr offset-22H
B PHANTOM ;Reserved pvector addr offset-23H
B PHANTOM ;Reserved pvector addr offset-24H
B PHANTOM ;Reserved pvector addr offset-25H
B PHANTOM ;Reserved pvector addr offset-26H
B PHANTOM ;Reserved pvector addr offset-27H
B PHANTOM ;Reserved pvector addr offset-28H
B PHANTOM ;Reserved pvector addr offset-29H
B PHANTOM ;Reserved pvector addr offset-2AH
B PHANTOM ;Reserved pvector addr offset-2BH
B PHANTOM ;Reserved pvector addr offset-2CH
B PHANTOM ;Reserved pvector addr offset-2DH
B PHANTOM ;Reserved pvector addr offset-2EH
B PHANTOM ;Reserved pvector addr offset-2FH
B PHANTOM ;Reserved pvector addr offset-30H
B PHANTOM ;Reserved pvector addr offset-31H
B PHANTOM ;Reserved pvector addr offset-32H
B PHANTOM ;Reserved pvector addr offset-33H
B PHANTOM ;Reserved pvector addr offset-34H
B PHANTOM ;Reserved pvector addr offset-35H
B PHANTOM ;Reserved pvector addr offset-36H
B PHANTOM ;Reserved pvector addr offset-37H
B PHANTOM ;Reserved pvector addr offset-38H
B PHANTOM ;Reserved pvector addr offset-39H
B PHANTOM ;Reserved pvector addr offset-3AH
B PHANTOM ;Reserved pvector addr offset-3BH
B PHANTOM ;Reserved pvector addr offset-3CH
B PHANTOM ;Reserved pvector addr offset-3DH
B PHANTOM ;Reserved pvector addr offset-3EH
B PHANTOM ;Reserved pvector addr offset-3FH
B PHANTOM ;Reserved pvector addr offset-40H
B PHANTOM ;Reserved pvector addr offset-41H
; (2)主程序:
.text
_c_int0
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF
LDP #0E0H
SPLK #81FEH,SCSR1 ;CLKIN=6M,CLKOUT=24M
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 #234 ;設(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,ADCCTRL1 ;設(shè)置ADC控制寄存器
SPLK #8404H,ADCCTRL2
SPLK #000FH,MAXCONV ;16 通道
SPLK #3210H,CHSELSEQ1
SPLK #7654H,CHSELSEQ2
SPLK #0BA98H,CHSELSEQ3
SPLK #0FEDCH,CHSELSEQ4
LDP #DP_SARAM2 ;指向0A00H-0A80H
SPLK #ADRESULT,ADCOUNT
RET
;(4)啟動(dòng)模數(shù)轉(zhuǎn)換程序
AD:
LDP #234
LACL T4CON
OR #40H ;啟動(dòng)定時(shí)器4
SACL T4CON
RET
;(5)中斷程序
GISR1: ;優(yōu)先級(jí)INT1中斷子程序入口
;保護(hù)現(xiàn)場(chǎng)
LDP #0 ;保存機(jī)器上下文
SST #0,st0_temp ;使用自動(dòng)尋址,DP-0
SST #1,st1_temp ;保存狀態(tài)寄存器到B2 DARAM.
LDP #0
SACL context ;保存ACC的低16位
SACH context+1 ;保存ACC的高16位
SAR AR1,context+2
SAR AR2,context+3
SAR AR3,context+4
SAR AR4,context+5
SAR AR5,context+6
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,#RESULT0
MAR *,AR2
ADC1: LACC *+,10,AR1
SACH *
ADRK #32
MAR *,AR0
BANZ ADC1,*-,AR2
LDP #DP_PF2
LACL ADCCTRL2
OR #4000H ;復(fù)位SEQ1
AND #0FFDFH ;清INT FLAG SEQ1
SACL ADCCTRL2
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)
LDP #DP_EVA
SPLK #0FFFFH,EVAIFRA
LDP #0
LAR AR5,context+6
LAR AR4,context+5
LAR AR3,context+4
LAR AR2,context+3
LAR AR1,context+2
LACC context+1,16
ADDS context
LST #1, st1_temp
LST #0, st0_temp
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 + -