我用51去检测555够成的单稳态电路的脉冲宽度,
Tw=1.1RC,其中R=1.48M,C的变化范围是16P-200P
检测循环程序3微秒,我只需把1.1RC/3的值显示出来就可以了
仿真的时候C<156P的时候,不精确,但满足需要了,都还正常,可是一旦C>156p的时候就出错,这是为什么?
如何改进,精度尽量高一些?
谢谢
ORG 100H START: SETB P1.1 SETB P3.0 SETB P3.1 MOV R0,#00H CLR P1.1 ;使555由稳态转到暂稳态,P1.1触发555 SETB P1.1 ;等待555回到稳态 AA: INC R0 ;检测单稳态脉冲宽度,循环程序耗时3微妙 JB P1.5,AA ;P1.5读取脉冲 MOV A,R0 ;下面是把Tw/3的值送去显示 MOV B,#0AH ;转化为BCD码 DIV AB MOV 70H,A MOV 71H,B BB: MOV A,70H MOV DPTR,#TAB MOVC A,@A+DPTR CLR P3.0 MOV P2,A LCALL DELAY SETB P3.0 MOV A,71H MOVC A,@A+DPTR CLR P3.1 MOV P2,A LCALL DELAY SETB P3.1 SJMP START DELAY: MOV R7,#02H DL: MOV R6,#0FFH DJNZ R6,$ DJNZ R7,DL RET TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
|