单片机交流
直播中

王鑫

7年用户 1169经验值
私信 关注
[问答]

如何对定时/计数器进行编程?

如何对定时/计数器进行编程?
计算如何用定时器定时时间?

回帖(1)

李昕一

2021-10-15 17:14:15
定时/计数器的编程


  1.根据要求选择方式,确定方式控制字,写入TMOD寄存器,配置好工作模式。

  2.根据要求计算定时/计数器的计数值,在求得计数初值,写入初始化寄存器 。

  3.根据需求,开放定时/计数器中断选项

  4.设置 TCON,通过 TR0 置 1 来让定时器开始计数。

  5.等待定时时间到,如果查询处理编写查询程序判断溢出标志,溢出标志等于1,如果中断方式处理,编写中断服务程序。

计算如何用定时器定时时间

我们的晶振(系统时钟)是 11.0592M,时钟周期就是 1/11059200,机器周期是 12/11059200,假如要定时 20ms,就是 0.02 秒,要经过x 个机器周期得到 0.02 秒,我们来算一下x*12/11059200=0.02,得到 x= 18432。16 位定时器的溢出值是 65536(因 65535 再加 1 才是溢出),于是我们就可以这样操作,先给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536,也就是溢出,溢出后可以通过检测 TF0 的值得知,就刚好是 0.02 秒。那么初值 y = 65536 - 18432 = 47104,转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。
使用16位定时/计数器



  • 定时方式









  • 计数方式










实例1 设单片机的fosc=12MHz,采用T1定时方式1在P2.0脚上输出周期为2ms的方波。




































实例2 采用T0定时方式2在P2.0口输出周期为0.5ms的方波(设fosc=12MHz)

方式2,采用8位计数器,TLx。可自动重装载计数初值(TLx溢出后, THx→TLx);没有装载计数初值的延误,方式2定时精度相对较高。







举报

更多回帖

发帖
×
20
完善资料,
赚取积分