我们将编写一个使用 ADC 进行中断的代码。 不能将结果0的 ADC 输出移至 ant DMA location (我们将移至 DP100h 中的预定义变量)。
这是我们遇到问题的代码。
GISR2: ------------------------------------------------------- ISR 从此处开始。 向下查看有问题的部件
LDP #0h
SETC INTM;禁用所有中断
SETC SXM
SETC OVM
CLRC SXM
CLRC OVM
CLRC CnF;清除 Cnf 位
ldp #0e8h;将 dp 加载到事件管理器页面
SPLK #0FFFh、EVAIFRA;清除事件管理器中断
SETC XF;设置 XF 标志
ldp #0E1h;将数据页设置为 adc
SPLK #04000h、ADCTRL2;复位 ADC
SPLK #02000h、ADCTRL2;开始转换
CHK_EOS1:
LACC ADCTRL2; 等待 SEQ1忙位清零
和#0001000000000000b; BIT12被加载到 ST1的 TC 位中
BCND CHK_EOS1、NEQ ; 如果 Tc=1,则保持循环。
LACC RESULT0; 通道1的负载转换结果
; 从 Ch1缓冲寄存器到 ACC
CLRC SXM
NOP;启用累加器的逻辑移位。
RPT #5;重复以下指令6次
SFR
NOP
和#3FFh
NOP;向右移位(由于 ADC 为10位、因此需要6次)
LDP #100h
SACL ADC_OUT <<<<<< -------------------------------------- 预定义变量。 它不会根据 Result0进行更新、即使在 ADC 输入时也是如此
<<<<<<<< -------- (续) 正在更新 ISR 中的 Result0。
CLRC INTM;启用 中断
CLRC XF
可重置