打印

请问,这个脉冲宽度的检测哪出错了?

[复制链接]
1756|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
不亦心|  楼主 | 2009-5-28 12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用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

相关帖子

沙发
不亦心|  楼主 | 2009-5-28 12:34 | 只看该作者

补充

晶振用的是12MHZ

谢谢各位,给个解决方案

使用特权

评论回复
板凳
dengm| | 2009-5-28 16:34 | 只看该作者

信号接P3.2, 门控time0 才能在一定的主频下得到最高精度

使用特权

评论回复
地板
41dean| | 2009-5-29 16:37 | 只看该作者

如楼上所言

利用边沿检测

使用特权

评论回复
5
不亦心|  楼主 | 2009-5-30 09:53 | 只看该作者

谢过二位

非常感谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2993

主题

10032

帖子

212

粉丝