关于用定时器产生方波的有关问题
关于用定时器产生方波的问题想从P1发出方波,周期为2s。我的代码Assembly codeorg 0000hljmp mainorg 000bhd
关于用定时器产生方波的问题
想从P1发出方波,周期为2s。
我的代码
Assembly codeorg 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位定时/计数器,那个就不需要你到中断里重新赋值,只需一次给定初值即可.