使用AD转换器AD7708碰到的问题!!!
使用AD7708与MSC89C51来测试电阻值的大小. 可是读AD数据不成功,汇编程序代码如下: ;*********************************************************** ;初始化ADC转换器AD7708, ;AD7708的数据顺序是高位在前,低位在后, ;MSC89C51数据是低位在前,高位在后. ;MSC89C51使用串口工作方式0与AD7708通讯 ;*********************************************************** TESTR: MOV SCON, #00H ;设置串口的工作方式为0 MOV PCON, #00H MOV A, #07H ;设置comunication寄存器07H,将对IOCON寄存器进行设置 LCALL XCHML LCALL TRSER MOV A, #00H ;设置IOCON寄存器,写入00 LCALL XCHML LCALL TRSER MOV A, #03H ;设置comunication寄存器03H,将对filter寄存器进行设置 LCALL XCHML LCALL TRSER MOV A, #45H ;设置filter寄存器 LCALL XCHML LCALL TRSER MOV A, #02H ;设comunication寄存器02H,将对ADCCON寄存器进行设置 LCALL XCHML LCALL TRSER MOV A, #0FH ;设置ADCCON寄存器 LCALL XCHML LCALL TRSER MOV A, #01H ;设置comunication寄存器02H,将对MODE寄存器进行设置 LCALL XCHML LCALL TRSER MOV A, #03H ;设置MODE寄存器 LCALL XCHML LCALL TRSER
;*********************************************************** ;无需校正ADC
;*********************************************************** ;多通道的读操作 READ: MOV A, #01H ;设置comunication寄存器01H,将对MODE寄存器进行设置 LCALL XCHML LCALL TRSER MOV A, #03H ;设置MODE寄存器为连续转换模式 LCALL XCHML LCALL TRSER
MOV R2, #04H MOV R3, #0F0H MOV R0, #30H
READ4: MOV A, #02H ;设置comunication寄存器02H,将对ADCCON寄存器进行设置 LCALL XCHML LCALL TRSER MOV A, R3 SWAP A ;设置ADCCON寄存器选择通道N和它的工作范围。 LCALL XCHML LCALL TRSER JB AD_RDY, $ MOV A, #44H ;设置comunication寄存器44H,将对DATA寄存器进行读操作。 LCALL XCHML LCALL TRSER
LCALL RESER ;读串口数据 LCALL XCHML ;交换高低位数据 MOV @R0, A INC R0 INC R3 DJNZ R2, READ4 ;将四个通道数据全部读完毕后,存储到RAM中。
;*********************************************************** ;串口发送数据子程序 TRSER: MOV SBUF, A TRSER1: JNB TI, TRSER1 ;输出完否 CLR TI ;完了,清TI标志,以备下次发送 RET ;*********************************************************** ;串口接收数据子程序 RESER: SETB REN RESER1: JNB RI, RESER1 ;接受完否 MOV A, SBUF CLR RI ;完了,清RI标志,以备下次接受 RET ;*********************************************************** ;高低位交换子程序 XCHML: MOV R5, #08H MOV R7, A MOV R6, #00H CLR C XCHML1: MOV A, R7 RRC A MOV R7, A MOV A, R6 RLC A MOV R6, A DJNZ R5, XCHML1 RET
请帮忙说明到底是哪里不对?
|