51单片机C51定时器实现LED200ms闪烁
需积分: 0 43 浏览量
更新于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单片机的定时功能至关重要。
830 浏览量
点击了解资源详情
168 浏览量
131 浏览量
2011-03-27 上传
428 浏览量
117 浏览量
473 浏览量
黄子衿
- 粉丝: 21
- 资源: 2万+
最新资源
- 2009年java最新面试题
- Graphical Models, Exponential Families, and Variational Inference
- 计算机外文 计算机专业
- C# 如何判断一个Byte数组中是否存在某些连续的数据).txt
- unix常用命令有助于日常工作的小贴士
- C# 的类型转换.doc
- 华为笔试面试指南有兴趣的可以好好看
- service 天气预报
- 城市生活垃圾逆向物流网络优化设计
- C#编码规范,共享参考
- Ext 的中文手册PDF
- A Multiresolution Image Segmentation Technique Based on Pyramidal Segmentation and Fuzzy Clustering
- 图书管理系统SQL数据库
- C#完全手册.pdf
- 工作流原理及实例说明
- java从基础到应用编程经验