单片机的结构及原理文档格式.docx
《单片机的结构及原理文档格式.docx》由会员分享,可在线阅读,更多相关《单片机的结构及原理文档格式.docx(22页珍藏版)》请在冰点文库上搜索。
![单片机的结构及原理文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/d35e32e0-a957-4ba4-8256-dc708f95700e/d35e32e0-a957-4ba4-8256-dc708f95700e1.gif)
从位数来看:
4、8、16、32位,
51单片机有80C31(无ROM)、80C51(4KROM)、87C51(4KEPROM)。
前些年国内教材和产品开发,基本上以8051系列为使用对象,近年国际上广泛使用80C51单片机,80C51单片机是目前8位机中的佼佼者。
现以80C51为例来介绍单片机的结构。
3、单片机结构
1)、80C51单片机的功能结构
如下图所示,单片机是属于三总线结构,80C51单片机功能方框图如图1所示:
图1单片机内部结构框图
2)、单片机内容结构
单片机的内部结构如图2所示。
从图中看出,它具有以下特征;
适于控制应用的8位CPU
56字节片内数据存储器,分高低两个128字节
4K字节片内程序存储器
64KB程序存储器空间
64KB数据存储器空间
4个8位共32根双向并可按位寻址的I/O口线
两个16位定时/计数器;
一个全双工的串行I/O接口
有5个中断源
片内时钟振荡器
具有布尔处理(位处理)能力
图2单片机内部结构
4、单片机的封装形式、引脚定义及功能
1)、80C51封装
80C51系列单片机具有双列直插式和方形两种封装。
2)、80C51系列单片机引脚功能
①、引脚分布:
如图3所示为双列直插式引脚分布图
②、引脚功能
VCC----工作电源+5V
GND----电源地
ALE/PROG-----访问外部存储器时作为低8位地址锁存控制信号;
在对EPROM编程时作为编程脉冲输入;
在不访问外部存储器和非EPROM编程状态下,该脚输出频率为1/6单片机晶振频率的方波信号,该信号,可作为时钟脉冲,但在访问数据存储器时会丢失一个脉冲;
PSEN——外部程序存储器读选通信号.
EA/VPP——访问程序存储器控制信号。
当EA为低电平时,只读外部存储器,当EA为高电平时则先读内部程序存储器,再读外部程序存储器;
这个引脚在编程时接编程电压VPP.
RST——复位信号,对系统复位信号要求>
2T时频。
XTAL1——片内振荡电路输入端。
XTAL2——片内振荡电路输出端。
图3单片机引脚分布
P0-P3——输入输出端口。
第二节单片机的工作原理
1、指令与程序
1)、指令
规定计算机执行特定操作的命令,分成操作码和操作数,以二进制编码形式出现,具有固定的格式。
例如:
2000H:
MOVA,#34H
2000H——是标号,即程序地址。
该指令的机械码:
7434H
其中:
74——操作码,表示执行何种操作;
34----操作数,表示操作的数据;
2)、程序
程序就是跟据要求编制的指令集合;
例如,将外部数据存储器5000H单元内容送累加器A的程序;
MOVDPTR,#5000H
MOVA,@DPTR
2、CPU的工作原理
CPU是微机的核心部件,由控制器和运算器两部分组成如图4所示。
1)、控制器
控制器由指令部件、时序部件、控制部件三部分组成。
①、指令部件:
由程序计数器、指令寄存器和指令操作码译码器构成。
程序计数器——用来存放指令的地址的部件。
指令寄存器——用来暂时存放指令的部件。
指令操作码译码器——对指令操作码进行分析、解释并在输出端产生各种电平。
②、时序部件:
由时钟系统和节拍发生器构成。
时钟系统——它产生具有一定频率和宽度的脉冲信号。
节拍发生器——节拍发生器产生节拍电位和节拍脉冲。
③、微操作控制部件:
对节拍信号和指令操作码信号进行加工处理,产生各种信号。
图4CPU内部结构
2)、运算器
运算器是数据进行算术运算和逻辑运算的执行部件,单片机不仅有很强的算术运算能力,而且有非常强的位处理能力,因此,特别适合用在实时控制场合。
3)、单片机执行程序的过程
系统复位,程序计数器PC的值为0000H。
在控制信号的作用下,根据PC值从内存单元中取出相应的指令。
将取出的指令送指令寄存器,经指令译码器分析,译码信号与时序信号合成,形成所需的各种微操作信号。
循环往复执行,直到结束。
第三节存储器结构
1、单片机存储器空间分布
如图5所示,80C51单片机存储器在物理结构上分片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器四个空间;
在逻辑结构上(使用上)分成片内外统一编址的64KB程序存储器、256B的片内数据存储器以及64KB片外数据存储器。
在访问不同的存储器空间时,使用的指令不同。
图5单片机存储器结构
2、程序存储器
1)、程序存储器的作用
用来存放操作程序。
2)、程序存储器的空间分布
分片内和片外,共64KB空间,EA=1,先访问片内程序存储器再访问片外存储器,其地址是连续的;
当EA=0时,只访问片程序存储器。
复位时PC=0000H,值得注意的是,程序存储器从0003H~0030H共40个单元作为中断处理用,如表2所示:
表2中断入口地址
地址空间
字节数
说明
0003H~000AH
8
外部中断0入口
000BH~0012H
定时器0溢出中断入口
0013H~001AH
外部中断1入口
001BH~0022H
定时器1溢出中断入口
0023H~0030H
串行口中断入口
3、数据存储器
1)、数据存储器的作用
数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。
2)、数据存储器空间分布
数据存储器由片内256字节(含低128单元和高128单元)和片外64KB两个存储空间组成,结构如图6所示:
图6单片机数据存储器
下面分别说明:
(1)、片内数据存储器
片内256B的数据存储器分高128B和低128B两部分
①、低128字节
工作寄存器区:
地址从00H—1FH,共32个字节,每8个字节构成一个区,记作R0—R7。
寄存器区的选择由程序状态字PSW中的RS0位和RS1位的值定:
系统复位时,系统自动指向工作寄存器0区。
工作寄存器一般用作数据缓冲寄存器,如果
不用作工作寄存器,这个区域中的32个字节
也可以作数据寄存器使用,直接按字节寻址。
位寻址区:
该区域地址从20H到2FH,共16个字节,128位,使用指令可以寻址到位,位地址00H—7FH。
注意:
这个区域也可按字节寻址。
数据区:
地址从30H—7FH,共80个字节。
可作为用户数据存储器,按字节访问,用户堆栈通常在该区域开辟。
②、高128B(特殊功能寄存器区SFR)
80C51把CPU中的专用寄存器、并行端口锁存器、串行口、定时器/计数器内的控制寄存器等集中安排在一个区域(共21个专用寄存器),离散地分布在地址从80H到FFH范围内,这个区域称为特殊功能寄存器区。
它共有128个字节,在物理上与片内RAM分别占有高128字节地址和低128字节地址。
构成了连续的256个字节空间,在性质上都属于数据存储器。
下面介绍常用的SFR,对在本节尚未介绍的其它SFR,在后面介绍。
累加器Acc:
Acc是一个具有特殊用途的8位寄存器,主要用存放操作数和运算结果。
例如:
ADDA,#55H表示累加器A的内容与55H相加,结果放到累加器中并暂存起来。
程序状态字PSW:
PSW是一个可编程的8位寄存器,如图7所示,用来存放当前指令执行结果的有关状态。
单片机有许多指令的执行会影响PSW的位状态。
PSW的位状态可通过指令设置,它是一个可以位寻址的特殊寄存器。
图7状态寄存器
单片机在运算,Y=84+105时,会发生溢出错误,因为运算结果189,已经超出-128--+127的范围。
寄存器B:
寄存器B是一个8位寄存器,主要用于乘除法。
乘法运算时,B是乘数,乘法操作后,积的高8位存于B中;
除法运算时,B是除数,除法操作后,余数存于B中。
此外,B寄存器也可作为一般数据寄存器使用。
堆栈指钍:
堆栈指钍(SP):
是专门用来指示椎栈的起始位置的8位寄存器,地址在81H,复位时堆栈指钍初始化地址为07H,用户开辟堆栈时必须指明SP的初始值(栈底)和长度,如图8所示。
堆栈的存贮区域在RAM的30H—7FH之间。
图8单片机堆栈
进栈用PUSH,出栈用POP。
堆栈---堆栈是在RAM中由用户开辟的一个区域。
在这个区域中数据的存取是按“先进后出的原则”进行。
在这个区域的数据是不能按字节访问的,它是专用来为程序中断、子程序调用等临时保护现场的一个存储空间。
数据指钍DPTR:
数据指钍是一个16位地址寄存器,由高位字节DPH和低位字节DPL组成,这两个字节也可单独作为8位寄存器使用。
使用DPTR可以访问64K字节外部数据存储器的任一单元。
MOVDPTR,#data
MOVXA,@DPTR
这两条指令的意思是:
把常数data传送到DPTR,再把DPTR所指向的外部RAM单元的数据送入累加器中。
(2)、外部数据存储器
64KB的外部数据存储器是通过扩展而形成的,外部数据存储器地址从0000H-FFFFH。
外部存储器的访问只能间接寻址。
第四节单片机输入/输出口结构
1、P0端口(如图9所示)
1)、作为通用I/O口使用
内部控制信号为0电平,此时,与门将封锁上拉场效应管,MUX接通锁存器的反向输出端。
由于T1处于断路状态,因此在输出端要接上拉电阻(5-10KΩ),P0口的工作过程如下:
①、数据输出:
内部的写脉冲加在D触发器的CL端,数据从总线写入D,并向端口引脚输出。
②、数据输入(分读引脚和读端口两种情况):
✧读引脚:
读引脚信号打开三态缓冲器,信号通过三态门传送到内部总线.
✧读端口:
读端口则是通过读锁存器实现的。
数据输入,口线必须先置1,否则读数有可能出错;
P0口作通用I/O口使用时,无论输入还是输出,必须接上拉电阻;
2)、作地址/数据总线使用
P0口作为总线使用时,内部发出控制信号,打开上面的与门,MUX接通地址/数据线,地址和数据分时工作。
图9P0口结构
2、P1端口(如图10所示)
1)、数据输出:
系统发出写锁存器命令,内部总线的数据通过D锁存器FET从引脚输出。
2)、数据输入:
先向锁存器写入1封锁FET,引脚信号在读引脚控制信号下由引脚通过三态门传入内部总线(注意在编程时要先将该位先置1再输入数据)。
图10P1口结构
3、P2端口(如图11所示)
P2口可作为通用I/O口和高位地址线使用。
作通用I/O口时控制信号使MUX接锁存器,内部上拉电阻被截断,作地址线时MUX与地址线相联。
1)、P2口作通用I/O口使用
输出:
在写锁存器控制下,内部总线的数据通过D输出到引脚。
输入:
在读引脚控制下,数据从三态门输入到内部总线(同样要接上拉电阻,要置1指令)。
图11P2口结构
2)、作总线使用
控制信号使地址与输出相联,与门接通,内部上拉电阻有效。
P2与P0配合作地址线的高8位。
此时就不能作通用的I/O口使用了
3)注意事项
①、单片机外部不接程序存储器时,如果外部数据存储器只有256B,则可使用MOVXA,@RI指令访问。
在这个过程中,地址由P0口输出,P2口不变。
②、如果外部存储容量较大(或外部接程序存储器),需用MOVXA,@DTPR指令访问。
此时,P0,P2将分别输出高低地址。
值得注意的是在输出地址的过程中,P2口的锁存器内容始终保持不变,因此在输出地址后,P2口可作通用的I/O口使用。
③、如果单片机外部接有程序存储器,由于程序是在不断进行,因此P2口,在这种状态下是不能再你通用I/O口使用。
4、P3端口(如图12所示)
1)、第一功能使用
输出:
此时,“第二输出
功能”为高电平,与非门打开,
内部数据通过锁存器的Q经过
与非门到T;
输入:
从引脚在读引脚控
制信号控制下,通过三态门进
入(同样要置1)。
2)、第二功能使用图12P3口结构
P3口的第二功能;
P3.0RXD(串行数据输入口)
P3.1TXD(串行数据输出口)
P3.2INT0(外部中断0)
P3.3INT1(外部中断1)
P3.4T0(定时器/计数器0外部输入)
P3.5T1(定时器/计数器1外部输入)
P3.6WR(外部数据存储器写脉冲)
P3.7RD(外部数据存储器读脉冲)
当P3口作为第二功能使用时,此时Q为高电平,与非门打开,数据从“第二输出功能”端输出;
输入时,端口引脚的“第二功能信号”通过缓冲器送到第二输入功能端。
5、端口负载能力和接口要求
1)、P0口可带动8个LSTTL(在TTL电路基础上研制的一种低功耗电路)。
既可作通用I/O口使用,也可作地址/数据线使用,作I/O口使用时,要接上拉电阻,作地址/数据使用时,不须接上拉电阻,此时,不能再作I/O口使用。
2)、P1—P3口输出可带动4个LSTTL电路和MOS电路。
3)、P0—P3均为双向I/O口,作输入时,必须先在端口锁存器上写“1”。
第五节CPU时序及时钟电路
CPU从取指令、分析指令到执行指令的全过程中,都是在时序控制下一拍一拍地进行的。
下面介绍时序的几个概念:
时钟周期
时钟周期又叫节拍,定义为时钟脉冲频率的的倒数,如f=12MHZ,则T=1/12,
在单片机中,节拍用P表示,二个节拍定义为一个状态,状态用S表示,
机器周期
CPU完成一种基本操作所需的时间称机器周期。
如CPU取指令、分析指令、执行指令等。
一个机器周期分6个状态,记为S1—S6,因此,一个周期由12个节拍组成,分别记为S1P1、S1P2、……S6P1、S6P2。
指令周期
CPU执行一条指令所需要的时间称之为指令周期,如图13所示。
图13单片机指令周期
1、指令时序
1)、取指令和执行指令:
取指令:
CPU在每出现一次ALE取一次指令,一个周期出现二次ALE。
第一次出现在S1P2、第二次出现在S4P2,宽度为一个状态。
执行指令:
80C51共有111条指令,指令时序分成单字节、单周期指令时序;
双字节单周期指令时序;
单字节双周期指令时序;
二字节二周期指令时序;
一字节四周期指令时序。
2)、指令执行过程
如图14是单片机指令执行过程:
图14单片机指令执行过程
现说明如下:
①、单字节、单周期指令时序:
在S1期间读入操作码,并把它送入指令寄存器,接着开始执行,并在本周期的S2P2执行完毕。
如:
INCA;
②、双字节单周期指令时序:
在S1期间读入指令操作码并锁存,在S4期间读入指令第二字节,指令在相周期的S6P2期间执行完毕。
ADDA,#data
③、单字节双周期指令时序:
在S1期间读入操作码并锁存,然后开始执行,在第二周期的最后一个状态S6P2执行完毕。
2、振荡器和时钟电路
如图15所示,80C51的时钟主生方法分内部时钟方式和外部时钟方式:
图15振荡器
1)、内部时钟电路
此时在芯片XTAL1和XTAL2两端跨接晶体,C取30PF;
若跨接陶瓷谐振器,C取47pF;
晶振频率可在1.2~12MHZ之间选择。
2)、外部时钟方式
此方式是利用外部振荡脉冲接
入XTAL1或XTAL2。
HMOS和CHMOS单片机外时钟信
号接入方式不同。
如图16所示:
图16单片机外接时钟电路
8051的时钟信号由XTAL2输入,考虑到XTAL2不是TTL电平,因此接有上拉电阻。
80C51的时钟由XTAL1输入。
第六节单片机工作方式
单片机有复位、程序执行、低功耗、编程和校验四种工作方式,下面介绍前三种,编程和校验工作方式。
1、复位方式
1)复位操作
复位操作是单片机的初始化操作,单片机在进入运行前和在运行过程中程序出错或操作失误使系统不能正常运行时,需要进行复位操作。
复位操作后,程序将从0000H开始重新执行,复位时特殊功能寄存器的状态如表3所示。
除此之外,复位操作还使单片机的ALE和PSEN引脚信号在复位期间变为无效状态。
表3特殊功能寄存器复位状态表
寄存器名称
复位状态
PC
0000H
TCON
0╳000000B
ACC
00H
TL0
B
TH0
PSW
TL1
SP
07H
TH1
TMOD
╳╳000000B
PCON
0╳╳╳0000B
DPTR
SBUF
不定
P0-P3
FFH
SCON
2)复位工作方式
(1)复位信号
单片机对复位信号的要求:
一是复位信号为高电平,二是复位信号有效持续时间不少于24个振荡脉冲(两个机器周期)以上。
在这里特别要提醒的是,在一个应用系统中,如果有几片单片机同时工作,在程序上有连接关系,系统复位时,应确保每一片单片机同时复位。
(2)复位工作方式
复位信号由单片机的RST引脚输入,复位操作有上电自动复位、按键复位和外部脉冲复位三种方式,见图2.5所示。
随着单片机技术的发展,目前有些单片机内部带有看门狗电路,当程序进行出错或进入了无休止循环时,看门狗电路将利用软件强行使系统复位。
2、程序执行方式
程序执行方式是单片机的基本工作方式。
系统复位PC=0000H,程序从0000H开始执行,考虑到单片机存储器结构的特殊性(0003H-0002BH共四十个单元,预留用于中断程序),在0000H-0002H中放一条无条件转移指令,程序从指定的地址开始执行。
配合程序调试,程序又可运行在单步、跟踪、全速运行三种执行方式。
目前一般仿真器都提供了这三种程序执行方式。
随着科学技术的发展,在线可编程(ISP)单片机已经走向应用,如STT89C58、AT89S51、AT89S52芯片,都具有在线可编程功能。
3、低功耗工作方式
MCS-51单片机有待机和掉电保护两种低功耗工作方式,单片机低功耗方式的设置是通过电源控制寄存器(PCON)的相关位来实现的。
电源控制寄存器如下:
MSBLSB
SMOD
-
GF1
GF0
PD
IDL
SMOD波特率培增位,在串行通信时使用,用来辅助设置通信速度。
GF1通用标志位1。
GF0通用标志位0。
PD掉电方式设置位,PD=1,进入掉电工作方式。
IDL待机方式设置位,IDL=1,进入待机工作方式。
PCON是一个8位的寄存器,不具备位寻址功能,设置任意一位都要通过字节寻址命令。
进入掉电工作方式:
MOVPCON,#02H
进入待机工作方式:
MOVPCON,#01H
1)、待机工作方式
(1)待机工作方式特征
系统进入待机工作方式,CPU停止工作,与CPU相关的特殊功能寄存器和全部通用寄存器被“冻结”在原状态,此时振荡器仍在工作,中断功能继续存在。
(2)进入待机工作方式设置
要使系统进入待机工作方式,只要寄存器PCON中的IDL=1即可。
指令MOVPCON,#01H实现待机工作方式设置。
(3)退出待机工作方式
在待机工作方式下,通过引入外中断信号的方法,使待机工作方式退出。
单片机在响应外部中断时,PCON.0位(IDL)被硬件自动清“0”。
这样在中继服务程序中只要用返回指令(RETI)即可使系统恢复正常工作。
2)、掉电工作方式
(1)掉电工作方式的特征
单片机进入掉电工作方式,只有内部RAM单元的内容被保存,其它一切工作都停止。
(2)掉电工作方式设置
要使系统进入掉电工作方式,只要寄存器PCON中的PD=1即可。
指令MOVPCON,#02H实现掉电工作方式设置。
(3)掉电工作方式退出
当电源恢复正常后,只要硬件复位信号维持10ms以上,即能使单片退出掉电保护工作方式。