⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2407adc.txt

📁 该程序用事件管理器B的定时器4定时时间来触发A/D采样的启动。采样时采用级联模式
💻 TXT
字号:
;该程序用事件管理器B的定时器4定时时间来触发A/D采样的启动。采样时采用级联模式,一次做16个转换,转换通道分别是0~15。转换完成后,在A/D中断服务子程序中将转换结果读出。该程序做一次A/D采样。

.include     "F2407REGS.H" ;引用头部文件
.def         _c_int0
;(1)建立中断向量表
             .sect     ".vectors"     ;定义主向量段
RSVECT       B         _c_int0        ;PM0 复位向量       1
INT1         B         GISR1          ;PM2 中断优先级1    4
INT2         B         PHANTOM        ;PM4 中断优先级2    5
INT3         B         PHANTOM        ;PM6 中断优先级3    6
INT4         B         PHANTOM        ;PM8 中断优先级4    7
INT5         B         PHANTOM        ;PMA 中断优先级5    8
INT6         B         PHANTOM        ;PMC 中断优先级6    9
RESERVED     B         PHANTOM        ;PME 模拟量输入中断(保留) 10
SW_INT8      B         PHANTOM        ;PM10 用户定义软件中断    -
.
.
.
SW_INT31     B         PHANTOM        ;PM3E 用户定义软件中断    -
;中断子向量入口定义pvecs
             .sect     ".pvecs"       ;定义子向量段
PVECTORS     B         PHANTOM        ;保留向量地址偏移量 0000h
             B         PHANTOM        ;保留向量地址偏移量 0001h
             B         PHANTOM        ;保留向量地址偏移量 0002h
             B         PHANTOM        ;保留向量地址偏移量 0003h
             B         PHANTOM        ;保留向量地址偏移量 0004h ADC中断
             B         PHANTOM        ;保留向量地址偏移量 0005h
.
.
.
             B         PHANTOM        ;保留向量地址偏移量 0041h
;(2)主程序:
             .text
_c_int0
             SETC      INTM
             CLRC      SXM
             CLRC      OVM
             CLRC      CNF
             LDP       #0E0H
             SPLK      #81FEH,SCSR1   ;CLKIN=6M,CLKOUT=24M
             SPLK      #0E8H,WDCR     ;关看门狗
             LDP       #0
             SPLK      #0001H,IMR     ;允许INT1中断
             SPLK      #0FFFFH,IFR    ;清所有中断标志
             CALL      ADINIT         ;初始化ADC程序
             CLRC      INTM           ;开总中断
             CALL      AD             ;启动模数转换程序
WAIT:        NOP
             B         WAIT
;(3)ADC初始化程序
ADINIT:      LDP       #225           ;设置通用定时器4
             SPLK      #0000H,T4CNT
             SPLK      #170CH,T4CON
             SPLK      #075H,T4PER
             SPLK      #0400H,GPTCONB
             SPLK      #0FFFFH,EVBIFRB
             SPLK      #0000H,EVBIMRB
             LDP       #DP_PF2
             SPLK      #0010H,ADCTRL1 ;设置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      #ADRESULT,ADCOUNT
             RET
;(4)启动模数转换程序
AD:          LDP       #225
             LACL      T4CON
             OR        #40H           ;启动定时器4
             SACL      T4CON
             RET
;(5)中断程序
GISR1:                                ;优先级INT1中断子程序入口
             ;保护现场
             LDP       #0E0H
             LACC      PIVR,1         ;读取外设中断向量寄存器(PIVR),并左移一位
             ADD       PVECTORS       ;加上外设中断入口地址
             BACC                     ;跳到相应的中断服务子程序
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      ADCTRL2
             OR        #4000H         ;复位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        ;停止定时器4,即停止AD转换
             SACL      T4CON
             B         GISR1_RET
GISR1_RET:                            ;中断返回出口
                                      ;恢复现场
             CLRC      INTM           ;开总中断,因为一进中断就自动关闭了总中断
             RET
;(6)假中断程序
PHANTOM
             KICK_DOG                 ;复位看门狗
             RET
             END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -