单片机:若系统晶振频率是12MHZ,利用定时器/计数器1定时1ms,在方式0下的定时初值为

若系统晶振频率是12MHZ,利用定时器/计数器1定时1ms,在方式0下的定时初值为

1、系统晶振频率是12M,则机器周期=12/12=1us;

2、定时1ms=1*1000=1000us;

3、工作在方式0下:最大计数值是2^13=8192;

4、定时初值=8192-(1*1000)=7192;

5、换算成十六进制数为:定时初值=1C18H。

定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。

定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。

此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。

扩展资料

定时器工作流程介绍:

定时器工作的流程可以按照这个顺序(以51为例用定时器0方式一产生50毫秒的定时)

1、确定使用哪个定时器,使用哪种方式,这一步通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的;

其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C/T是选择计数模式还是定时模式的,如:TMOD = 0X01,就说明定时器0工作在方式1。

2、接下来就要设置定时的时间,用定时器定时50毫秒,可以用这种方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;

可以这样理解:因为这是定时器的初值,也就是说计数脉冲就是在这个数的基础上向上递增,到达65535后就溢出产生中断。

3、第三步打开中断,使用IE寄存器,首先打开总中断EA = 1,这一步是所有中断所必须的,然后打开定时器0中断,ET0 =1。

4、这时准备工作结束,启动定时器,使用TCON寄存器,TR0 = 1,实现了一个50毫秒的定时。

参考资料来源:《单片机原理及应用》 曹巧媛 编著   电子工业出版社  第四章 单片机定时功能应用

第一节 定时器/计数器的结构与工作原理

参考资料来源:百度百科--定时器中断



温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-28
晶振为12MHz,则机器周期是1/12M*(12)=1us。
定时1ms的话,初值为:2^13-1000/1=7192=1110000011000,
这个数字的高8位就是TH1,也就是TH1=E0H,
低五位i为11000,在其高位添加3个0,变成00011000,成为TL1,也就是TL1=18H。本回答被网友采纳
第2个回答  2013-07-04
晶振12MHz,机器周期为12/12M=1us,8051系列单片机定时器0是13位(THx为8位,TLx为低5位有效),那么13位定时器满计数值为2^13=8192,那么只要对2^5=32取整和取余就能正确装入THx和TLx中,比如TH0=(8192-8000)/32;TL0=(8192-8000)2;,定时器0每8000us中断一次,只要在中断服务函数中给一个计数变量计数,到125次就说明1s时间到,然后清零这个变量,接下来可以写你自己的功能了。
不懂的地方随时回复我。
希望我的回答能帮助到你。
第3个回答  2020-12-31

单片机:若系统晶振频率是12MHZ,利用定时器\/计数器1定时1ms,在方式0下...
1、系统晶振频率是12M,则机器周期=12\/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。定时\/计...

单片机:若系统晶振频率是12MHZ,利用定时器\/计数器1定时1ms,在方式0下...
在单片机系统中,当晶振频率设定为12MHz时,理解定时器\/计数器1定时1毫秒(1ms)的设置至关重要。首先,我们来计算基本的机器周期:12MHz等于12000000赫兹,因此每个机器周期为12\/12MHz,即1微秒(us)。1毫秒等于1000个微秒,要让定时器\/计数器1定时1ms,我们需要确保计数在1000个机器周期后溢出以触发...

已知单片机系统晶振频率为12MHz,若要求定时值为1ms时,定时器T0工作在方...
已知单片机系统晶振频率为12MHz,若要求定时值为1ms时,定时器T0工作在方式1时,定时器T0对已知单片机系统晶振频率为12MHz,若要求定时值为1ms时,定时器T0工作在方式1时,定时器T0对应的初值是:65536-1000;TMOD的值是:0x01;TH0=(65536-1000)\/256;TL0=(65536-1000)%256;

假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms...
定时器的初值的计算如下:在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12M晶振,则定时器的计数频率为1MHZ。假设定时时间为T,机器周期为T1,即12\/晶振频率。X为定时器初值。则 X=2^n-T\/T1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8 ...

假设单片机的晶体震荡器的频率是12MHz,利用定时器1采用方式1定时2ms...
51单片机指令频率是晶振频率的12分频,所以单片机的指令周期为1\/1MHz=1uS,所以定时器计一个数就是1uS,要定时2mS需要计数的数量为:2mS\/1uS=2000,定时器计满溢出定时器产生中断,所以初值为:65536-2000=63536,希望对你有帮助

单片机中晶振频率为12MHZ的机器周期怎么算?
1、系统晶振频率是12M,则机器周期=12/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出引起的中断,51单片机中有两个定时器t0和t1。

若单片机的振荡频率为12mhz,设定时器工作在方式2需要定时0.1ms,则定时...
方式2 定时器初值为 256-100=156 换成十六进制是 0x9c

...单片机的晶振频率为12mhz,使用定时器1,在方式0下由1.0输出周期为10...
程序如下:include<reg52.h> \/主程序 void main(){ TMOD=0x00;\/\/ 定时器1工作方式0 ET1=1;EA=1;TH1=(8192-5000)\/32;TL1=(8192-5000)%32;TR1=1;while(1);} \/\/中断子程序 void Timer1() interrupt 3 { TH1=(8192-5000)\/32;TL1=(8192-5000)%32;P1^0=~P1^0;} ...

设单片机的晶振频率为12MHz,使用计时器1,在方式0下由P1.0输出周期为10m...
TMOD=0X00;TH1=(8192-5000)\/32;TL1=(8192-5000)%32;TR1=1;while(1){ if(TF1==1){ P1^0=~P1^0;TF1=0;TH1=(8192-5000)\/32;TL1=(8192-5000)%32;} }

假定某单片机系统的晶振频率是12mhz,定时\/计数器1工作于定时方式1...
方式一的最大计数是2^16=65536;M=A-计数值=65536-40000=25536=63C0;所以TH1=63H,TL1=C0H.

相似回答