我现在用AD7705测量一个直流电压,结果只有15位精度,最后一位读出来<br />总是1,而且结果很稳定,这样做后期数字滤波都没用,我找了很久都找不到原因。以下是我的设置和读AD7705子程序:<br /> MOV A,#00000000B;20HZ的转换频率,CLOCK2.4576M<br /> LCALL Write7705<br /> MOV A,#11H ;选择设置寄存器<br /> LCALL Write7705<br /> MOV A,#01000100B ;自校准模式,增益为1,单极性输入,内部缓冲器用上,滤波器打开<br /> LCALL Write7705<br /><br />R77051: <br /> NOP<br /> NOP<br /> NOP<br /> CLR SCLK<br /> NOP<br /> NOP<br /> NOP<br /> NOP<br /> SETB SCLK<br /> NOP<br /> NOP<br /> NOP<br /> MOV C,DOUT<br /> RLC A<br /> DJNZ R7,R77051<br /> MOV R0,A ;保存高字节<br /> MOV R7,#8<br />R77052:<br /> NOP<br /> NOP<br /> NOP<br /> CLR SCLK<br /> NOP<br /> NOP<br /> NOP<br /> NOP<br /> SETB SCLK<br /> NOP<br /> NOP<br /> NOP<br /> MOV C,DOUT<br /> RLC A<br /> DJNZ R7,R77052<br /> MOV R1,A ;保存低字节<br />READ_V_OUT:<br /> NOP<br /> NOP<br /> RET <br /><br /> |
|