51单片机定时器中断详解:经典定时器T0应用

需积分: 28 1 下载量 34 浏览量 更新于2024-08-17 收藏 2.06MB PPT 举报
"定时器中断-c51单片机关键内容分讲经典之定时器" 51系列单片机,如Atmel的AT89C51和AT89C52,内置了定时器/计数器功能,这对于许多嵌入式应用来说是至关重要的。在这些单片机中,通常有两个定时器/计数器,T0和T1,而C52系列额外提供了一个T2。这些定时器可以被编程为定时器模式或者计数器模式,根据系统时钟进行定时或对输入的外部信号进行计数。 定时器/计数器的工作方式可以通过设置TMOD寄存器来决定。TMOD寄存器包含M1和M0位,它们共同决定了定时器的工作模式,例如13位定时/计数器、16位定时/计数器、8位自动重置定时/计数器以及两个8位定时/计数器(仅适用于T0)。C/T位用于区分定时和计数模式,当C/T为1时,定时器工作在计数模式;为0时,则工作在定时模式。GATE位则控制定时/计数器是否受外部中断请求信号影响,通常设置为0,表示启动与外部中断无关。 TCON寄存器用于控制定时器的启动和溢出标志,其中TF0和TF1是定时器0和定时器1的溢出标志,TR0和TR1则是启动位,置1则启动定时器,置0则停止。 在中断服务程序中,定时器中断的处理方式如标题和描述所示,这里是一个关于定时器T0中断服务程序的例子。静态变量tt用来记录中断发生次数,每当达到10次中断,LED0会发光并保持一段时间,这个时间由变量scale决定。当scale等于tt时,LED0的状态会切换,如果scale为0,LED0会熄灭以消除可能的“鬼影”现象。中断处理完成后,需要清除溢出标志TF0,以便准备下一次中断。 在实际应用中,例如创建周期性的信号,如500μs的方波,可以使用定时器的自动重置功能。以方式2为例,设置TH0和TL0的初值,当TL0计数到256溢出后,其值会自动重置回初值,从而持续生成周期性信号。 在使用定时器/计数器时,一般需要以下步骤: 1. 选择工作方式:设置TMOD寄存器。 2. 设置初值:如TH0和TL0(TH1和TL1)。 3. 启用中断:设置全局中断允许位EA,并根据需要设置定时器中断允许位ET0或ET1。 4. 启动定时器:设置TR0或TR1。 通过以上步骤和中断服务程序的编写,开发者能够灵活地利用51系列单片机的定时器功能实现各种定时和计数任务。