专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 单片机

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

发布时间:2010-06-14 16:01:24 文章来源:www.iduyao.cn 采编人员:星星草
关于用定时器产生方波的问题
想从P1发出方波,周期为2s。
我的代码
Assembly code

org 0000h
ljmp main
org 000bh
djnz r2,aa
mov a,p1
cpl a
mov p1,a
aa:reti
org 0050h
main:
mov r2,#10
mov p1,#0
mov a,#0
setb ea
setb et0
setb tr0
mov tmod,#01h
mov th0,#3ch
mov tl0,#2bh
sjmp $
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位定时/计数器,那个就不需要你到中断里重新赋值,只需一次给定初值即可.
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: