AT89S52寄存器
分为工作寄存器、特殊功能寄存器、系统寄存器
作用:暂存数据、配合累加器A进行数据运算及存放结果。
注:任意时刻只能使用一组寄存器
单片机的并行端口及复位
了解并行I/O口端口内部结构
4个I/O口介绍
-
AT89S52有4组I/O口(P0,P1,P2,P3),每组包括8根并行线
-
P0:8位开漏双向I/O口,使用片外部存储器,可作为低8位地址与数据复用总线,能驱动8个TTL(TTL:Time To Live的缩写,生存时间值,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量)
-
P1:8位准双向I/O口,能驱动4个TTL
-
P2:8位准双向I/O,使用片外存储器时,可作为高8位地址与数据复用总线,能驱动4个TTL
-
P3:8位准双向I/O口,能驱动4个TTL
并行I/O口特点
- 这四个均是8位并行I/O口
- 每个端口都是8位准双向口,共占32根引脚
- 每条I/O线都能独立地用作输入或输出
- 每个端口都包括一个锁存器(即特殊功能寄存器SFR P0-P3),一个输出驱动器和输入缓存器,作输出时数据可以锁存,作输入时数据可以缓冲
P0口
-
P0口某位的结构由一个输出锁存器、两个三态输入锁存器和输出驱动电路及控制电路组成。
-
当(控制端)C=0(即输入低电平)时,开关MUX(自动转向开关)接D锁存器,P0口为通用I/O口(就是一般的输入输出口)
-
当C=1时(即输入高电平),开关拨向反相器3的输出端,P0口分时作为地址/数据总线使用。
-
1和2是输入缓冲器,1是读锁存器,2是读引脚,同时还包含了P0口的输出驱动电路和控制电路。
-
4是与门
P0口作通用I/O口时
-
P0口作通用I/O口时,C=0分两种情况,做输入口和输出口
-
做输入口
-
自动转向开关接D锁存器的Q非端,在此时读引脚时,需要事先将输出锁存器写入1,(场效应管)T1和T2均截止,引脚处于悬浮状态,可作高阻抗输入,否则有可能被拉低,读入错误信息。
- T2为截止原因:MUX接D锁存器,导通,T2端是低电平,从而T2截止。
- T1为截止原因:P0引脚做通用I/O口,控制信号端和地址数据的复用端口,而此时控制端是0,4是与门,根据与门特性,有一端输入为0则与门输出为0,即T1为0,截止
- T1、T2均截止时,P0端处于悬浮状态,则外部数据从2读取数据送到内部CPU
- 开始时内部总线写入1原因:若刚开始接入0,即D=0,那么根据D锁存器原理可得到Q非是1,根据先前分析,T2会导通,T2导通那么外部数据从这里进来,输出会全为低电平,因为T2端接地,得到数据会不准确,所以提前将输出锁存器写入1,才能保证T1,T2都是低电平,输出有效数据。
作输入口提前写入1,两边都截止,读入信息
-
-
做输出口
-
当P0口做输出口时,因输出级处于开漏状态,必须外接上拉电阻,当“写锁存器”信号加在锁存器的时钟端CLK上,此时D触发器将“内部总线”上的信号反相后输出到Q非端,若D端信号为0,Q非为1,v2导通,P0,x引脚输出“0”;若D端信号为1,Q非为0,v2截止,虽然v1截止,因P0,x引脚已外接上拉电阻,P0,x引脚输出“1”
- 刚开始写入1,则V1V2均为0,此时又因为接了电源VCC,通过外接上拉电阻,把引脚处拉成了高电平输出,故P0口仍然有高电平输出
- 刚开始写入0,V2导通,数据进入被接地拉为低电平,即有低电平输出。
做输入口,刚开始写1输出1,写0输出0
-
-
-
读引脚和读锁存器的区别
- 读引脚:即T1T2均截止,输入数据从输入缓冲器2读进内部CPU,读的是引脚带的信息
- 读锁存器:读的是D锁存器输出的状态,读的是Q,如上图,Q非是0那么Q为1,此时输入缓冲器中就会输入进1,即读入。
P0口作为地址/数据复用口
当P0口作为地址/数据复用口时,控制端为1
-
输出地址/数据=0时
此时开关MUX接反相器3,因为输出地址数据为0,经过反相器所以下面是1,即V2导通,而4与门的两个端口一个为0一个为1,根据与门性质输出为0即V1截止。两个场效应管下方导通上方截止,下方导通接地,那么输出为0
-
输出地址/数据=1时
同理,此时V2截止,V1导通,V1导通接高电平VCC,引脚输出被拉为高电平即输出为1
输出地址/数据信号与引脚信号一起变,均同
-
作数据输入:与P0用作通用I/O口时输入情况相同,也要先写入1,此时控制端信号C=0,V1V2均截止,从引脚上输入的外部数据经缓冲器U2进入内部数据总线。
-
CPU自动将0ffH写入锁存器
P1口
- P1口仅有一个场效应管
- P1口一般只作为通用I/O口,不会作为地址/数据分时复用口。作为通用I/O时与P0口C=0作用时完全一样的。
P2口
- P2口同样可作地址数据的复用端口,与P0类似,但不同的是P0输出低8位地址,P2口输出高8位地址
P3口
- P3口不能作为分时复用口,但是有第二功能
CPU的时序及单片机的工作过程
时钟电路与时序
- 单片机的时序就是指CPU在执行指令时各个控制信号间的时间顺序关系。
- CPU通过地址总线发出地址信号到程序存储器
- CPU通过控制总线发出正确的地址锁存控制信号
- CPU通过控制总线发出正确的读控制信号
- CPU通过数据总线读取数据
- 在CPU内部控制信号作用下完成程序执行。
不允许调换上述顺序,任何一个信号的时间顺序出错,都可能导致程序运行出错。
单片机内部的电路需在唯一的时钟信号控制下严格按照时序工作
- 计算机的工作原理就是在时钟节拍的作用下,将预先编好的程序一步一步的执行下去,其中时钟信号就来源于晶体振荡器(简称晶振)。
晶体振荡器
- 材料:石英晶体(理由:石英晶体具有压电效应,石英晶体的选频特性非常好,它有一个极其稳定的串联谐振频率fs,只有频率为fs的信号最容易通过,而其他频率的信号均会被晶体衰减。石英晶体的谐振频率fs与晶片的切割方式,几何形状,尺寸等有关,因此可以制成各种频率的石英晶体谐振器。)
单片机的引脚(晶振端)
- 接18(XTAL1)、19脚(XTAL2),分别为晶体振荡电路反向输入端和输出端。接法:
- 两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。
- 电容器C1和C2通常取30pF左右,可稳定频率并对振荡频率有微调作用
- 振荡脉冲频率范围为fosc=0~24MHz。
单片机的时钟周期
为便于分析指令的执行,定义了一些能度量各种时序信号出现时的尺度,分别为时钟周期、机器周期、指令周期。
- 时钟周期:即振荡周期,大小为1/(11.0592Hz)=90.4ns,一个时钟周期定义为一个节拍,2个节拍定义为1个状态周期。
- 机器周期=12个时钟周期,对于11.0592MHz晶振,机器周期=12×90.4ns=1.085us
- 指令周期:执行一条指令所需的时间,单字节执行指令时间短一些(单周期),双字节执行指令时间长一些(双机器周期),三字节执行指令时间也会长一些(双机器周期),若是乘除、转移之类的指令需要多个机器周期(四机器周期)
- 4个时序单位从小到大依次是节拍,状态周期,机器周期和指令周期
AT89S52的复位电路及复位功能
复位操作的主要功能
- 使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。
- 把PC初始化为000H,使单片机从000H单元开始执行程序。
下面使各特殊功能寄存器的复位值
PC:程序指针
ACC:累加器
PCW:程序状态器
SP:堆栈指针
DPTR:数据指针
P0-P3:I/O口,必须是FFH才是复位因为作为通用I/O口,必须提前写入一个1才能保证输入数据准确,而8位1就是11111111转化为16进制就是FFH。
复位信号
RST引脚是复位信号输入端,当RST引脚为高电平,且有效时间持续24个振荡周期(两个机器周期)以上,才能复位。
复位电路
-
上电自动复位:通过外部复位电路的电容充电实现。
首先VCC给电容充电,电容充电的同时给RST一个高电平信号,这样持续两个机器周期以上就可以复位了。
- 按键手动复位
当RESET按键按下,即R1R2路导通,VCC分压,给RST一个高电平信号即可以复位了。
单片机低功耗的工作方式
两种节电工作方式:空闲(待机)方式和掉电(停机)方式,如图为空闲和掉电方式控制电路。
- 空闲方式和掉电方式是通过对SFR中的PCON(地址87H)相应位置1而启动的。下图即为电源控制寄存器(PCON)的各位分布情况。HMOS期间的PCON只包括一个SMOD位(最高位),其他四位是CHMOS器件独有的,三个保留位用户不得使用。
-
PCON内部结构
- SMOD:波特率倍频位,若此位为1,则串行口方式1,方式2和方式3的波特率加倍。
- GF1和GF0:通用标志位
- PD:掉电方式位,此位写1则启用掉电方式
- IDL:空闲方式位,此位写1则启用空闲方式,这是CPU因无时钟控制而停止运作。如果同时向PD和IDL两位写1,则PD优先
-
空闲(等待、待机)工作方式
- CPU执行完置IDL=1(PCON.1)的指令后,系统进入空闲工作方式。
- 有两种退出空闲方式的方法:
- 任何的中断请求被响应都可以由硬件将PCON.0(IDL)清0而终止空闲工作方式
- 硬件复位
-
掉电(停机)工作方式
- 当CPU执行一条置PCON.1位(PD)=1的指令后,系统进入掉电工作方式。
- 推出掉电方式的唯一方法就是硬件复位,复位后将所有特殊功能寄存器的内容初始化,但不改变片内RAM区的数据。
- 在掉电工作方式下,VCC可以降到2V,但在进入掉电方式之前,VCC不能降低,而在准备退出掉电方式之前,VCC必须恢复正常的工作电压值,并维持一段时间(约10ms),使振荡器重新启动并稳定后方可退出掉电方式。
RAM位寻址区位地址表
高于7F的就是字节寻址,比如位地址是88H,那么他的字节地址也是88H,位地址是28H,则他的字节地址就是25H。
片内字节地址为2AH,那么对应最低位位地址就是50H,而片内字节地址为A8H,那么对应最低位的位地址还是A8H,变为字节寻址。超出7F.