新闻资讯
HOME
新闻资讯
正文内容
定时器与晶振 单片机中各种周期的关系与定时器原理
发布时间 : 2024-11-23
作者 : 小编
访问数量 : 23
扫码分享至微信

单片机中各种周期的关系与定时器原理

时钟周期:

时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般有外部的振晶产生,比如12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,也就是1/12微秒。通常也叫做系统时钟周期。是计算机中最基本的、最小的时间单位。

在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

机器周期:

在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

在标准的51单片机中,一般情况下,一个机器周期等于12个时钟周期,也就是机器周期=12*时钟周期,(上面讲到的原因)如果是12MHZ,那么机器周期=1微秒。单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。

机器周期不仅对于指令执行有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHZ晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。

但是在8051F310中,CIP-51 微控制器内核采用流水线结构,与标准的 8051 结构相比指令执行速度有很大的提高。在一个标准的 8051 中,除 MUL和 DIV以外所有指令都需要 12 或 24 个系统时钟周期,最大系统时钟频率为 12-24MHz。而对于 CIP-51 内核,70%的指令的执行时间为 1或2个系统时钟周期,只有 4 条指令的执行时间大于 4 个系统时钟周期。 所以在计算定时器的值时要注意这里的变化。

指令周期:

指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。

系统时钟:

系统时钟:系统时钟就是CPU指令运行的频率,这个才是CPU真正的频率。

单片机内部所有工作,都是基于由晶振产生的同一个触发信号源,由这个信号来同步协调工作步骤,我们把这个信号称为系统时钟,系统时钟一般由晶振产生,但在单片机内部系统时钟不一定等于晶振频率,有可能小于晶振频率,也有可能大于晶振频率,具体是多少由单片机内部结构决定,正常情况和晶振频率会存在一个整数倍关系。系统时种是整个单片机工作节奏的基准,它每振荡一次,单片机就被触发执行一次操作。

一般来说,单片机只有一个时钟源.用了外部晶振,就不用内部RC,用了内部RC,就不用外部晶振.振荡器振荡,产生周期波.单片机在这样的周期波的作用一下有规律的一拍一拍的工作,波的频率越高,单片工作得就越快,波的频率越低,单片机工作得就越慢。

有了以上的概念以后,就可以正确的理解定时器的工作原理了,在8051F310单片机中,有3个定时器,如果定时器1工作在模式1下,如工作模式1下,是16位的计时器,最大数值是65535,当再加1时(=65536),就会发生溢出,产生中断,所以如果我们要它计1000个数, 那么定时初值就是65536-1000,结果就是64536,这个值送给TH、TL,因为是16进制的,所以高位是64536/256取商,低位是64536%6取余。

再者,就是每一计数的时间是多久?一般我们取12M晶振时,一个周期刚好是1us,计数1000个就是1ms,这是因为标准的51单片机是12时钟周期的(STC有6时钟和1时钟方式)。那么,如果我们晶振是12M,就比较好算,如果是其它的,就用12去除好了。比如是6M的,那么就是12/6=2,每个计数是2us,那么你要定时1ms就只要计数500个即可以。

定时器的初值跟定时器的工作方式,跟晶振频率都有关系。一个机器周期Tcy=晶振频率X12,计数次数N=定时时间t/机器周期Tcy,那么初值就X=65536-N,得出的数化成十六进制就行了。这里是用定时器O工作方式1做例子,如果是其它工作方式,就不能是65535了。工作方式0是8192,方式2,3是256。这里有一个公式:

TH=(65536-time/(12/ft))/256

其中,time就是要延时的100ms(要取100000us),ft是晶振频率。这个式子又可以简化成TH=(65536-time*ft/12)/256

TL=(65536-time*ft/12)%6

在一本书上还看到了这样计算定时初值的:

TH0=-(50235/256); //重装100ms定时初值

TL0=-(50235%6); ///这里使用的6M晶体,

这里是6M晶体,延时100ms,那么按上面讲的原理,6M是每个计数为2us,100ms定时就是计数50000个。

那么,定时器初值要 65536-50000=15536,转成16进是3CB0。这就是要送给TH(=3C) 和TL(=B0)的值。

程序中写 TH0=-(50235/256);其实它是这样的TH0=0x100-(50235/256); 在51中,取负数,其结果就是它的值取反+1,也可以用0x100(十进制的256)去减,结果是多少呢?结果就是3C

