关于51单片机定时器的问题。

TMOD = 0x01; //选择工作方式1
TH0 = 0x3C; //设置初始值,定时50MS
TL0 = 0xB0;
比如上面这段代码,是设置每50ms溢出一次,那么TH0和TL0的初值是怎么确定的??比如要是想要一秒钟溢出一次,TH0和TL0的初值是什么呢?
新手,求大佬指点。

看来,你对定时器真是不理解呀。
1.关于定时器最长的定时时间,假如晶振频率是12MHz,机器周期是1us,最长定时的时间是65.536ms。所以,你想定时1秒是不可能的。通常是定时50ms,以中断方式,这样,每中断一次50ms,则中断20次就是1秒。
2.你这个程序就是定时50ms的,变成50000us。晶振频率是12M,初始值计算,X=65535-50000=15536=3CB0H,所以,高8位,TH0=0x3C;
低8位,TL0=0xB0;追答

修正,X=65536-50000=15536

追问

那么请问,要是11.0592MHz的晶振呢?50ms怎么计算初值?

追答

机器周期是1.085us
初值=65536-(50000/1.085)

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-06-08
工作方式1是16位的自动重装定时计数器,能装的最大数为65536(0-65535);那么初值为65536-50000=15536(0x3cb0),就是你说的50ms溢出一次;12M的晶振,一个时钟周期刚好1us,50000us=50ms;
如果你需要1秒的定时,可以在定时器计数器中断里设一个计数变量x,进一次中断x+1;然后在程序里检查x的值,当x加够20次,把x清零,计时时间就是1秒了。

51单片机如何配置定时器2?
1. 确定定时器2的寄存器配置 首先,需要查看51单片机的数据手册或参考手册,以了解定时器2的相关寄存器和控制位。这些寄存器通常包括定时器模式控制寄存器、定时器初值寄存器、定时器控制寄存器等。了解这些寄存器的位定义和功能是实现定时器2配置的关键。2. 设置定时器2的模式 定时器2通常具有多种工作模式,...

51单片机定时器设置:
51单片机定时器设置中,TMOD寄存器的模式设置至关重要。表达式TMOD = (TMOD & 0XF0) | 0X01实际上是一个巧妙的操作,用于控制定时器0的工作模式。首先,& 0XF0是一个逻辑与操作,它将TMOD寄存器的高4位与0XF0进行按位与运算。由于0XF0的二进制形式是11110000,这个操作的结果是保留TMOD的高4位不变...

51单片机定时器中断基础(超级超级简单详细实用)
使用定时器0中断是中断应用的一个实例,以工作方式1为例。首先,定时器\/计数器寄存器TMOD是个8位字节,但不能逐位操作,高四位用于T1,低四位用于T0。设置工作方式时,GATE位用于控制启动和停止,通常设置为0。当CT位为1时,定时器处于计数模式,为0则为定时模式。选择工作方式1时,TMOD的值会是0x1...

51单片机的定时器问题
1、关闭定时器是TR0=0;执行TR0=0;之后,定时器就停止计数,也就是TH0和TL0会保持当前值不会变,ET0=0是关闭定时器的中断,执行ET0=0后,即使定时器还在计数,计数发生溢出的时候不会进入中断。2、在我们使用定时器模式1进行定时,TH0和TL0有三种情况会发生变化:a、直接对TH0和TL0进行写入数值...

51单片机定时初值是多少?
定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。定时\/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时\/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来...

51单片机定时器中断问题
定时器是一直在执行的,不论是否中断,它是对节拍的计数,由单独硬件实现。单片机在中断程序中,如果中断程序比较长,定时器的计数值是会改变的,一般是先读高位计数值,再读低位计数值,然后再读一次高位计数值,防止在读的过程中,低位向高位进位。

51单片机的定时器的时间怎么算??
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用65535-1000=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。

关于51单片机定时器问题
第一 ,变量 定义 uchar temp;a;b; 中间的 2个 冒号 应该是 逗号(uchar tmep,a,b;),使用 分号的俺还真没 试过;第二,定时器的 2处 初始化值 均错误,TL1=(65536-50000)%256,是 % 运算,不是 \/ 运行,TH1 是正确的。第三,按12MHz 晶振计算,定时器为 50ms 中断,程序 ...

关于51单片机定时器的问题。我用郭天祥的51学习班做了一个电子表,发现...
0592的晶振要比12M的快,但是加上中断跳转指令执行的时间,还有中断执行的时间加在一起就慢了很多,要试着减掉这些时间,我得经验值是:中断不要很多,多了不是更增加执行时间了吗?我做时钟都是用最大的计时时间来减少中断插入的影响,这里用50ms,再减掉5毫秒就基本上差不多了。

51单片机怎样实现50ms的定时?
51单片机定时器T1的工作方式1是16位定时器模式,其计数初值为TH1和TL1两个寄存器组成。在该模式下,每个计数周期为12个时钟周期,因此需要设置计数初值为65536-12000\/OSC,其中OSC为晶振频率。如果要实现一次50ms的定时,可以按照以下步骤进行计算:1. 计算每个计数周期的时间:12\/OSC 秒2. 计算需要多少...

相似回答