标准51单片机是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令周期,刚好就是1/12M*12=1us,常见指令例如_nop_就是一个周期,刚好1us,其他的大多多于一个周期,乘除法更多。所以如果计算指令时间可以这样算。
而现在51核的单片机工艺质量上去后,频率大大提高,增强型51有6T的,如果接12M的话,一个nop就只需要0.51us,如果是STC的部分单片机1T的话,那只需要1/12us。
单片机的晶振不是随便选,要看技术手册,看最高频率,看支持类型等等。一般12M,接串口的话11.0592M。如果是PIC,很多4M,8M。
不是越高越好,对很多不需要大量处理,只是控制的情况,为了增加可靠性,降低编程难度,降低功耗,往往可选用低频的,例如实时时钟的32768晶振。
故 计算 nT 单片机的指令周期公式为: T = 1/晶振周期*n
例如: 使用12M晶振的1T单片机的指令周期为: T = 1 / 12 * 1 = 1 / 12 us
一:下面是单片机的几个周期的介绍:
(1)时钟周期(又叫振荡周期):时钟频率的倒数,可以理解为单片机外界晶振的倒数。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某个单片机来讲,若采用 了1MHZ的时钟频率,则时钟周期就是1us;若采用了4MHZ的时钟频率,则时钟周期就是250ns。由于时钟脉冲是CPU的基本工作脉冲,它控制着CPU的工作节奏。对于同一种单片机,时钟频率越高,单片机的工作速度就越快。我们使用的STC89C系列单片机的时钟范围约在1 ~ 40MHZ。
(2)状态周期:状态周期是时钟周期的两倍。
(3)机器周期:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作,如取指令、存储器读写等。它由12个时钟周期(6个状态周期)组成。
(4)指令周期:它是指CPU执行一条指令所需要的时间。一般一个指令周期含有1——4个机器周期。
二:1T和12T单片机的编程所需要注意的:
定1T单片机的计时器是兼容传统12T单片机的。也就是说只是执行一般的指令会快12倍,但是它的定时器却是先进行12分频,再计时的,与原来的一样。只是用软件延时的话,就要改。
三: 指令周期,时钟周期,机器周期这三者之间有什么联系:
(1)1T、6T、12T这个原本叫机械周期,现在更多人称为 指令周期;以前标准51单片机,是12T模式的。后来大量单片机厂家的介入,开始对单片机进行提速,于是就出现了 6T、1T模式的单片机。
(2)时钟周期:是指振荡源的周期,如 外部晶振 10MHz(假设有),那么它的时钟周期就是 1/10MHz=0.1us;
(3)机械周期:单片机执行一单位指令所需要的 时钟周期 个数,如 1T,就表示,需要 1个时钟周期;12T 即为 12个时钟周期。这些都只是 一单位指令的时间(如自增、自减 等),多单位指令时间进行倍乘(如赋值语句需要2个机械周期,即乘以2倍)
(4)指令周期:早期更多的是用来描述 某条指令执行 需要多少个机械周期,(如自增、自减为 1个机械周期,赋值 2个机械周期,判断 4个机械周期)。随着C语言的大量普 及,现在,更多的人用它来代替 机械周期 这个名词。