当前位置: 代码迷 >> 单片机 >> 关于用定时器产生方波的有关问题
  详细解决方案

关于用定时器产生方波的有关问题

热度:521   发布时间:2016-04-28 16:35:21.0
关于用定时器产生方波的问题
想从P1发出方波,周期为2s。
我的代码
Assembly code
org 0000hljmp mainorg 000bhdjnz r2,aamov a,p1cpl amov p1,aaa:retiorg 0050hmain:mov r2,#10mov p1,#0mov a,#0setb easetb et0setb tr0mov tmod,#01hmov th0,#3chmov tl0,#2bhsjmp $end

但用Proteus仿真时方波的周期远远大于2s,求高手指点

------解决方案--------------------
如果你的初始值算的都正确的话,这里有一个问题就是,djnz r2,aa,R2自减了10次以后,就会变为0FFh,你没有恢复初值,我想256/10=25.6,方波的长度应该是你期望的25.6倍,应该是远远大于2秒,你应当在中断里加个判断,R2=0时,重新赋值
------解决方案--------------------
还有一个问题,你使用的是方式1工作模式,是十六位定时计数器,在你中断完了之后,应当重新给定时计数器赋值,要不然 就跟那个DJNZ R2,aa 一样,初值就从0开始了,同样也是大于2秒,你应当在中断里加上
mov th0,#3ch
mov tl0,#2bh
这样才能正确

若使用工作方式2就是自动填充初值的8位定时/计数器,那个就不需要你到中断里重新赋值,只需一次给定初值即可.
  相关解决方案