3.6.8 定时器/计数器的应用编程
1.应用电路
定时器/计数器的应用电路如图3.33所示。
图3.33中,P3.4和脉冲源相连,脉冲源向单片机的定时器/计数器0提供外部计数脉冲,每按两次开关W3,产生一个计数脉冲。
图3.33 定时器/计数器的应用电路
2.应用内容
1)设计及要求
设计如下。
(1)将定时器/计数器0设定为计数方式,每次计数到10后,在P1.0引脚上取反一次,观察发光二极管的状态变化。
(2)使用定时器中断的方法,在模式1下用定时器T0实现LED以30 ms为节拍的闪烁。
(3)单片机集成的定时器可以产生定时中断,利用定时器0和定时器1,编写程序在P1.0及P1.1引脚上输出方波信号,通过示波器观察现象并测量波形周期。
(4)可编程时钟输出:P1.0引脚与T2复用,除作为普通I/O引脚外,还有两个功能,即为定时器/计数器2输入外部时钟,输出占空比为50%的周期时钟。
要求:通过实验,学习单片机定时器的使用和编程,熟悉定时器中断处理程序的编程,掌握编写数据处理程序,掌握具体的单片机应用系统的软硬件设计方法。
2)解析
若为计数内部晶振驱动时钟,则它就是定时器;若为计数输入引脚的脉冲信号,则它就是计数器。
定时器和计数器都是加1计数的,定时器实际上也是以计数方式工作,只是它对固定频率的脉冲计数,由于脉冲周期固定,由计数值可以计算出时间。关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
3)参考程序
(1)用查询方式实现的程序流程图如图3.34所示。
图3.34 程序流程图(1)
参考程序如下。
(2)用中断方式实现的程序流程图如图3.35所示。
图3.35 程序流程图(2)
参考程序如下。
(3)本应用采用查询方式和中断方式实现。
用查询方式实现,参考程序如下。
用中断方式实现,参考程序如下。
(4)如果将T2配置为时钟发生器,那么必将C/T2#设置为0,将T2OE设置为1,并设置TR2为1以启动定时器。输出时钟的频率取决于晶振频率及捕捉寄存器的重载值,即
式中:n=2(6时钟模式)或n=4(12时钟模式),(RCAP2 H,RCAP2 L)为16位寄存器的初值(定时常数),寄存器RCAP2H和RCAP2L的值由软件预设。
晶振频率为11.0592 MHz,工作于12时钟模式下,输出频率的范围为42 Hz~2.76 MHz。参考程序如下。