下面是前辈留下的汇编程序的一段,后面的注释是我理解加上的,小弟想把它改写成C的,对其中的一部分不理解,请高手指点,不胜感激!
MOV DPTR,#0000H
ADCStart: MOV 0D8H,#10H ;ADC控制字赋值,启动ADC转换
Wait: MOV A,0F5H ;ADC状态字读入累加器A
JB ACC.7 Wait ;判断ACC.7是否清0,为1表示ADC忙
MOV A,0D9H ;转换结束,ADC转换值低8位读入累加器
ADD A,46H ;???????
MOV 46H,A
MOV A,0DAH ;ADC转换值高8位读入累加器
ADDC A,45H ;???????
MOV 45H,A
MOV A,44H
ADDC A,#00H
MOV 44H,A
INC DPTR
MOV A,DPL ;是否是一个多次采样结果累加的循环?
JNZ ADCStart
* MOV A,46H
RLC A
MOV 46H,A
MOV A,45H
RLC A
MOV 45H,A
MOV A,44H
RLC A
MOV 44H,A
MOV A,46H
RLC A
MOV 46H,A
MOV A,45H
RLC A ;*号区间这部分指令对ADC采集数据做了什么处理?
MOV 45H,A
MOV A,44H
RLC A
MOV 44H,A
MOV A,45H
RLC A
MOV A,44H
RLC A
CLR ACC.7
MOV 40H,A
MOV A,45H
SETB ACC.7
MOV 41H,A
XRL A,40H
* MOV 42H,A
SETB 2FH.6
SETB 2FH.5
MOV SBUF,40H
MOV DPTR,#0000H
CLR A
MOV 44H,A
MOV 45H,A
MOV 46H,A
INC 48H
MOV A,48H
JNZ ADCStart
CPL P1.0
SJMP ADCStart
主要是*号区间这部分指令对ADC采集数据做了什么处理我理解不了。
小弟汇编语言只接触过一点点,遇到寄存器之间倒腾头都大了!