首页 > 装修问题 > 装饰材料 > 其他 > 单片机定时器程序如何实现?

单片机定时器程序如何实现?

浏览次数:452|时间:2024-04-30

最新回答

2024-04-30winonafirst1
用T2作为计数器了来计数外部脉冲了  P1.0作为I/O口用了以后T2计数是不行了,不过定时或是作为串口时钟还是可以的。  T2是一个16位自动重载的,像T0和T1的方式2一样,只不过它是16位重载,如果作为计数器或定时用,可以参照T0和T1的方式2的用法,不过寄存器是不一样的,你要看一下pdf资料。中断用的是5,就是interrupt  5

254

2024-04-30丨加小菲丨
你好,你好,很荣幸回答你的问题,定时器其实就是单片机的一个内部自身时钟的计数器,每一个周期计数器加1,所以使用定时器功能时候先要给定时器付初值,就是先写TH0TL0的值(如下),写完初值后就等着定时器功能的那个计数器记满了数后也就是到了65536后就溢出了,所以一次定时的过程就是65536-初值    之间的数    所代表的时钟周期,计数满了溢出要产生中断就要写一个中断服务子程序,子程序如下void    timer0()    interrrupt    X    中断服务子程序中还要给定时器计数器的TH    TL付初值    进行下一次的计数。
希望我的回答可以帮到你,谢谢。

55

2024-04-30已然晕菜
根据晶振频率,计算指令周期,设置定时器的分频,然后设置定时器的工作方式TMOD,最后设置初值TH0        TL0        比如用的X    HZ的晶振,stc的单片机有3种模式(X/12)x/6,还有单周期指令,选择12分频的,T=1/(X/12)就是一个指令周期        ,如果定时没有分频,(65536-Z(初值))*T就是定时的时间比如是12M的晶振那么        设置TMOD=0x01;16位定时器模式TH0=(65536-20000)/256;TL0=(65536-20000)%256;就是设置了20ms的定时.
希望我的回答可以帮助到您。

251