51单片机C51定时器实现LED200ms闪烁

需积分: 0 2 下载量 54 浏览量 更新于2024-07-12 收藏 1.94MB PPT 举报
"这篇资料是关于使用C51单片机通过定时器让LED以200毫秒间隔闪烁的方法。教程中展示了如何利用定时器T0实现这一功能,并介绍了51系列单片机的定时器/计数器特性、工作方式以及相关寄存器的配置。" 本文主要涉及的知识点包括: 1. **C51单片机定时器**: - C51系列单片机具有两个定时器/计数器(T0和T1),而C52系列有三个(T0,T1和T2)。 - 它们可以作为定时器使用,根据系统时钟定时,或者作为计数器,对外部输入信号进行计数。 - 每个定时器有多种工作模式可供选择。 2. **定时器/计数器工作方式**: - 方式0:13位定时/计数器。 - 方式1:16位定时/计数器。 - 方式2:8位自动重置定时/计数器(仅T0支持)。 - 方式3:两个8位定时/计数器(仅T0支持)。 3. **TMOD寄存器**: - TMOD寄存器用于设置定时器的工作方式。其中M1和M0位决定工作模式,C/T位区分计数和定时模式,GATE位则控制外部中断对定时器启动的影响。 4. **定时器/计数器控制寄存器TCON**: - TCON中的TR0和TR1用于启动或停止定时器0和定时器1,TF0和TF1是对应的溢出标志位。 5. **定时器中断**: - 示例代码中使用了中断方式处理定时器T0,当计数达到预设值时,会产生中断,然后在中断服务函数中切换LED的状态。 6. **定时器初值计算**: - 以示例代码为例,设置TH0和TL0的初值为0xd8和0xf0,以产生10ms的定时周期。这是因为0xd8f0等于55536,在12MHz的晶振下,16位定时器可以计数到65536,从而在55536次后溢出,即10ms。 7. **中断服务程序**: - 在中断服务函数`time0_int`中,当定时器T0溢出时,恢复计数初值并检查计数次数(i),若达到20次(200ms),则翻转LED0的状态并重置计数器。 8. **程序流程**: - 首先设置TMOD为方式1,然后设置初值,使能全局中断和定时器T0中断,最后启动定时器T0。当定时器T0中断触发时,LED0会以200ms的间隔闪烁。 以上就是关于C51单片机使用定时器T0实现LED闪烁的详细解释,包括定时器的配置、工作模式选择、中断处理以及中断服务函数的编写。这些知识对于理解和应用C51单片机的定时功能至关重要。