单片机读取定时器的值

作者&投稿:弘纪 (若有异议请与网页底部的电邮联系)
怎么合理读取51单片机的16位定时器的计数值?~

我认为最好的就是先停止了计数器再读数,毕竟读取也需要时间。
停止的计数器,在下次边测量时再启动,虽然不能保证连续测量,但是肯定的能保证测量精度。

你可以用T2的捕捉功能,另外,你获取时间值没有问题,你的问题可能在其他地方,由于不知道你的故障现象,你可以检查定时器是否启动,中断是否被触发,寄存器设置是否正确,中断是否允许。
第二个问题,你理解完全正确。

读取定时器的值,这种方法不可取。
还是用中断方式,比较及时。

T0定时方式0,内容是两个字节(13位数)。
定时的时候,以机器周期为单位,不停的变化。
读出低字节,高字节可能同时就变了,再读出高字节,就可能不是刚才的高字节了。
先后读出的两个字节,难说是同一个数据的高低字节。

另外,当读出后、再经过判断、再进行处理,时间,已经过去很多了。

再另外:T0Temp = TH0 * 0x100+TL0;
应该是:T0Temp = TH0 * 32 + TL0;

void Timer0_Init()
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x00; //设置定时初值
TF0 = 0; //清除TF0标志
EA=0;
ET0=0;
TR0 = 1; //定时器0关闭
}
EA=ET0=0,你计时、中断个毛啊


STM8 如何读出定时器中的值?
读取寄存器TIMx_CNTRH和TIMx_CNTRL,其中x用数字代替。注意:读取定时器1的时候,一定要先读高8位再读低8位,因为读取高8位的同时,低8位会自动拍快照,这时读取的低8位不会出现重大误差。读取其他定时器时,先读高位,然后读低位,然后再次读高位。如果两次高位不一样(且谁高谁低遵循计数方向)...

单片机读取定时器的值
读取定时器的值,这种方法不可取。还是用中断方式,比较及时。T0定时方式0,内容是两个字节(13位数)。定时的时候,以机器周期为单位,不停的变化。读出低字节,高字节可能同时就变了,再读出高字节,就可能不是刚才的高字节了。先后读出的两个字节,难说是同一个数据的高低字节。另外,当读出后、再...

单片机如何读取定时器的时间
1、初始化定时器并设置计数器的溢出值或比较值。2、启动定时器开始计时。3、在需要读取时间的地方,读取计数器的值,并根据定时器的工作模式进行计算,将计数器的值转化为实际的时间。

欧姆龙PLC编程如何做到随机数,我想选用CP1E,CP1L或者CP1H小型PLC,我想做...
我做过一个排列3的程序 呵呵 这几个PLC都可以的 但是如果要反应非常灵敏的话 还是要选择另外的.

三菱机PLC定时器的当前值用什么指令可以用到 好像就可以用到他的状态...
把定时器的值传送到D里MOV T0 D1。要做交通灯还可以用比较指令,

单片机可以直接读取计数器TH0、TL0的值吗?
单片机当然可以直接读取计数器TH0、TL0的值啦。条件是定时器T0正在定时或计数状态,就是TR0=1并赋初值后,开始定时了,才能读出TH0、TL0的值,否则读出的全为0。要读出的值给变量,要求先要定义这三个变量才行的 unsigned char AA,BB;unsigned int num;如果是在某个子函数中读,可定义成...

