一、时序:单片机时序是指单片机执行指令时应发出的控制信号的时间序列。这些控制信号在时间上的相互关系就是CPU的时序。它是一系列具有时间顺序的脉冲信号。
CPU发出的时序有两类:一类用于片内各功能部件的控制,它们是芯片设计师关注的问题,对用户没有什么意义。另一类用于片外存储器或I/O端口的控制,需要通过器件的控制引脚送到片外,这部分时序对分析硬件电路的原理至关重要,也是软件编程遵循的原则,需要认真掌握。
二、时钟周期、机器周期和指令周期
1、 时钟周期:又称振荡周期。指为单片机提供定时信号的振荡源周期。是最小的时序单位。
振荡源的频率越高,单片机的工作速度越快。
时钟周期被分成两个节拍P1和P2。每个时钟周期的前半周期P1信号有效,这时CPU通常完成算术逻辑操作;在每个时钟的后半周期P2信号有效,内部寄存器与寄存器之间的数据一般在此状态发生。
2、 机器周期:定义为实现特定功能所需要的时间。机器周期按其功能来命名,如取指机器周期等。
MCS-51的机器周期时间是不变的,均为12个晶振周期或6个状态周期。分为S1P1,SIP2;S2P1,S2P2;等
3、 指令周期:执行一条指令的时间。
按指令执行的时间可分为:单周期、双周期和四周期(只有乘法和除法两条指令)。
时钟周期、机器周期和指令周期均是单片机时序单位。机器周期是单片机计算其它时间值(如波特率、定时器的定时时间等)的基础时序单位。
如MCS-51外接晶振为12MHz,则:
时钟周期= = =0.167us;
机器周期= = =1us;
指令周期=(1~4) =(1~4) =1~4us.
例:若单片机时钟频率为12MHz,计算定时2ms所需要的定时器初值。(设定时器工作在方式1,即模为)
分析:MCS-51有两个8位的计数器,每过来一个机器周期,计数器加1。当计数器从0FFFFH~0000H时,定时器自动产生溢出请求。故方式1的最大定时时间为Tmax=&TImes;T0,其中T0为是一个机器周期的时间。由于时钟周期的频率为12MHz,这里的。
Tmax=&TImes;T0=65536&TImes;1us=65.536ms。
现在要产生2ms的定时时间,故必须在计数器中预先放置一定的初值x,使:
(216-x)T0=2ms。
解:
(-x)T0=2ms=2&TImes;10-3s
X=- =216-2×103=63536=F830H。
注:
十进制数与二进制数、十六进制数快速转换方法
1、 若十进制数小于256,则用这个数除16,得到商和余数。若把这个十进制的商写成二进制形式,则就是二进制的高4位。把这个十进制的余数写成二进制的形式,则就是二进制的低4位。合在一起就是转换的8位二进制数。同样,若把这个十进制的商写成十六进制的形式,则就是二进制的高4位的十六进制表示,把这个十进制的余数写成十六进制的形式,则就是二进制的低4位的十六进制表示,合在一起就是转换成的十六进制表示。
2、 若十进制数大于256小于65536,则用这个数除256,得到商和余数,再分别用商和余数除16。商除16后,又得到商和余数,这个商和余数是十进制形式,写成十六进制就是高8位的高4位和高8位的低4位的十六进制形式。余数除16也得到商和余数,这个商和余数也是十进制,写成十六进制,就是低8位的高4位和低8位的低4位的十六进制形式。
例:求出下列十进制数的二进制和十六进制。
(1)212; (2)65365
解:(1)
212/16=13……4
若把13写成十六进制,为D,4写成十六进制,为4,则转换成十六进制为:
212=D4(H)
若把13写成二进制,为1101,4写成二进制,为0100,则转换成二进制为:
212=11010100(B)。
(2)
65365/256=255……85
(这个商除16就是高8位,这个余数除16就是低8位)
255/16=15……15
(这个商就是高8位的高4位,余数就是高8位的低4位)
把商15写成十六进制为F,把余数15写成十六进制为F,故高8位的十六进制为:FFH;
85/16=5……5
(这个商就是低8位的高4位,余数就是低8位的低4位)
把商5写成十六进制为5,把余数5写成十六进制为5,故低8位的十六进制为:55F。
高8位和低8位合在一起即为这个十进制数的十六进制形式:
65365=FF55(H)。
化为二进制为:65365=FF55(H)=11111111010101010(B)。
技术专区
- mybatis动态sql详解
- 用VHDL语言设计数据传输系统中的HDB3编码器
- 裸机程序如何驱动硬件?看前辈是怎么说的
- 应用面向对象编程SoC原则的典型示例
- 嵌入式开发之java常用开发工具介绍