GATE0=1,TR0=1则当INT0=1时开始计时
那么如何得知计时结束?
除了不停的检查INT0脚的电位,还有其他的办法吗?
.
.
.
int0中断服务程序:
setb tr0 ;开始计时
jnb $ ;等待脉冲由低电平变高
clr tr0 ;关定时器0
mov 20h,tl0
mov 21h,th0
mov tl0,#0 ;清零定时器0,为下次测试做准备
mov th0,#0
reti ;中断返回
此时20h和21h中已经分别装有这个正脉冲(反相后为对应负脉冲)的低八位和高八位计时值,按照你的时钟周期可以计算出脉冲宽度。为保证测量正确进行,进入int0中断服务程序后一定要关闭所有中断。
mov 20h,tl0
mov 21h,th0
mov 20h,#0
mov 21h,#0
reti
结果与我上一贴一样,但精度稍高。