plc触摸屏延时启动怎么显示时间呢
在HMI软件中,将读取的定时器时间变量的值显示在创建的文本框中。通过以上步骤,就可以在触摸屏上实现PLC定时器时间的显示。需要注意的是,具体的实现方式可能会因不同品牌、型号的PLC和触摸屏而有所不同,需要根据具体硬件设备和软件使用手册进行操作。如果我的解答对您有所帮助,还请给个赞(在左下角...

昆仑通态触摸屏如何读取三菱plc定时器
6、在数据解析中输入定时器的地址和读取方式,并设置定时器的类型和初始值。7、在昆仑通态触摸屏中创建一个按钮或触发器,用于触发读取定时器的操作。8、在按钮或触发器的动作中,编写读取定时器的代码,并使用三菱PLC提供的通信协议和相关控件读取定时器的值。9、将读取的定时器值进行处理和显示。

触摸屏显示s71200定时器的值
2、在S71200的程序中,创建一个数据块,用于存储定时器的值。可以使用一个DWord类型的变量来存储。3、在S71200的程序中,编写逻辑代码,将定时器的当前值写入数据块中。可以使用SFC14或SFC15指令来获取定时器的当前值。将获取的值写入数据块中。4、在触摸屏的逻辑代码中,读取数据块中的定时器值,并...

Mcgs tpc怎么读取西门子plc的定时器时间为秒?
定时器为秒的话,在设置中调整

田家庵区15122352374: 在编单片机C语言的时候,怎么取出定时器中的数 -
脂芝瑙瑞: 用C语言编程,一般不涉及“位运算”的问题.unsigned int i; //它是16位数.i = TH0 * 256 + TL0; 即可.

田家庵区15122352374: 怎么取单片机计数器的值 -
脂芝瑙瑞: 一楼的办法对于一般计数器不可行,因为中断的时候,计数器已经溢出了.楼主希望的这个结果有两种办法可以实现:1、门空位,GATE,也就是TMOD中的gate,如果这一位是1,也就是使定时器除了受本身TRX控制外,还受外部中断的控制,如果外部中断为低电平,定时器就不能运行.2、使用带有捕获功能的定时器.像AT89S52这样的带有T2定时器的单片机可以做到,也就是说,当外部来信号引发中断后,T2可以停止计时,此时可以读出计数值.两种方法比较一下,第一种可以在一般单片机上运行,只是要浪费一个外部中断资源.第二个比较方便,省资源,就是单片机要稍微用的好一些.PS:有捕获功能的单片机很多.

田家庵区15122352374: 52单片机怎么读取定时器的时间 -
脂芝瑙瑞: 你可以用T2的捕捉功能,另外,你获取时间值没有问题,你的问题可能在其他地方,由于不知道你的故障现象,你可以检查定时器是否启动,中断是否被触发,寄存器设置是否正确,中断是否允许.第二个问题,你理解完全正确.

田家庵区15122352374: 怎样提取51单片机定时器某一个时刻的TH1和TL0的值,c语言…… -
脂芝瑙瑞: 直接读取就可以,如a=TH1

田家庵区15122352374: 在AT89C52单片机运行过程中如何读取定时器2的16位计数值 -
脂芝瑙瑞: 靠CPU来读取的,也就是在中断程序中读的,其实中断程序也是CPU执行的,定时器只是计数

田家庵区15122352374: 怎么合理读取51单片机的16位定时器的计数值?
脂芝瑙瑞: 我认为最好的就是先停止了计数器再读数,毕竟读取也需要时间.停止的计数器,在下次边测量时再启动,虽然不能保证连续测量,但是肯定的能保证测量精度.

田家庵区15122352374: 单片机定时器数值用c语言可以直接读吗 -
脂芝瑙瑞: 肯定可以直接读取啊,并且无符号整型也不会溢出,TH0和TL0都是8位的寄存器,他们组合的最大值也就是0xff

田家庵区15122352374: 请问单片机AT89S52的定时计数器TH1,TH0的值可以往外读吗? -
脂芝瑙瑞: 当然是可以的 不过读定时器的数值需要注意溢出问题 比如读TH0的时候,TL0=255的,那么读TL0的时候TL0已经变为0了 所以就会有一个256的误差 解决的办法就是再一次读TH0,如果两次TH0相等则表示没有读错,如果不相等则重新读一下TL0 ^_^

田家庵区15122352374: 单片机中 time =TH1*256+TL1; //取出定时器的值 这个式子什么意思,怎么计算的,急!!!!! -
脂芝瑙瑞: time是16位的吧 TH1*256 就是说把TH1中的值左移8位 变成了高八位 然后第八位就可以空出来了 再加上TL1 就等于十六位的数 比如:TH1=0101 0101 TL1=1010 1010TH1*256=0101 0101 0000 0000 TH1*256+TL1=0101 0101 1010 1010

田家庵区15122352374: 读取定时器的16位计数值,急急急!!! -
脂芝瑙瑞: 问题问的不清不楚! 你是想问定时器怎么没工作的嘛? 第一步:选定工作方式 第二步:赋予初值 如: TH0=(65536-50000)%256;TL0=(65536-50000)/256;或者 TH0=0xfe;TL0=0xfe;这两种表示类型 第三步:打开总中断 打开定时器中断 第四步:启动定时器 \(^o^)/~实在不懂的话联系我!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网