我们先来看一个故事
故事的标题就是
小明同学的一天
小明同学早上6点起床
7点半出门上学
8点开始上第一节课
12点放学吃午饭
下午4点运动时间
晚上8点半上床睡觉
小明同学这一天的生活
安排得井然有序
这个故事
是我们幼儿园大班的
一节数学课
主题就是认识钟表
认识了钟表
就有了时间概念
有了时间就可以
让我们的生活有条不紊
每个人的生活有秩序了
整个世界也就变成了一个
有序和谐的世界
那单片机世界里面
和我们生活的世界
也是一样的
单片机本身就是一个时序电路
它里面也有时间的概念
只有把每一件事的时间
都安排好了
才能成为一个有秩序的世界
单片机中的各种操作
在时间上要有一个
严格的先后次序
这种次序 就是单片机的时序
下面我们来看一下
关于单片机中
几个和时间有关的定义
首先是振荡信号
也就是时钟电路产生的信号
这个信号的频率
就是晶振本身的频率
假定用Fosc来表示的话
那周期就用Tosc来表示
我们知道周期就是频率的倒数
我们把这个周期定义成节拍
用P来表示 这个P
就是我们单片机中的
最小时间单位了
就像我们日常生活中的秒一样
其他所有的时间
都是在这个最小时间单位上
来计算出来的
有了节拍P的概念以后
我们再来看状态这个概念
状态是单片机时钟信号的周期
它是在节拍的基础之上定义的
状态是节拍的2倍
也就是说
一个状态S包括两个节拍
假定为P1和P2
P1是S前半周期对应的节拍
P2是S后半周期对应的节拍
实际上状态就是节拍
2分频之后的结果
这就像1分钟等于60秒一样
一个状态等于2个节拍
但是节拍
并不是我们在单片机中
最常用的时间单位
就像分钟后面还有小时一样
单片机里面最重要的时间单位
是机器周期
它是单片机中
最基本的时间单位
比如定时器中的
定时计数节拍
就是机器周期
这就像我们日常生活中
最常用的时间单位
是小时一样
一小时等于60分钟
那51单片机中规定
一个机器周期
就包含6个状态
也就是说12个节拍
这样的话如果我们知道了
在时钟电路中
使用的晶振的频率
就可以直接算出
机器周期的时间了
这就像我们做
数字钟设计的时候
最重要的是把秒计时做出来
后面的分和小时
就可以直接计算出来了
机器周期与节拍频率之间
是12倍的关系
假如晶振频率是6兆赫兹的话
那机器周期就是2微秒了
好 有了机器周期的概念
我们单片机中的计时时间
就可以都用它来表示了
比如我们把一条指令
执行的时间叫作指令周期
在单片机中
每条指令的执行时间
是确定的
有的指令执行时间
是一个机器周期
我们就叫作单周期指令
同样的我们还有双周期指令
四周期指令 等等
我们在程序中
使用的延时函数
其实就是计算
每条指令的执行时间
然后累加起来
就可以计算出来
总的延时时间了
如果用汇编语言编程的话
我们可以把延时时间
计算精确到微秒级
但是用C语言编程的话
我们没有办法直接计算
延时时间
只能把它翻译成汇编语言后
才能计算出来
好 我们现在来总结一下
51单片机中的
几个时序的概念
首先时钟电路中晶振的频率
就是振荡脉冲的频率
频率的倒数就是周期
也就是节拍
这个振荡信号
经过一个2分频器
分频之后的信号
就叫作状态时钟
这个信号就是
单片机的时钟信号
时钟信号
经过一个6分频器
得到的信号
就是机器周期
用机器周期
就可以来表示指令周期了
这样的话整个单片机中的
时间顺序就非常清楚了