单片机关于定时器,定时1ms,定时器中寄存器高低位的值如何设置?

16位定时器溢出值是65536,晶振为11.0592M,时钟周期1/11059200,机器周期为12/11059200。
定时1ms,y=65536-1000=64536,转换为十六进制是,TH=FC,TL=18;
可是答案给出的
ENLED = 0; ADDR3 = 1; P0 = 0XFF; //74HC138 和 P0 初始化部分
TMOD = 0x01; //设置定时器 0 为模式 1
TH0 = 0xFC;
TL0 = 0x67; //定时值初值,定时 1ms
TR0 = 1; //打开定时器 0
EA = 1; //打开中中断
ET0 = 1; //打开定时器 0 中断

TL=67,为什么出入那么大啊?我是不是漏算了什么参数了,求大神点一点我

你要定时 1ms 即是 1000uS,之所以是减 1000,就是认定计数器的计数脉冲周期为 1uS,
而 1uS 就是晶振(12MHz)的12分频;
这些你理解就好;
至于计数分频值是 0xfc18 还是 0xfc67 不必太在意,如果真的想得到准确的定时,则是需要通过测量以便调节分频值来得到最接近值;
温馨提示:内容为网友见解,仅供参考
第1个回答  2021-05-13
你这算的什么东西 上课有没有听讲
如果定时1s 20次50ms的定时器中断
便认为1s 计算1000个数 TH0和TL0
中应该装入的总数是 THX=(65536-N)
/256 TLX=(65536-N)%256
你那个y=65536-1000=64536/256=252
十进制换十六进制是TH0=0×fc 同样TL0=64536%256=103 换十六进制是0×67
第2个回答  2021-05-14
11.0592MHz的晶振,一个机器周期是12/11059200 = 1.085μs
所以1000μs÷1.085μs = 921,不是你想象中的1000……
65536 - 921 = 64615 = 0xFC67

51单片机中用定时器定时1毫秒,怎么编写
TR0=1;\/\/启动定时器0 while(TF0==0);\/\/等待定时时间到 TR0=0;TF0=0;

单片机的定时器应该怎么使用和配置呢
大概可以按照以下方式设置:配置定时器:选择一个合适的定时器,比如TIM3。根据定时器的时钟频率和预分频系数,计算所需的定时周期。假设定时器的时钟频率为72MHz,预分频系数为72,那么定时周期为1ms,即1kHz的频率。配置定时器的自动重装载寄存器(ARR):将ARR值设置为定时周期减1,即ARR = 1000 - ...

关于单片机中断程序的定时器0和定时器1
首先,你所说的两种赋值方法,实际上是一种,就是就是寄存器的高8为位个低8位赋值。你说的第二种(TH0=(65536-50000)\/256)所赋的值是经过计算(=(65536-50000)\/256)得到的,你知道定时计数器的工作原理就清楚了。其次,赋值大小要根据你的晶振以及单片机工作模式确定机器周期,然后才能确定需...

定时器初值怎么设置?为什么是256的底数?
如果你选的单片机的晶振一定,比如12MHZ来说吧,机器周期是1us,就是说每1us产生一次计数,就拿50ms来说,这是你想要的计时,意思是,对机器周期进行50000计数就可以得到我想要的,可T0是一个可以对机器周期能进行65536次计数,也就是说我想要的50MS不能让T0溢出,怎么办,那么先给这个定时器里面放...

单片机高手给点拨下,定时器这个不太理解,定时器初始化有几种方法啊...
要想定时 1000us,这就有点困难了。在外部振荡器频率 = 12 MHz 时,机器周期=1us。要想定时 1000us,就可以设初始值为:65536 - 1000 = 64536。分成高、低八位后,写入 THx、TLx,即可。求出:初始值、分成高低八位,可以人工计算,那么,程序就是:TH1 = 0XFC;TL0 = 0X67;也可以由编译...

单片机1秒钟定时汇编语言怎么编?
第二种方法:用定时器的方法实现 ———MOV R1,#20 ———DLY: MOV TMOD,#00000001B;延时子程序,设定定时器的工作方式 D1: SETB TL0,#176(65536-50000); 15536\/256 (余数)SETB TH0,#60;设置初出溢出值50ms,定时2S (商)SETB TR0 ;启动定时器 JNB TF0,$;是否溢出,没...

...利用定时器\/计数器1定时1ms,在方式0下的定时初值为
开启中断(如ET0=1),然后启动定时器(如TR0=1)。这些步骤是通过TMOD和TCON寄存器来实现的,详细过程可以参考《单片机原理及应用》一书。总的来说,设置定时器1在12MHz晶振下定时1ms,需要正确配置寄存器和确定计数初值,以确保在规定的时间内产生中断。这涉及到单片机内部的硬件逻辑和中断管理机制。

单片机定时器计数值初值是多少?
2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。定时\/计数器T0和T1分别是由两个8位的专用寄存器组成,即...

51单片机定时器设置:
| 为或指令,也叫逻辑加。这里的作用是高7位或上0 不变 最低位或上1 被置1.操作完成后,TMOD =高4位不变(定时器1的模式字不变)低4位被设为0001(即定时器0被设为定时方式、工作在方式1)总结:表达式中0XF0的作用是在设置定时器0的模式字时,不影响不改变定时器1的模式控制字。

单片机题
TMOD=25H=0b00100101 对照特殊功能寄存器的控制位可知T0工作模式是模式1,计数方式,T1工作模式是模式2定时方式 初值计算:机器周期=1\/12MHz*12=1us,所以要定时1ms的话,要计数1000次 TH1=(65536-1000)\/256; \/\/高8位 TL1=(65536-1000)%256; \/\/低8位 ...

相似回答
大家正在搜