89C51单片机定时器初值怎么计算

供稿:hz-xin.com     日期:2025-01-13
51单片机定时器初值公式

1.简单说起,256表示一个8位分界点,对它求模得高位字节存在TH0中,求余得低位字节放在TL0中,拿十进制打比:15/10得十位1,15%10得个位数5
2.12Mhz时,单周期指令时间为12/fsoc=1us
方式1为16位定时/计数器
故定时1ms为:TH0=(2^16-1000)/2^8,
TL0=(2^16-1000)%256
当为11.0592MHz时,单周期指令时间为12/fsoc=12/11.0592us
由于采用方式0,为13为定时器,TH0高8位和TL0的低5位
故定时1ms为:
TH0=(2^13-1000/(12/11.0592))/2^5,
TL0=(2^16-1000/(12/11.0592))%2^5
这么晚了 写写不容易,多给些分以此鼓励俺
O(∩_∩)O~

呵呵 帮你分析一下啊
定时时间2ms=(2的16次方-时间常数X)12/f 即晶振为12M f=12*1000000
2ms=(2的16次方-时间常数X)12/(12*1000000)
2*0.001=(2的16次方-时间常数X)12/(12*1000000)
2*0.001=(2的16次方-时间常数X)/(1000000)
2000=65536-时间常数X
时间常数X=65536-2000

TH0=(65536-2000)/256; 就是转换成十六进制 再除以256 取整数 即高8位送时间常数寄存器的高8位计数器
TL0=(65536-2000)%256; 就是转换成十六进制 再除以256 取余数 即低8位送时间常数寄存器的低8位计数器

哈哈 满意就选满意回答吧

在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12M晶振,则定时器的计数频率为1MHZ。假设定时时间为T,机器周期为T1,即12/晶振频率。X为定时器初值。则 X=2^n-T/T1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8

方式0:13位,8192-x,然后化成16进制,放入th,tl寄存器
方式1:16位,65536-x,然后化成16进制,放入th,tl寄存器
方式2:8位,256-x,然后化成16进制,放入th,tl寄存器,两个寄存器内容一样
注:设定时器要定的时间为t,则x=t/晶振周期的12倍

根据你的需要啊,减法计数还是加法?

[请教高手]单片机怎么实现产生随机数?
2019-06-03 [请教高手]单片机怎么实现产生随机数? 2011-05-26 51单片机如何生成随机数? 34 2012-05-09 求高手赐教:51单片机怎么产生随机数? 10 2012-02-10 单片机C语言如何产生随机数 18 2010-05-27 在单片机中如何产生随机数字 2013-11-25 怎么让51单片机产生随机数? 2013-12-16 keil中如何产生随机...

51单片机c语言程序,求大虾帮忙改下让每次按键后step的值加大一点_百度...
对于不同的曲调我们也可以用单片机的另外一个定时\/计数器来完成。下面就用AT89S51单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。在这个程序中用到了两个定时\/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。5. 程序框图 贴不了.7. C语言源程序 include <AT89X51.H> unsigned ...

产生三角波数据值的C程序,
sbit key2=P1^1;\/\/按键的单片机接口 uchar keydat;uchar flag;\/\/波形发生终止信号的标志位 一旦被置零立马停止发信号 uchar flagsqu;\/\/方波高低电平控制为(运用定时器1中断控制)uchar m,num;uchar dat=0xff;uchar code tosin[141]={\/\/正弦波的编码 0x00,0x01,0x02,0x02,0x03,0x04,0x05...

求个51单片机开平方的汇编程序
汇编程序:用减奇数法开平方(16位)命题:从 1 开始,把连续 n 项奇数的等差数列,求和,可以得到 n^2。证明:1 + 3 + 5 + ... + (2n-1) = (1 + (2n-1)) * (n\/2) = n^2。那么,对于任意正整数 M,都会有:M = 1 + 3 + 5 + … + ( 2n - 1 ) + ε = n^2 ...

高分求51单片机的线性同余法随机数程序。。。用汇编写
9: n = n-m+1;\/*计算范围跨度*\/ C:0x0009 C3 CLR C C:0x000A ED MOV A,R5 C:0x000B 9F SUBB A,R7 C:0x000C FD MOV R5,A C:0x000D EC MOV A,R4 C:0x000E 9E SUBB A,R6 C:0x000F CD XCH A,R5 ...

51单片机C语言怎么写Modbus通信程序?
0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x...

51单片机可以用reg52.h的头文件吗
\/\/单片机复位时PCON被全部清0,编程时一般是用到SMOD位,其它的一般不用 \/\/D7 SMOD该位与串口通信波特率有关 \/\/SMOD=0 串口方式1 2 3 波特率正常 \/\/SMOD=1 串口方式1 2 3 波特率加倍123456789123456789sfr TCON = 0x88; \/\/定时器\/计数器 控制寄存器 可以位寻址 \/\/D7 TF1 定时器1溢出标...

单片机串口问题,51串口助手收到最高位总是1
void comm_s(uchar tmpp)\/\/uint 改为uchar { SBUF=tmpp;while(TI==1)TI=0;} main(){ uchar i;\/\/uint 改为uchar ...} 你i程序中作为字符型变量使用的,但定义为了int变量。这样改后试试。

51 单片机和DAC0832输出方波、矩形波和正弦波由液晶1602显示的C语言程 ...
0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,\/\/输出电压从0到最小值(正弦波1\/4部分)0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x...

51单片机汇编 警告 WARNING L5: CODE SPACE MEMORY OVERLAP 求解答_百 ...
编译没有问题。你的问题可能在于:工程中还有另一个文件,占用了0000H开始的地址,如文件:STARTUP.A51 请在Add files to group...中删除此类文件即可。