深入学习89S51单片机应用.docx
《深入学习89S51单片机应用.docx》由会员分享,可在线阅读,更多相关《深入学习89S51单片机应用.docx(16页珍藏版)》请在冰点文库上搜索。
深入学习89S51单片机应用
MCS-51单片机基本特性
工作频率:
8位的CPU,片内有振荡器和时钟电路,工作频率为1~12MHz(Atmel89Cxx为0~24MHz)
RAM(片内):
片内有128/256字节RAM
ROM(片内):
片内有0K/4K/8K字节程序存储器ROM
数据存储器:
可寻址片外64K字节数据存储器RAM
程序存储器:
可寻址片外64K字节程序存储器ROM
SFR:
片内21/26个特殊功能寄存器(SFR)
PIO:
4个8位的并行I/O口(PIO)
SIO/UART:
1个全双工串行口(SIO/UART)
TIMER/COUNTER:
2/3个16位定时器/计数器(TIMER/COUNTER)
中断源:
可处理5/6个中断源,两级中断优先级
内置1个布尔处理器和1个布尔累加器(Cy)
MCS-51指令集含111条指令
单片机的引脚定义
从一片集成电路的角度去认识单片机
2.1.2引脚功能
40个引脚双排直插DIP封装,大致可分为4类:
电源、时钟、控制和I/O引脚。
1、电源:
1)VCC—芯片电源,接5V/3.3V/2.7V;
2)VSS—接地端;
2、时钟:
XTAL1、XTAL2—晶体振荡电路反相输入端和输出端。
3、控制线:
4根
1)ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
2)PSEN:
外ROM读选通信号。
3)RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
PSEN:
寻址外部程序存储器时选通外部EPROM的读控制端(OE)低有效。
4)EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
Ø80C51单片机ROM寻址范围为64KB,其中4KB在片内,60KB在片外(80C31芯片无内ROM,全部在片外)。
Ø当EA保持高电平时,先访问内ROM,但当PC(程序计数器)值超过4KB(0FFFH)时,将自动转向执行外ROM中的程序。
Ø当EA保持低电平时,则只访问外ROM,不管芯片内有否内ROM。
对80C31芯片,片内无ROM,因此EA必须接地。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
4.I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
P3.0——RXD:
串行口输入端;
P3.1——TXD:
串行口输出端;
P3.2——INT0:
外部中断0请求输入端;
P3.3——INT1:
外部中断1请求输入端;
P3.4——T0:
定时/计数器0外部信号输入端;
P3.5——T1:
定时/计数器1外部信号输入端;
P3.6——WR:
外RAM写选通信号输出端;
P3.7——RD:
外RAM读选通信号输出端。
2.2存储空间配置和功能
80C51的存储器配置方式与其他常用的微机系统不同,属哈佛结构(注意:
什么是哈佛结构?
),它把程序存储器和数据存储器分开,各有自己的寻址系统、控制信号和功能。
程序存储器用于存放程序和表格常数;数据存储器用于存放程序运行数据和结果。
80C51的存储器组织结构可以分为三个不同的存储空间,分别是:
1)64KB程序存储器(ROM),包括片内ROM和片外ROM;
2)64KB外部数据存储器(外RAM);
3)256B内部数据存储器(内RAM)(包括特殊功能寄存器)。
80C51存储空间配置图
2.2.1程序存储器(ROM)
地址范围:
0000H~FFFFH,共64KB。
其中:
低段4KB:
0000H~0FFFH(80C51和87C51在片内,80C31在片外。
)
高段60KB:
1000H~FFFFH。
在片外。
读写ROM用MOVC指令,控制信号是PSEN和EA。
读ROM是以程序计数器PC作为16位地址指针,依次读相应地址ROM中的指令和数据,每读一个字节,PC+1→PC,这是CPU自动形成的。
但是有些指令有修改PC的功能,例如转移类指令和MOVC指令,CPU将按修改后PC的16位地址读ROM。
读外ROM的过程
CPU从PC(程序计数器)中取出当前ROM的16位地址,分别由P0口(低8位)和P2口(高8位)同时输出,ALE信号有效时由地址锁存器锁存低8位地址信号,地址锁存器输出的低8位地址信号和P2口输出的高8位地址信号同时加到外ROM16位地址输入端,当PSEN信号有效时,外ROM将相应地址存储单元中的数据送至数据总线(P0口),CPU读入后存入指定单元。
64KB中有一小段范围是80C51系统专用单元,0003H~0023H是5个中断源中断服务程序入口地址(详见第5章),用户不能安排其他内容。
80C51复位后,PC=0000H,CPU从地址为0000H的ROM单元中读取指令和数据。
从0000H到0003H只有3B,根本不可能安排一个完整的系统程序,而80C51又是依次读ROM字节的。
因此,这3B只能用来安排一条跳转指令,跳转到其他合适的地址范围去执行真正的主程序。
2.2.2外部数据存储器(外RAM)
地址范围:
0000H~FFFFH,共64KB
读写外RAM用MOVX指令,控制信号是P3口中的RD和WR。
读外RAM的过程:
外RAM16位地址分别由P0口(低8位)和P2口(高8位)同时输出,ALE信号有效时由地址锁存器锁存低8位地址信号,地址锁存器输出的低8位地址信号和P2口输出的高8位地址信号同时加到外RAM16位地址输入端,当RD信号有效时,外RAM将相应地址存储单元中的数据送至数据总线(P0口),CPU读入后存入指定单元。
写外RAM的过程:
写外RAM的过程与读外RAM的过程相同。
只是控制信号不同,信号换成WR信号。
当WR信号有效时,外RAM将数据总线(P0口分时传送)上的数据写入相应地址存储单元中。
2.2.3内部数据存储器(内RAM)
从广义上讲,80C51内RAM(128B)和特殊功能寄存器(128B)均属于片内RAM空间,读写指令均用MOV指令。
但为加以区别,内RAM通常指00H~7FH的低128B空间。
80C51内RAM又可分成三个物理空间:
工作寄存器区、位寻址区和数据缓冲区。
1、工作寄存器区
有专用于工作寄存器操作的指令,读写速度比一般内RAM要快,指令字节比一般直接寻址指令要短,还具有间址功能,能给编程和应用带来方便。
工作寄存器区分为4个区:
0区、1区、2区、3区。
每区有8个寄存器:
R0~R7,寄存器名称相同。
但是,当前工作的寄存器区只能有一个,由PSW中的D4、D3位决定。
2、位寻址区
1)地址:
从20H~2FH共16字节(Byte,缩写为英文大写字母B)。
每Byte有8位(bit,缩写为小写b),共128位,每一位均有一个位地址,可位寻址、位操作。
即按位地址对该位进行置1、清0、求反或判转。
2)用途:
存放各种标志位信息和位数据。
3)注意事项:
位地址与字节地址编址相同,容易混淆。
区分方法:
位操作指令中的地址是位地址;字节操作指令中的地址是字节地址。
位寻址区的位地址映象表
3、数据缓冲区
内RAM中30H~7FH为数据缓冲区,用于存放各种数据和中间结果,起到数据缓冲的作用。
2.2.4特殊功能寄存器(SFR)
特殊功能寄存器地址映象表
(一)
1)累加器Acc
MOVA,R0MOVA,@R1
MOVA,30HADDA,32H
ADDA,#32H
2)寄存器B
MOVA,BADDA,B
3)程序状态字寄存器PSW
PSW也称为标志寄存器,存放各有关标志。
其结构和定义如下:
①Cy—进位标志。
用于表示Acc.7有否向更高位进位。
②AC—辅助进位标志。
用于表示Acc.3有否向Acc.4进位。
③RS1、RS0—工作寄存器区选择控制位。
RS1、RS0=00——0区(00H~07H)
RS1、RS0=01——1区(08H~0FH)
RS1、RS0=10——2区(10H~17H)
RS1、RS0=11——3区(18H~1FH)
4OV—溢出标志。
表示Acc在有符号数算术运算中的溢出
5P—奇偶标志。
表示Acc中“1”的个数的奇偶性。
⑥F0、F1—用户标志。
4)数据指针DPTR
16位,由两个8位寄存器DPH、DPL组成。
主要用于存放一个16位地址,作为访问外部存储器(外RAM和ROM)的地址指针。
5)堆栈指针SP
专用于指出堆栈顶部数据的地址。
堆栈中数据存取按先进后出、后进先出的原则。
堆栈操作分自动方式和指令方式。
自动方式是在调用子程序或发生中断时CPU自动将断口地址存人或者取出;指令方式是使用进出栈指令进行操作。
2.2.5程序计数器PC
ØPC不属于特殊功能寄存器,不可访问,在物理结构上是独立的。
ØPC是一个16位的地址寄存器,用于存放将要从ROM中读出的下一字节指令码的地址,因此也称为地址指针。
ØPC的基本工作方式有:
1)自动加1。
CPU从ROM中每读一个字节,自动执行PC+1→PC;
2)执行转移指令时,PC会根据该指令要求修改下一次读ROM新的地址;
3)执行调用子程序或发生中断时,CPU会自动将当前PC值压入堆栈,将子程序入口地址或中断入口地址装入PC;子程序返回或中断返回时,恢复原有被压入堆栈的PC值,继续执行原顺序程序指令。
2.3I/O端口结构及工作原理
有4个8位并行I/O口,共32条端线:
P0、P1、P2和P3口。
每一个I/O口都能用作输入或输出。
用作输入时,均须先写入“1”;
用作输出时,P0口应外接上拉电阻。
P0口的负载能力为8个LSTTL门电路;
P1~P3口的负载能力为4个LSTTL门电路。
在并行扩展外存储器或I/O口情况下:
P0口用于低8位地址总线和数据总线(分时传送)
P2口用于高8位地址总线,
P3口常用于第二功能,
用户能使用的I/O口只有P1口和未用作第二功能的部分P3口端线。
2.4时钟和时序
2.4.1时钟电路
80C51单片机内有一高增益反相放大器,按图2-8a连接即可构成自激振荡电路,振荡频率取决于石英晶体的振荡频率。
1)时钟周期
80C51振荡器产生的时钟脉冲频率的倒数,是最基本最小的定时信号。
2)状态周期
它是将时钟脉冲二分频后的脉冲信号。
状态周期是时钟周期的两倍。
状态周期又称S周期。
在S周期内有两个时钟周期,即分为两拍,分别称为P1和P2。
3)机器周期
80C51单片机工作的基本定时单位,简称机器周期。
一个机器周期含有6个状态周期,分别为S1、S2、…、S6,每个状态周期有两拍,分别为S1P1、S1P2、S2P1、S2P2…,S6P1、S6P2。
机器周期是6个状态周期、12个时钟周期。
当时钟频率为12MHz时,机器周期为1S。
4)指令周期
指CPU执行一条指令占用的时间(用机器周期表示)。
80C51执行各种指令时间是不一样的,可分为三类:
单周指令、双周指令和四周指令。
其中单机周指令有64条,双机周指令有45条,四机周指令只有2条(乘法和除法指令),无三机周指令。
振荡周期(时钟周期)=晶振频率fosc的倒数;
1个机器周期=6个状态周期
1个机器周期=12个时钟周期;
1个指令周期=1、2、4个机器周期
2.5复位和低功耗工作方式
80C51单片机的工作方式共有四种:
1)复位方式;
2)程序执行方式;
3)低功耗方式;
4)片内ROM编程(包括校验)方式。
1、复位条件
RST引脚保持2个机器周期以上的高电平。
实现复位操作,必须使RST引脚保持两个机器周期以上的高电平。
例如,若时钟频率为12MHz,每机周为1S,则只需持续2S以上时间的高电平;若时钟频率为6MHz,每个机器周期为2S,则需要持续4S以上时间的高电平。
2、复位电路
上电复位电路。
RC构成微分电路,在上电瞬间,产生一个微分脉冲,其宽度若大于2个机器周期,80C51将复位。
为保证微分脉冲宽度足够大,RC时间常数应大于两个机器周期。
一般取22电容、1k电阻。
按键复位电路。
该电路除具有上电复位功能外,若要复位,只需按下图中RESET键,R1C2仍构成微分电路,使RST端产生一个微分脉冲复位,复位完毕C2经R2放电,等待下一次按下复位按键。
3、复位后CPU状态
PC:
0000HTMOD:
00H
Acc:
00HTCON:
00H
B:
00HTH0:
00H
PSW:
00HTL0:
00H
SP:
07HTH1:
00H
DPTR:
0000HTL1:
00H
P0~P3:
FFHSCON:
00H
IP:
×××00000BSBUF:
不定
IE:
0××00000BPCON:
0×××0000B
2.5.2低功耗工作方式
1)待机(休闲)方式(Idle)
2)掉电保护方式(PowerDown)
在Vcc=5V,fosc=12MHz条件下,
✓正常工作时电流约20mA;
✓待机(休闲)方式时电流约5mA;
✓掉电保护方式时电流仅75A。
两种低功耗工作方式由电源控制寄存器PCON确定。
其中:
✓SMOD:
波特率倍增位(在串行通信中使用)
✓GF1、GF0:
通用标志位
✓PD:
掉电方式控制位,
PD=1,进入掉电工作方式;
✓IDL:
待机(休闲)方式控制位,
IDL=1,进入待机工作方式。
PCON字节地址87H,不能位寻址。
读写时,只能整体字节操作,不能按位操作。
1)待机(休闲)方式状态
Ø片内时钟仅向中断源提供,其余被阻断;
ØPC、特殊功能寄存器和片内RAM状态保持不变;
ØI/O引脚端口值保持原逻辑值;
ØALE保持逻辑高电平;
ØCPU不工作,但中断功能继续存在。
2)待机(休闲)状态进入
只要使PCON中IDL位置1。
3)待机(休闲)状态退出
①产生中断;
②复位。
2、掉电保护方式
片内振荡器停振,所有功能部件停止工作;
片内RAM数据信息保存不变;
ALE、PSEN为低电平;
Vcc可降至2V,但不能真正掉电。
2)掉电保护状态进入
只要使PCON中PD位置1。
3)掉电保护状态退出
唯一方法是硬件复位,复位后片内RAM数据不变,特殊功能寄存器内容按复位状态初始化。