- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51单片计4种定时器应用场景详解
51单片机的 定时器有两个,分别是定时器0和定时器1。
定时器0:定时器0是一个8位定时器,它可以用作定时器或计数器。在定时器模式下,它可以生成中断,定时范围为0255。在计数器模式下,它可以计数外部脉冲,计数器范围为065535。
定时器1:定时器1是一个16位定时器,也可以用作定时器或计数器。在定时器模式下,它可以生成中断,定时范围为065535。在计数器模式下,它可以计数外部脉冲,计数器范围为065535。
在使用定时器时,需要先进行定时器的初始化设置。具体步骤如下:
1.选择定时器工作模式(定时器或计数器)。
2.设置计数值或定时器的初值。
3.打开定时器中断(如果需要中断)。
4.打开定时器开关。
// 定时器0初始化函数
void timer0_init()
{
TMOD = 0xF0; // 设置为定时器模式,使用模式1
TH0 = 0xB1; // 设置定时器初值为0xB1
TL0 = 0xE0; // 设置定时器初值为0xE0
ET0 = 1; // 打开定时器中断
TR0 = 1; // 打开定时器开关
}
代码将定时器0设置为10ms中断一次
#include
void timer0_init()
{
TMOD = 0xF0; // 设置为定时器模式,使用模式1
TH0 = 0x3C; // 设置定时器初值为0x3C
TL0 = 0xAF; // 设置定时器初值为0xAF
ET0 = 1; // 打开定时器中断
TR0 = 1; // 打开定时器开关
}
void timer0_isr() interrupt 1
{
TH0 = 0x3C; // 重新设置定时器初值
TL0 = 0xAF;
// 处理中断事件
}
void main()
{
timer0_init(); // 初始化定时器0
EA = 1; // 打开总中断开关
while(1);
}
使用定时器0来产生一个1秒钟的中断
51单片机定时器有以下四种模式:
模式0(13位定时器):模式0是一个13位定时器,可以用作定时器或计数器。在定时器模式下,它可以生成中断,定时范围为08191。在计数器模式下,它可以计数外部脉冲,计数器范围为08191。这种模式的特点是定时器/计数器的溢出标志位 TF0只有在定时器/计数器计满13位时才会置位。
模式1(16位定时器):模式1是一个16位定时器,也可以用作定时器或计数器。在定时器模式下,它可以生成中断,定时范围为065535。在计数器模式下,它可以计数外部脉冲,计数器范围为065535。这种模式的特点是定时器/计数器的溢出标志位TF1只有在定时器/计数器计满16位时才会置位。
模式2(8位自动重载定时器):模式2是一个8位自动重载定时器,只能用作定时器。在定时器模式下,它可以生成中断,定时范围为0~255。这种模式的特点是定时器的溢出标志位TF0会在定时器计满8位时置位,并且自动将定时器初值装载到计数器中。
模式3(16位自动重载定时器):模式3是一个16位自动重载定时器,只能用作定时器。在定时器模式下,它可以生成中断,定时范围为0~65535。这种模式的特点是定时器的溢出标志位TF1会在定时器计满16位时置位,并且自动将定时器初值装载到计数器中。
自动重载定时器是一种定时器模式,其特点是在定时器溢出后自动重新加载初值,从而实现循环定时的功能。自动重载定时器的好处在于可以避免手动重新设置定时器初值的繁琐操作,并且可以保证定时器的稳定性和精度。
在自动重载定时器模式下,当定时器计满计数器的位数(如8位或16位)后,会自动将定时器的初值重新装载到计数器中,从而实现循环定时的功能。在定时器工作期间,我们只需要通过设置定时器初值和选择定时器模式来控制定时器的行为,而不需要手动干预定时器计数器的值。
定时器在工作时需要设置一个初始值,用来指定定时器的计数范围和定时时长。在定时器开始工作时,定时器从这个初始值开始计数,直到计数值达到设定的上限,定时器就会触发中断或产生其他相关的操作。
通过设置定时器的初始值,可以灵活地控制定时器的定时时长,使定时器可以适应不同的应用场景和需求。例如,在一个需要定期进行数据采集的应用中,我们可以根据采集周期来设置定时器的初始值,以便精确地控制采集时间。
您可能关注的文档
最近下载
- 四川省成都七中育才学校七年级(上)期末数学试卷.docx
- 《旅游职业礼仪》课件——表情礼仪.pptx VIP
- 智慧康养服务平台方案.pptx VIP
- 学堂在线 学堂云 雨课堂 英文科技论文写作与学术报告 章节测试答案.docx VIP
- 电大一网一《网络系统管理与维护》形考任务3(预备知识:第4章;分值:15分).docx
- (二模)淮北市和淮南市2025届高三第二次质量检测化学试题(含答案).pdf
- (二模)衢州、丽水、湖州2025年4月三地市高三教学质量检测 化学试卷(含答案).pdf
- 生成式人工智能应用职业技能等级标准.pdf
- 企业税务合规管理框架、案例、主要税种合规管理重点、小微企业的税务合规管理.docx VIP
- 重庆市巴蜀中学校2023-2024学年七年级下学期期末语文试题(含答案).pdf VIP
文档评论(0)