1,8051时序定时单位
8051的时序包括时钟周期P,状态周期S,机器周期MC,指令周期;共有4种定时单位。
8051片内集成了时钟产生电路,8051的时钟电路是由石英晶体多谐振荡器分频组成,是由非门构成的高增益反相放大器与外接石英晶体构成。实际上时序就是时钟;8051的时钟信号是由晶振脉冲信号二分频得到的,单片机的cpu以及片内外设都是在时钟信号的驱动下工作的
- 时钟周期:P
8051中,1个晶振脉冲周期称为1拍节,是8051最小的定时单位。
- 状态周期:S
一个时钟脉冲周期称为一个状态(时钟脉冲信号是由晶振脉冲经过二分频得到的)。8051的1个状态由2个拍节组成,分别记为P1,P2
- 机器周期:MC
cpu最小生命周期称为机器周期,cpu的硬件是以机器周期为单位周而复始重复工作的,8051的一个机器周期包括6个状态,分别记为S1~S6;1个机器周期=6个状态=12个拍节
- 指令周期
cpu执行1条指令所需要的指令周期数称为指令周期,在程序中是以机器周期为计时单位的。
8051是一种指令周期变长的计算机,其不同指令的指令周期有所不同,8051共有3种指令周期的指令:1MC指令,2MC指令(访问外部RAM的指令都是2MC指令),4MC指令(只有乘法和除法指令)
8051的晶振频率是11.0592mhz;为什么取11.0592呢?
因为11.0592能准确地划分成时钟频率;如果用11.0592mhz的晶振,根据公式算下来需要定时的值都是整数;而如果用12mhz晶振则波特率都是有偏差的,会导致数据错误;这也是串口通信时为什么总是用11.0592mhz晶振的原因,在波特率倍增时,最高可达到57600,误差率0.00%。而用12mhz,最高也是4800,却有0.16%误差率,虽在范围内,但还是有误差。
需要说明的是,绝大多数的嵌入式处理器的指令周期是1MC的(即单片周期指令)单片机内核在访问片内资源(片内存储器,片内外设)时,相关的信号(包括地址信号,数据信号,控制信号)都是在内部总线上流动的,内部的存储器和外设在芯片内部连接好的,用户是看不见也不用关心的,只有在单片机外部扩展存储器芯片和外设是由用户连接的。
1.1 8051访问外部程序存储器ROM
存储器ROM在程序中是只读的,只限于在程序中,单片机系统中的rom通常是用来存放程序代码和常量表格。8051是使用不同的指令来区分所访问的存储空间的,也就是不同的指令,产生不同的读写控制信号。
由于8051单片机系统的存储器系统结构特殊性——8051具有3个地址空间的存储器:
程序存储器rom:0x0000~0xffff
内部RAM:0x00~0xff
外部RAM:0x0000~0xffff
都要通过内部地址总线和数据总线与cpu连接;
只是不同的地址空间的存储器读/写控制信号不同。
- MOVC指令
用来访问程序存储器rom即读rom会产生rom读选通控制信号,8051单片机的外部rom读选控制信号是由引脚PSEN输出的。
- MOVX指令
用来访问外部扩展的RAM单元,8051是使用引脚RD输出外部RAM读选通控制信号,使用引脚WR输出外部RAM写选通控制信号;8051内核使用NOVX指令时,会产生RD/WR选通信号
- MOV指令
用来访问片内的RAM,所产生的RAM单元读/写控制信号是在芯片内部已经连接好的,用户不用关心
1.2 8051的外部数据存储器RAM
数据存储器RAM是可读写的,RAM芯片都设计有读/写控制信号输入引脚,读引脚通产记为OE,写引脚通常标记为WE。
8051访问外部RAM的指令都是2MC指令,第一个机器周期 是取指令;第2个机器周期才是读/写外部RAM单元。
内部ROM和外部RAM有什么区别呢?
- 内部ROM——内部存储器,可分为只读存储器和随机存储器,内存存储信息的速度快但是存储内存小,停电后数据丢失
- 外部RAM——输入输出设备,只能与内部存储器交换信息,不能被其他计算机的其他部分直接访问,主要包括磁盘存储器,磁带存储器,比内存存储器慢很多但是能长期存储数据
1.3 8051最小系统与最大系统
8051单片机是以总广泛应用的8位微控制器:
- 8051的最小系统是指:只使用了8051内部资源,没有在片外扩展存储器或者外设;
- 8051的最大系统是指:在片外构建了外部总线扩展了存储器外设;
最大系统(完整系统):
- 包含了8051单片机本身以及所有有必要的外围设备:复位电路,时钟电路等 通常还包括了扩展存储器:外部RAM,ROM等——最大系统的目的是为了实现完整功能,并能应对各种可能的硬件需求。
最小系统(基本运行平台):
- 仅包含最基础的8051芯片以及供电电路,复位电路和必不可少的晶振或时钟信号发生器;可能会接简单的上下拉电阻连接到单片机的某个引脚作为输入,一般验证8051单片机是否能正常启动并执行最基础的程序。
那么大家想一下,在实际应用开发中,什么时候使用最大系统,什么时候选择最小系统呢?
- 最大系统:当需要创建一个功能齐全,能够满足用户广泛需求的复杂产品或系统时可以使用最大系统以解决大部分问题避免后期频繁的扩展和维护成本。
- 最小系统:初次创建项目,市场测试时可选择最小系统。
什么时候选择哪种系统取决于项目的特定目标,预算,时间。
建议:
如果资源有限,市场需求明确最小系统为最好的选择
如果项目目标建立一个全面的解决方案可选择最大系统
2,8051复位
复位是计算机系统硬件的初始化操作,是由外部的复位逻辑输入触发的。
当给8051单片机提供一个特定的复位信号时,会发生以下几个关键的步骤:
- 复位信号触发:通过外部电路或芯片内部的复位引脚RST短暂的接电平来实现,当RST信号从低电平变为高电平时,复位过程开始。
- CPU状态初始化:复位后,CPU内部寄存器,如PC,程序计数器,SP,栈指针,都被设置为初始值还会把信号ALE,PSEN设置为无效,也就是从0x0000地址开始执行。
- 特殊功能寄存器SFR重置:定时器,中断寄存器,串口控制等都被重置,他们不会保留任何先前的状态。
- 初始化堆栈:如果片内RAM用于堆栈,复位也会初始化堆栈指针,使它指向堆栈的顶部。
- 程序存储器中的代码将加载到ROM中,并执行一条跳转指令回到主程序开始执行。
相关问题:
- 如何触发8051单片机的复位?
通过外部电路或芯片内部的复位引脚RST短暂的接电平来实现,当RST信号从高电平变为低电平时,触发8051单片机的复位。当复位信号为高电平时,表示CPU处于复位状态;当复位信号为低电平时,表示CPU处于正常工作状态。
- 在复位后,8051的程序计数器PC会被设置为什么值?
8051单片机在复位后,8051的程序计数器会被设置为初始值。
- 外部复位信号消失后,CPU如何恢复到正常工作状态?
将所有初始化的位恢复到先前的状态,RST复位引脚设置为无效,低电平。
2.1 8051低功耗
8051单片机是一款经典的低功耗微控制器,它被设计用于各种嵌入式系统和便携设备中,特别注重电池寿命。下面是关于8051低功耗特性的介绍:
- 8051支持多种电源模式:
低功耗待机模式:将PCON的位IDL设置为1则8051就进入待机模式,这时晶振电路仍保持运行,向中断控制器,串行口,定时/计数器【这些外设都是正常工作的】等外设提供时钟,但CPU的时钟信号被阻断,CPU不工作。
低功耗掉电模式:将PCON的位PD设置为1则8051进入掉电模式,在掉电模式下,8051的CPU以及片内外设都停止工作,只有片内RAM通过后备电源供电用来保存信息。
- 8051的掉电保护:
8051的掉电保护包括信息转存和备用电源2个方面:
- 信息转存:电源出现故障时,系统立即将有用的信息转存到内部RAM中。
- 备用电源:电源出现故障系统完成信息转存后,还要维持内部RAM的供电才能保护转存的信息不会被破坏,8051的备用电源是由RESET/VPD引脚接入的。
问题来了,如何使8051退出待机状态呢?
我们可以通过中断来唤醒而退出待机状态,8051的待机状态只是切断CPU的时钟信号,而外设都是正常工作的,所以我们只需要引入一个外部中断请求信号来唤醒CPU响应中断请求,CPU在响应中断请求的同时硬件自动将IDL位清0使8051退出待机模式。
问题二,如何使8051进入掉电模式?
系统中需要电源检测电路,当检测到掉电时会产生中断请求,CPU响应这个中断请求在中断服务中转存信息并将PD位设置为1,这时8051就进入掉电模式了。