定时器,中断,精度
发布网友
发布时间:2022-04-29 17:50
我来回答
共1个回答
热心网友
时间:2023-10-26 04:57
是第(2)种情况,一溢出就立马开始下一轮计数(不管初值设置好了没有)。
从TH0 =0x63; TL0 =0x18 两条指令知,两个寄存器预装值不相符,工作方式是0或1;
一次计数溢出, TF0自动置1,产生中断标志,TH0、TL0 自动清零,重新自动计数;
若CPU不响应中断(程序中无中断处理子程序),计时器从0计数至13位(方式0)或16位(方式1)最大值才产生下一次溢出;然后又清零、重新从零开始计数……
然而,绝大多数应用实例都有定时器中断处理子程序,子程序中有重新计数初值的指令,
会影响计数精度。影响计数精度有如下两个因数:
1.等待中断响应须3~6个机器周期,若还有其它中断源同时申请中断或T0中断未设置为最高优先级,定时器中断须等待更多个机器周期;
2.执行重装TH0、TL0初值须2个机器周期。
若定时器工作于方式2(自动重装计数初值),TL0计数溢出时由硬件自动将THO值装入THL,
硬件自动从TL0初值开始重新递增1计数,而不是如方式0方式1那样的溢出后未得中断响应期间,从零开始重新递增计数。
在方式0方式1中,为了提高计时精度,中断处理子程序可采取修正重装时间常数的措施,
以下是T0工作于方式1的修正重装时间常数中断处理子程序例子:
……
CLR EA
CLR TR0
MOV A,#1FH
ADD A,TL0
MOV TL0,A
ADDC A,TH0
MOV THO,A
SETB TR0
……追问 和我们老师说的一样都说是第二种情况,
但是,如果是第二种情况的话,那两句赋值语句不就不会影响精度吗?(记得老师当时说过,单片机的定时器是独立计数的,与你运行的其他语句无关,就好像没溢出时,单片机正在在运行主程序,此时定时器仍在计数) , 我也觉得是这样。
追答1. 我上面的解答已提到,等待中断及中断处理重新赋值,二个因素影响计时精度:
第一因数是等待中断响应经历几个机器周期,第二因数是执行重新赋值指令耗用2个机器周期。
2.请细读并理解我列举的修正重新计数值的中断处理子程序的用意。
因为在执行重新初值的时刻,TL0的实际值已从零开始自动计数递增至非零的某个值。
MOV A,#1FH (1FH 是初始化的初值低8位)
ADD A,TL0
这两个指令修正:将TL0设定的初值1FH,加上当时的TL0实时值,才是较精确的重装值。
修正后再执行 MOV TL0 ,A 装入修正后的计数初值。
之后3个指令是对TH0的初装值修正再重装,道理是类似的:
MOV A,#FCH ; (上面所举子程序漏了这条指令,现的补上,FCH 是初始化的初值高8位)
ADDC A,TH0
MOV THO,A
若等待中断响应是时间长,重新赋值时,该时TL0已自动计数至溢出、进位标志为1,
所以用带进位加法来修正重装值的高8位。
热心网友
时间:2023-10-26 04:57
是第(2)种情况,一溢出就立马开始下一轮计数(不管初值设置好了没有)。
从TH0 =0x63; TL0 =0x18 两条指令知,两个寄存器预装值不相符,工作方式是0或1;
一次计数溢出, TF0自动置1,产生中断标志,TH0、TL0 自动清零,重新自动计数;
若CPU不响应中断(程序中无中断处理子程序),计时器从0计数至13位(方式0)或16位(方式1)最大值才产生下一次溢出;然后又清零、重新从零开始计数……
然而,绝大多数应用实例都有定时器中断处理子程序,子程序中有重新计数初值的指令,
会影响计数精度。影响计数精度有如下两个因数:
1.等待中断响应须3~6个机器周期,若还有其它中断源同时申请中断或T0中断未设置为最高优先级,定时器中断须等待更多个机器周期;
2.执行重装TH0、TL0初值须2个机器周期。
若定时器工作于方式2(自动重装计数初值),TL0计数溢出时由硬件自动将THO值装入THL,
硬件自动从TL0初值开始重新递增1计数,而不是如方式0方式1那样的溢出后未得中断响应期间,从零开始重新递增计数。
在方式0方式1中,为了提高计时精度,中断处理子程序可采取修正重装时间常数的措施,
以下是T0工作于方式1的修正重装时间常数中断处理子程序例子:
……
CLR EA
CLR TR0
MOV A,#1FH
ADD A,TL0
MOV TL0,A
ADDC A,TH0
MOV THO,A
SETB TR0
……追问 和我们老师说的一样都说是第二种情况,
但是,如果是第二种情况的话,那两句赋值语句不就不会影响精度吗?(记得老师当时说过,单片机的定时器是独立计数的,与你运行的其他语句无关,就好像没溢出时,单片机正在在运行主程序,此时定时器仍在计数) , 我也觉得是这样。
追答1. 我上面的解答已提到,等待中断及中断处理重新赋值,二个因素影响计时精度:
第一因数是等待中断响应经历几个机器周期,第二因数是执行重新赋值指令耗用2个机器周期。
2.请细读并理解我列举的修正重新计数值的中断处理子程序的用意。
因为在执行重新初值的时刻,TL0的实际值已从零开始自动计数递增至非零的某个值。
MOV A,#1FH (1FH 是初始化的初值低8位)
ADD A,TL0
这两个指令修正:将TL0设定的初值1FH,加上当时的TL0实时值,才是较精确的重装值。
修正后再执行 MOV TL0 ,A 装入修正后的计数初值。
之后3个指令是对TH0的初装值修正再重装,道理是类似的:
MOV A,#FCH ; (上面所举子程序漏了这条指令,现的补上,FCH 是初始化的初值高8位)
ADDC A,TH0
MOV THO,A
若等待中断响应是时间长,重新赋值时,该时TL0已自动计数至溢出、进位标志为1,
所以用带进位加法来修正重装值的高8位。
热心网友
时间:2023-10-26 04:57
是第(2)种情况,一溢出就立马开始下一轮计数(不管初值设置好了没有)。
从TH0 =0x63; TL0 =0x18 两条指令知,两个寄存器预装值不相符,工作方式是0或1;
一次计数溢出, TF0自动置1,产生中断标志,TH0、TL0 自动清零,重新自动计数;
若CPU不响应中断(程序中无中断处理子程序),计时器从0计数至13位(方式0)或16位(方式1)最大值才产生下一次溢出;然后又清零、重新从零开始计数……
然而,绝大多数应用实例都有定时器中断处理子程序,子程序中有重新计数初值的指令,
会影响计数精度。影响计数精度有如下两个因数:
1.等待中断响应须3~6个机器周期,若还有其它中断源同时申请中断或T0中断未设置为最高优先级,定时器中断须等待更多个机器周期;
2.执行重装TH0、TL0初值须2个机器周期。
若定时器工作于方式2(自动重装计数初值),TL0计数溢出时由硬件自动将THO值装入THL,
硬件自动从TL0初值开始重新递增1计数,而不是如方式0方式1那样的溢出后未得中断响应期间,从零开始重新递增计数。
在方式0方式1中,为了提高计时精度,中断处理子程序可采取修正重装时间常数的措施,
以下是T0工作于方式1的修正重装时间常数中断处理子程序例子:
……
CLR EA
CLR TR0
MOV A,#1FH
ADD A,TL0
MOV TL0,A
ADDC A,TH0
MOV THO,A
SETB TR0
……追问 和我们老师说的一样都说是第二种情况,
但是,如果是第二种情况的话,那两句赋值语句不就不会影响精度吗?(记得老师当时说过,单片机的定时器是独立计数的,与你运行的其他语句无关,就好像没溢出时,单片机正在在运行主程序,此时定时器仍在计数) , 我也觉得是这样。
追答1. 我上面的解答已提到,等待中断及中断处理重新赋值,二个因素影响计时精度:
第一因数是等待中断响应经历几个机器周期,第二因数是执行重新赋值指令耗用2个机器周期。
2.请细读并理解我列举的修正重新计数值的中断处理子程序的用意。
因为在执行重新初值的时刻,TL0的实际值已从零开始自动计数递增至非零的某个值。
MOV A,#1FH (1FH 是初始化的初值低8位)
ADD A,TL0
这两个指令修正:将TL0设定的初值1FH,加上当时的TL0实时值,才是较精确的重装值。
修正后再执行 MOV TL0 ,A 装入修正后的计数初值。
之后3个指令是对TH0的初装值修正再重装,道理是类似的:
MOV A,#FCH ; (上面所举子程序漏了这条指令,现的补上,FCH 是初始化的初值高8位)
ADDC A,TH0
MOV THO,A
若等待中断响应是时间长,重新赋值时,该时TL0已自动计数至溢出、进位标志为1,
所以用带进位加法来修正重装值的高8位。
PLC定时器精度和什么因素有关系?在一段程序中定时器用的越多精度越差...
不同的PLC定时器的数量不一定。精度基准基本上就是毫秒或者10毫秒或者0.1秒!在循环程序中的计时器是没有问题的,如果是在中断中的计时器就会因为中断程序是周期调用的,所以在中断程序中的计时器会比循环程序里边的时间略长!例如西门子S7300 10秒同样计时器,在OB1里边调用的话基本上10秒后会接通,...
定时器和中断定时的区别是什么?
区别就是用单片机软件定时,CPU循环执行一小段延时程序,浪费CPU的精力,用定时器定时,CPU就可以干别的。如果是程序延时的话,时间消耗在(延时程序+剩下的代码);计时器中断则相当于把延时程序交给定时器,此时CPU可以干别的事情,提高了效率。就类似于电脑打游戏时把图形处理任务交给显卡,CPU的压力就小...
单片机定时器精度
单片机定时器精度,只要在进入中断服务程序的第一时间,重装载定时值,后面的语句不会影响 定时器中断的 定时时间,除非定时器中断服务程序运行时间接近或者超过,定时时间,一般设计程序,能不在中断服务程序中处理的 事 尽量不要在中断服务程序中
plc采用定时中断定时和普通定时器定时有什么区别
主要区别在于:普通定时器因为是异步更新方式,因此受到扫描周期的影响,在长时间定时应用中存在较大误差,而定时中断不受扫描周期影响,因此长时间定时可以获得较好的定时精度,而定时中断的弊端在于,当定时中断间隔较短时,应考虑定时中断内程序可能运行超过定时中断间隔而造成程序无法得到执行。
采用定时中断定时和普通定时器定时有什么区别
主要区别在于:普通定时器因为是异步更新方式,因此受到扫描周期的影响,在长时间定时应用中存在较大误差,而定时中断不受扫描周期影响,因此长时间定时可以获得较好的定时精度,而定时中断的弊端在于,当定时中断间隔较短时,应考虑定时中断内程序可能运行超过定时中断间隔而造成程序无法得到执行。
为什么PLC200里100ms定时器多次使用时会失准?
plc里面的定时器其实的定时中断。中断里面的代码量会影响定时器精度,所以一般定时器里只放极少的代码,这样可以忽略不计。plc中同一个定时器多次调用,相当于中断中放了大量代码,会影响精度
定时器精度取决于什么
定时器精度取决于硬件设计,时钟源,噪声和干扰等。1、硬件设计:定时器的硬件设计决定了基本精度,一些定时器使用石英晶体振荡器来提供稳定的计时基准,而其他定时器使用其他类型的振荡器或电路。2、时钟源:定时器的时钟源也会影响其精度,时钟源不稳定或频率不准确,定时器的计时就会受到影响。3、噪声...
单片机中关于中断的问题
TF又由硬件自动清0.。并且不管定时器溢不溢出,它都会不断计数,因此在响应完中断程序时,需要对定时器重新装初值。定时器的计数脉冲有二个来源,一个是通过INT0或INT1引脚输入的外部脉冲源;另一个是系统时钟振荡器的十二分频后送来的即一个机器周期。因此不会影响计时器的精度。。。
定时器有几种?
1、 接通延时型定时器:接通延时型定时器是各种PLC中最常见最基本的定时器,这种定时器在 SIEMENS的PLC中,称为SD型定时器。2、 断开延时型定时器:这种定时器是当输入条件00000为ON时无延时作用,只有在输入条件00000为OFF时产生延时作用。在SIEMENS的PLC中,称为SF型定时器。3、保持型接通延时定时器...
定时器的定时步长和定时精度是什么意思
定时器步长是选择时间长短的计数,精度是定时器时间误差。