第1章 绪论+51单片机硬件结构
第零章 绪论
常用术语
位(bit):binary digit的简写,1个二进制数的位
字节(Byte):8位二进制数组成1个字节
字(word):在MCS-51系统中,2个字节组成1个字,即16位
双字(Double Word):在MCS-51系统中,2个字节组成1个字即32位
压栈、出栈
原码、反码、补码
符号数通常用最高位作为符号位,若字长为8位即D7为符号位,D6-D0位数字位,符号位用0表示正,用1表示负。
按上所述,正数的符号位用“0”表示,负数的符号位用“1”表示,这种表示法就称为原码。
正数的反码表示与原码相同,最高位为符号位,用“0”表示正,其余位为数值位,而负数的反码表示为它的正数的按位取反(连符号位)而形成的
正数的补码表示与原码相同,即最高位为符号位,用“0”表示正,其余位为数值位。
负数的补码表示为它的反码加1
第一章 51单片机硬件结构
8051单片机硬件结构
内部结构:1个8位CPU、4KB(8051为8KB)片内ROM、128字节(8052为256字节)片内RAM、4个8位I/O口、21个特殊功能寄存器(SFR)、2(8052为3个)个16位定时器/计数器、64KB可寻址外部RAM、64KB可寻址外部ROM。
2个优先级5个中断源、全双工UART串行口、片内振荡器与时钟电路、布尔处理器;
注意:8051有4KB的ROM,8031没有片内ROM(0KB)
8051引脚(考试常考)
40根引脚,电源/地2条、时钟2条、控制4条,I/O口32条;
电源、地(VCC,GND)2条
时钟电路引脚(XTAL1、XTAL2)2条,时钟电路如下:
控制信号引脚(\(ALE\)、\(\overline{PSEN}\) 、\(\overline{EA}\) 、\(RST\))4条
\(ALE/ \overline{PROG}\) (Address Latch Enable/Programming):地址锁存允许信号输出端。在存取片外存储器时,用于锁存低8位地址。地址锁存有效时,ALE输出高电平。不访问片外存储器时,ALE以六分之一的时钟频率固定输出正脉冲。
\(\overline{PSEN}\) (Program Store Enable):片外程序存储器允许输出端。是片外程序存储器ROM的选通信号,低电平有效。在执行MOVC指令时,会访问到片外程序存储器ROM,此时PSEN低电平有效
\(\overline{EA}\) (External Access):片外ROM允许输入端。当\(\overline{EA}=1\)时,CPU执行片内ROM指令,但当PC的值超过4K(0FFFH)或8K(1FFFH)时,将自动转向片外ROM取地址。当\(\overline{EA}=0\)时,CPU只执行片外ROM的指令。
对于无片内ROM的芯片(8031), \(\overline{EA}\)必须为0
\(RST\):复位信号输入端。高电平有效,在此输入端保持两个机器周期的高电平,就可以完成复位操作。
I/O口
MCS-51单片机有4个双向8位I/O口P0-P3,P0口为三态双向口(内部无上拉电阻),负载能力为8个LSTTL门电路;P1-P3为准双向口(含有内部上拉电阻),负载能力为4个LSTTL门电路。
P0口
P0口可作为地址/数据复用总线使用:
P0 SFR自动写“1”
输出时,控制端为高电平,若输出为地址信息,是低8位
输入时,控制端为低电平,读“引脚”
P0口可作为通用I/O口使用(除8031外):
控制端为低电平
输出时,需外接上拉电阻:给P0赋00H,能确定P0口输出为0;若给P0赋FFH,在不确定外部电路结构情况下无法确定P0口输出,因为内部没有上拉电阻
输入时,需先写“1”,读“引脚”
P0~P3口线上的“读-修改-写”功能:
ANL P0,A;ORL P0,A;XRL P0,A等指令读“锁存器”
P1口
准双向口,内部有上拉电阻;输入时需先写1
P2口
P2作通用I/O口时同P1,也可作地址总线,输出高八位地址;
P3口
P3作第一功能(通用I/O)口使用时同P1,作第二功能口使用时口锁存器自动写1;
第二功能口定义如下
其中执行指令MOVX A,@A+DPTR,RD信号有效
三总线
地址总线:P0口作为地址/数据服用口,在访问外部存储器时,由地址锁存信号ALE把P0口的低八位地址锁存到地址锁存器中;P2口则输出高八位地址,构成16根地址总线
数据总线:在访问外部程序存储器ROM时,当\(\overline{PSEN}\) 信号有效时,P0口作为数据总线出现指令信号;访问外部数据存储器RAM时,\(\overline{RD}\)或\(\overline{WR}\)读写信号有效时,P0口上将出现数据信号,出现数据信息D0-D7
控制总线:掌握控制引脚的功能即可
存储器
MCS-51系列单片机存储器结构的主要特点是程序存储器和数据存储器的寻址空间是分开的,分别可以寻址64K的ROM和64K的RAM
程序存储器
片内片外一共64K,通过EA信号确定访问片内空间还是片外空间
内部和外部ROM不共存,无论怎样扩展,最多只有64K,若不适用内部,则内部4KROM浪费
中断入口地址(常考)
数据存储器
数据存储器分为片内和片外两种,二者的地址空间是完全独立的。片内RAM的地址范围是00H~FFH,片外RAM的地址范围是0000H~FFFFH
片内RAM地址00H ~ FFH,其中SFR占用80H ~ FFH,一般内部存储器使用00H ~ 7FH
00H ~ 1FH为4个工作寄存器区,每个区8个工作寄存器R0 ~ R7,启用区依靠PSW寄存器中的RS1与RS0决定(具体参照下表),20H ~ 2FH为内部RAM位寻址区
专用寄存器(SFR)
程序计数器PC:存放下一条要执行的指令地址(程序指针,重中之重,需要时刻注意)
累加器A:最常用的专用寄存器(许多操作只能通过A实现)
B寄存器:一般用于乘除指令(其他时候尽量不使用),A*B=BA(B存高8位,A存低8位),A/B=商存A,余存B
程序状态字PSW(8位):用来存放程序状态信息,表征指令执行结果的状态,供程序查询和判别之用位地址
每位的具体含义:
CY(PSW.7):进位标志
AC(PSW.6):辅助半进位标志
F0(PSW.5):标志位0,供用户使用
RS1,RS0(PSW.4,PSW.3):工作寄存区选择控制位,用于选择0~3个区中的一个作为工作寄存器区
OV(PSW.2):溢出标志,运算结果溢出则为1,否则为0
—(PSW.1):未使用,可作为用户自定义标志位
P(PSW.0):奇偶标志,反应A中“1”的个数的奇偶性,奇数为1偶数为0
堆栈指针SP:存放栈顶地址,服从先进后出,PUSH入栈,POP出栈
数据指针DPTR:数据指针是一个16位专用寄存器,可以单独使用,也可分为两个8位寄存器(DPH,DPL)来使用。主要用来保存外部RAM的16位地址,可作为间址寄存器
端口P0 ~ 3:对应I/O口锁存器
串行数据缓冲器SBUF(8位):存放欲发送和已接收的数据(通信时使用)
定时器/计数器:51系列有T0与T1,8052还有T2,每个定时器都具有高位(THX)与地位(TLX)(X为定时器数字编码)
其他控制寄存器:IP、IE、TMOD、TCON、T2CON、SCON、PCON等
CPU时序
1个机器周期=6个状态=12个振荡周期
若采用12MHz振荡源,则每个机器周期位\(1\mu s\)
振荡周期是晶振的周期,由晶振频率直接给出
1个状态执行了2个节拍,P1完成算术逻辑运算,P2在内部寄存器间传送
1个机器周期内执行了6个固定时序,因此1个机器周期由6个状态组成