51单片机的时钟(文末小惊喜)

51单片机的时钟(文末小惊喜)

初学单片机的人可能会有这样的疑问,单片机是怎么样工作的?它为什么能够按照我写的程序执行?而且一步都不会出错?这个问题想必困扰大家很久了,今天我就来跟大家聊聊为什么单片机能够工作。学过数字电子技术的同学可能知道时序电路这个东西,它是不是就是按照预定的步骤一步步的执行呢?每来一个脉冲,时序电路就会变换一次状态,只不过他的逻辑很简单,功能也很简单。但是呢,复杂的东西往往都是由简单的东西构成的。单片机也是这样的,每来一个脉冲,它内部的复杂时序电路就会变换状态,进而执行相应的操作。只不过单片机是个复杂的系统,各种时序电路,寄存器的组合,和我们数字电子技术学的时序电路完全不是一个等级,所以他的脉冲信号也多一些,下面我来给大家讲一下:

晶振

 稍微了解一点51单片机的人都知道,51单片机最小系统中必不可少的部分是什么?电源、地、复位电路、晶振电路。好了就是这里,晶振!就是它提供了51单片机这个复杂时序电路的脉冲,是51单片机的心脏!,而XAL1和XAL2这两个引脚是时钟接入引脚,就是51的动脉。晶振产生的震荡输入到单片机中,就有了一个个脉冲信号,51内部的时序电路也就可以工作了。这一个个脉冲就叫做时钟信号,时钟信号的周期就叫做时钟周期,频率就叫做时钟频率。

时钟周期

时钟周期,又称为震荡周期,是为单片机提供定时信号的震荡源的周期,单片机最基本的时间单位,一般就是晶振电路得震荡周期。时钟频率越高,震荡周期越小,单片机运行速度越快,就如电脑的CPU什么可以加速到多少GHz一样。时钟周期Tosc=1/fosc.例如:震荡频率为12MHz的单片机即 fosc = 12MHz,那么震荡周期Tosc = 1/fosc= 1/12 us。有了时钟周期,就有了状态周期。

状态周期

状态周期是CPU从一个状态转换到另一状态所需要的时间。简单地说每个状态周期
Ts 分为两个震荡周期(时钟周期),即Ts = 2Tosc。然后就是机器周期。

机器周期

51单片机有固定的机器周期,一个机器周期包含六个状态例如,取指令、存储器读、存储器写等。即机器周期等于6个状态周期,而一个状态周期是2个时钟周期,因此一个机器周期又等于12个时钟周期。那么晶振频率为12MHz的单片机的机器周期 T = 12*Tosc = 1 us。
最后就是指令周期。

指令周期

顾名思义,指令周期就是执行一条指令所需的全部时间。MCS-51单片机的指令周期通常由 1 ~ 4 个机器周期组成。
讲到这里大家应该就明白了吧,时钟周期是最小的时间单位,一个状态周期是两个时钟周期,一个机器周期是6个状态周期,也就是12个时钟周期,而一个指令周期又是1-4个机器周期组成的。指令周期就是和51程序运行直接相关的。所以,小编认为,晶振是51单片机的“心脏”,而时钟信号呢,就是51单片机的“脉搏”。
小惊喜:
因为小编接触STC系列单片机比较多,所以特意整理了一些STC系列单片机的软件延时程序,希望可以帮到大家。
11.0592MHz晶振(延时1ms):
(1)Y1指令集,适用于SCT89C系列,STC90C系列、STC89LE系列、STC90LE系列
void Delay1ms() //11.0592MHz
{
unsigned char i, j;

_nop_();
i = 2;
j = 199;
do
{
	while (--j);
} while (--i);

}
(2)Y3指令集,适用于STC12C系列、STC12LE系列、STC11F系列、STC11L系列、STC10F系列、STC10L系列、STC15F104E、STC15L104E、STC15F104EA、STC15L104EA
void Delay1ms() //11.0592MHz
{
unsigned char i, j;
nop();
i = 11;
j = 190;
do
{
while (–j);
} while (–i);
}
(3)Y5指令集,STC15F系列、STC15L系列、STC15W系列,但是不包Y3中的
void Delay1ms() //11.0592MHz
{
unsigned char i, j;

_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
	while (--j);
} while (--i);

}
Y6指令集合,适用于STC8F系列、STC8A系列
void Delay1ms() //11.0592MHz
{
unsigned char i, j;

i = 15;
j = 90;
do
{
	while (--j);
} while (--i);

}

这一期先分享到这里,后续再为大家整理更多的延时程序,希望能帮到大家。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值