您的当前位置:首页正文

DSP 模数转换模块

2021-12-20 来源:钮旅网


第8章 模数转换模块(ADC) 8.8 ADC 转换应用举例

.include \"F2407REGS.H\" ;引用头部文件

.def _c_int0

;(1)建立中断向量表

.sect \".vectors\"

;定义主向量段

RSVECT B _c_int0 ;PM 0 复位向量 INT1 B GISR1 ;PM 2 中断优先级1 INT2 B PHANTOM ;PM 4 中断优先级2 INT3 B PHANTOM ;PM 6 中断优先级3 INT4 B PHANTOM ;PM 8 中断优先级4 INT5

B PHANTOM ;PM A 中断优先级5

1

4

5

6

7

8

171

INT6 B PHANTOM ;PM C 中断优先级6 9

RESERVED B PHANTOM ;PM E 模拟量输入中断(保留) 10

SW_INT8 B PHANTOM ;PM 10 用户定义软件中断 —

SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断 ;中断子向量入口定义pvecs

.sect \".pvecs\" ;定义子向量段

PVECTORS B PHANTOM ;保留向量地址偏移量 0000h

B PHANTOM ;保留向量地址偏移量 0001h

B PHANTOM ;保留向量地址偏移量 0002h

B PHANTOM ;保留向量地址偏移量 0003h

B ADCINT_ISR

;保留向量地址偏移量 0004h ADC中断

172

B PHANTOM ;保留向量地址偏移量 0005h

B PHANTOM ;保留向量地址偏移量 0041h

;(2)主程序:

.text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF

LDP #0E0H

SPLK

#81FEH,SCSR1

;CLKIN=6 M,CLKOUT=24 M 173

SPLK #0E8h,WDCR ;关看门狗

LDP #0

SPLK #0001h,IMR SPLK #0FFFFh,IFR CALL ADINIT CLRC INTM CALL AD WAIT: NOP

B WAIT

;(3)ADC初始化程序

ADINIT:

LDP

#225

;允许INT1中断

;清所有中断标志

;初始化ADC程序

;开总中断

;启动模数转换程序

;设置通用定时器 4

174

SPLK #0000H,T4CNT

SPLK #170CH,T4CON

SPLK #075H,T4PER

SPLK #0400H,GPTCONB

SPLK #0FFFFH,EVBIFRB

SPLK #0000H,EVBIMRB LDP #DP_PF2

SPLK #0010H,ADCTRL1 SPLK #8404H,ADCTRL2 SPLK #000FH,MAXCONV SPLK #3210H,CHSELSEQ1

SPLK #7654H,CHSELSEQ2

;设置ADC控制寄存器;16 通道

175

SPLK #0BA98H,CHSELSEQ3

SPLK #0FEDCH,CHSELSEQ4

LDP #DP_SARAM2 SPLK #ADRESULT,ADCOUNT

RET

;(4)启动模数转换程序

AD:

LDP #225

LACL T4CON

OR #40H SACL T4CON

RET

;指向0A00h~0A80h

;启动定时器4

176

;(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

177

LAR AR2,#RESULT0

MAR *,AR2

ADC1: LACC *+,10,AR1

SACH *

ADRK #32

MAR *,AR0

BANZ ADC1,*-,AR2

LDP #DP_PF2

LACL ADCTRL2

OR #4000H AND #0FFDFH SACL ADCTRL2

;复位 SEQ1

;清 INT FLAG SEQ1

178

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

179

GISR1_RET: ;中断返回出口

;恢复现场

CLRC INTM ;开总中断,因为一进中断就自动关闭了总中断

RET

;(6)假中断程序

PHANTOM

KICK_DOG RET

END

;复位看门狗

180

因篇幅问题不能全部显示,请点此查看更多更全内容