单片机定时器精准定时_如何确保单片机精确定时控制有哪些编程方法详细说明...

本文介绍了MCS-51单片机在精确定时应用中,如何通过不同编程方法确保定时精度。文章以定时器T1为例,详细讲解了5种方法,包括通用方法、特定条件下的优化方法以及特定位置的定时方法,以减少中断响应延迟带来的误差,确保定时精度不超过1个机器周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

MCS-51单片机的中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个机器周期[1]。无论是哪一种原因引起的误差,在精确定时的应用场合,必须考虑它们的影响,以确保精确的定时控制。根据定时中断的不同应用情况,应选择不同的精确定时编程方法。

文中以定时器T1工作在定时方式1为例,晶振频率为12MHz。

b1c5de7419550f462040ea591c5c08ee.png

1方法1

在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下一次中断时,需多长时间,由此来重装载和启动定时器。例如定时周期为1ms,则通常定时器重装载值为-1000(0FC18H)。下面的程序在计算每个定时周期的精确重装载值时,考虑了由停止计数(CLRTR1)到重新启动计数(SETBTR1)之间的7个机器周期时间。程序中#LOW(-1000+7)和#HIGH(-1000+7)是汇编符号,分别表示-1000+7=0FC1FH这个立即数的低位字节(1FH)和高位字节(0FCH)。

。..。..

CLREA;禁止所有中断

CLRTR1;停止定时器T1

MOVA,#LOW(-1000+7);期望数的低位字节

ADDA,TL1;进行修正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值