C51单片机定时器中断服务程序解析

需积分: 0 2 下载量 171 浏览量 更新于2024-07-12 收藏 1.94MB PPT 举报
"这篇资料主要介绍了C51单片机中的定时器中断服务程序,特别是针对定时器1的配置和使用。通过实例展示了如何利用定时器1来实现特定功能,如50ms的定时,并结合中断进行LED的闪动控制。" 在51系列单片机中,定时器/计数器是重要的硬件资源,通常用于实现延时、脉冲计数等功能。在这个课件中,重点讨论的是C51单片机的定时器1 (Timer1)。C51系列单片机有两个定时器,即Timer0和Timer1,而C52系列则增加了Timer2。这些定时器都可以根据系统时钟工作在不同的模式下,也可以对外部信号进行计数。 定时器的工作方式是通过TMOD寄存器进行配置的。TMOD寄存器的M1和M0位用于定义定时器的工作模式,例如00表示13位定时/计数器,01表示16位定时/计数器,10表示8位自动重置定时/计数器,11表示两个8位定时器(仅适用于Timer0)。此外,C/T位用于区分定时模式和计数模式,GATE位则控制定时/计数器是否由外部中断请求启动。 在中断服务程序`time1_int(void) interrupt 3`中,可以看到定时器1在中断模式下的使用。当定时器1溢出(即计数值达到预设值)时,会触发中断。中断服务程序首先重置定时器1的初值,这里设置为`TH1=0x3c; TL1=0xb0;`以实现50ms的定时。接着,程序更新变量`i`,并在`i`达到20时改变LED的状态,然后将`i`复位,这样就实现了LED的周期性闪动。 为了启用定时器1的中断,还需要设置全局中断允许位EA以及定时器1的中断使能位ET1。启动定时器1的操作是通过设置TCON寄存器的TR1位,即`TR1=1`。中断标志TF1会在定时器1溢出时被置位,需要在中断服务程序中清除,否则会持续触发中断。 此外,课件还提到了方式2,即8位自动重置定时/计数器模式。在这种模式下,一旦计数器溢出,计数值会自动重置,并从预设值开始重新计数。这在需要精确控制计数周期的应用中非常有用。 C51单片机的定时器功能强大且灵活,可以适应多种应用场景。通过合理的配置和中断服务程序设计,可以实现各种复杂的定时和计数任务。