谈谈51单片机定时器初值与晶振之间的关系

单片机定时器计算详解-辽河之滨 2021年5月

12个振荡周期为一个机器周期,每个机器周期可以使定时器/计数器计数一次。12兆晶振为12000000(一千二百万)赫兹,除以12个振荡周期,即每秒1000000(一百万)个机器周期。计数器做多能计65536个机器周期,所以,以12兆晶振计算,每秒钟1000000(一百万)个周期能装满计数器15.2587891次,但这样有误差,最好是被1000000(一百万)整除的数,比如,1000,10000,50000等值。以每50000个机器周期计数一次为例,达到这个数量的机器周期,计数器就计数一次,这样,1秒钟正好计数20次。那么就需要把计数器先装一部分值进去。这个值就是初值,即65536-50000=15536(初值3CB0),把15536转换成16进制,分别装入TL0和TH0当中。

11.0592兆晶振,11059200/12=921600(每秒机器周期),1000000/921600=1.08506944微秒(每个机器周期耗时)

50000/1.08506944≈46080(个周期为)50毫秒

65536-46080=19456(初值4C00),

例如定时器/计数器中断发生后, 计数器装入16位初值。

TL0=0XB0

TH0=0X3C

TMOD=0X00

TR0=1 (定时器开关)

然后开启总中断,EA=1

开启定时器开关,ET0=1

相关问答

51单片机MCS-51,如果采用的晶振的频率为3MHz,定时器/计数器...

[最佳回答]方式0:2^13/3M*12=0.032768s;方式1:2^16/3M*12=0.262144s;方式2:2^8/3M*12=0.001024s;方式0:2^13...

单片机定时的时间怎么改变?

定时器实质是计数器。当计数脉冲周期一定时,就有定时功能。雅帆用水桶给你打个比方吧!一、向上计定时数器举例当一个255毫升的烧杯,提前放入155毫升水后,...1...

如果采用晶振的频率为3MHz,定时/计数器工作方式0、1、2下,其最大的定时时间为多少?

你问的是MCS-51单片机吧,内部定时脉冲周期=机器周期=12/3Mhz=4us工作方式0:Tmax=8192*4us=32.768ms工作方式1:Tmax=65536*4us=262.144ms...

已知单片机系统晶振频率为6mhz,若要求定时值为10ms时,定时器T0工作方?

晶振频率为6M,则机器周期为2us,定时10ms,溢出值为5000,TMOD可以设置为方式0或者1,一般设置为1,初始设置如下:TMOD=0x01;TH0=(65536-5000)/256;TL...

定时器T0工作方,已知单片机系统晶振频率为6mhz,若要求定时值为50ms时,定时器T0工作方式1?

12M晶振机器周期是1us,6M的话就是2us,定时器工作方式1为16位定时,50ms=50000us=25000个机器周期,那么初值TH0=(65536-25000)/256;TL0=(65536-...

单片机中晶振频率为12MHZ的机器周期怎么算?

1.时钟周期即晶振的单位时间发出的脉冲数,12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒。2.一个机器...

为什么单片机需要一个晶振?

在单片机(MCU)中,晶振被用作时钟源来控制芯片的工作节奏。以下是为什么单片机需要一个晶振的一些原因:1.系统时钟:单片机需要一个准确的时钟源来同步其内...

单片机外接24M的晶振,1ms的基准延时函数用C语言怎么写?

定时器T0工作方式1晶振频率24MHz定时器最大定时时间(us):32768定时器最小定时时间(us):0.5【1ms精确定时C51代码】voidT0_init(void)...定时器T0...

晶振在单片机中的实际作用,为什么必须要时钟信号?

起码内部有一个程序计数器,一个脉冲加1然后决定程序存储器的地址另外定时器也要有时基脉冲访问外部数据存储器也要锁存脉冲总之时钟好比很多人一起干活或...

STC12c5204AD单片机22.1184晶振如何实现115200波特率串口通...

软件生成的串口初始化函数:voidUartInit(void)//115200bps@22.1184MHz{PCON|=0x80;//使能波特率倍速位SMODSCON=0x50;/...

 雷朋隔热膜  遥感三十号10组卫星 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部