"单片机应用技术-定时计数器"
在单片机应用中,定时计数器是一种非常重要的硬件资源,它允许设备执行时间相关的任务或对输入脉冲进行计数。本资料主要讲解了51单片机中的定时器/计数器(Timer/Counter)的结构、功能以及编程应用。
5.1定时/计数器的结构
51单片机有两个16位的定时计数器,即T0和T1,它们由两个8位的寄存器组成,如TH0和TL0构成T0,TH1和TL1构成T1。计数器在接收到计数脉冲时会递增,当达到最大值后(对于8位计数器是FFH,16位计数器是FFFFH),会溢出并重新从零开始计数,同时设置相应的溢出标志位,如TF0和TF1。
计数器有两种主要功能:定时和计数。在定时模式下,计数脉冲通常来源于机器周期,若晶振频率为12MHz,则机器周期为1us。在计数模式下,计数脉冲则来自于外部引脚。
TMOD和TCON寄存器在定时计数器的操作中起着关键作用。
TMOD(方式寄存器):
TMOD用于选择定时计数器的工作方式,可以设定为4种不同的工作模式,决定是定时还是计数,以及启动方式。例如,TMOD=0x61表示T0被配置为13位定时模式,由TR0软件启动;而T1未配置,保持默认状态。
TCON(控制寄存器):
TCON用于控制定时计数器的启动和溢出处理。TR0和TR1用于启动T0和T1,当其值为1时,定时器开始工作。TF0和TF1则是定时器溢出标志位,当定时计数器溢出时,这些标志位被置1,可以通过软件清0或中断处理。
编程应用举例:
1. 小练习1:设计秒表
使用T0作为秒表,设置为13位定时模式,通过TR0软件启动。首先设置TMOD=0x61,然后计算初始值(根据所需的秒数转换成机器周期数),写入TH0和TL0,最后通过TR0启动定时器。
2. 小练习2:制作计步器
利用T0作为计步器,16位计数模式,由外部信号TR1启动。TMOD配置为适当的计数模式,初始值设为0,然后启动TR1。
在实际应用中,程序通常会涉及以下步骤:
1. 写入TMOD,设置工作模式和启动方式。
2. 计算合适的初始值,并写入THx和TLx寄存器。
3. 启动定时器,如通过TR0或TR1。
在查询或中断方式下,溢出标志TF0和TF1的应用也很重要。在查询方式下,可以不断检查TF0的值来判断是否溢出,溢出后清0。在中断方式下,当溢出发生时,TF0会被自动置1,通过中断服务程序处理溢出事件,然后清0。
定时计数器在单片机应用中扮演着核心角色,通过灵活配置TMOD和TCON寄存器,可以实现各种复杂的定时和计数任务。理解和熟练掌握其工作原理和编程方法是单片机开发的基础。