小弟最近在利用ADUC812上的12位AD做连续的数据采集,采用单步采样每隔2ms采集一次.其基准电压为2.5V,一个LSB约为0.6mv.也就是2.5V/4096=0.6mv,4096就是2的12次方.当我输入的模拟电压小于150mv也就是最多用12位中的8位表达时,单片机的DA输出正常没有信号跳变.但当输入的模拟电压大于150mv时,也就是用8为数据无法表达得采用12为数据表达时,此时的DA输出虽然能正常工作,但是输出的信号总有很多小的信号跳变.请问各位高手,这样的DA输出情况正常吗? 我的数据采集程序和DA输出程序如下:各位高手请指点.如果不是程序的问题,硬件方面会有什么问题吗? $MOD812 CHAN EQU 00 CSEG ORG 0000H LJMP START ORG 0033H ;ADC转化结束 LJMP INT ORG 0080H START:MOV ADCCON1,#70H ; 设置控制 MOV ADCCON2,#CHAN ; 选择0通道 MOV DACCON,#2DH SETB EA SETB EADC ; 打开ADC中断 SETB ES AGAIN:CALL DELAY SETB SCONV LJMP AGAIN DELAY:MOV R7,#4 DLY1:MOV R6,#229 DJNZ R6,$ DJNZ R7,DLY1 RET ORG 0200H INT:MOV R2,ADCDATAL ; MOV R3,ADCDATAH MOV DAC0L,R2 MOV DAC0H,R3 RETI END |