1、第2章 MCS-51单片机的结构与时序,2.1 MCS-51系列单片机内部结构 2.1.1 CPU结构 2.1.2 存储器结构 2.1.3 I/O端口 2.1.4 定时器/计数器 2.1.5 中断系统 2.2 8051单片机的引脚及其功能 2.3 MCS-51单片机的工作方式 2.4 MCS-51单片机的时序,牢记MCS-51系列单片机五大组成部分及作用弄清MCS-51每条引脚功能了解51单片机的工作方式,学习重点:,MCS-51结构框图,2.1 MCS-51单片机内部结构,中央处理器CPU(8位); 内部数据存贮器RAM(128B或256B),用以存放可以读写的数据,如运算的中间结果和最终结
2、果等; 内部程序存贮器ROM(4kB或8kB),用以存放程序,也可存放一些原始的数据和表格,但也有一些单片机内部不带ROM; 四个8位的并行输入/输出端口,每个端口既可做输入,也可做输出; 1个串行接口电路,用于数据的串行通信; 定时/计数器,可以用来对外部事物进行计数,也可以设置成定时器,并可以根据计数或定时的结果对计算机进行控制; 内部中断控制系统。,MCS-51单片机基本组成:,2.1.1 存储器结构,P55,8051存储器的组织结构,/EA访问外部存储器控制信号,片内RAM低128单元,低128单元分为三个区域:工作寄存器、位寻址区和数据缓冲区,P35,片内数据存储器空间分布图,寄存器
3、0组,寄存器区 4组(32B),RS1、RS0=00,片内数据存储器空间分布图,寄存器1组,寄存器区 4组(32B),RS1、RS0=01,片内数据存储器空间分布图,寄存器2组,寄存器区 4组(32B),RS1、RS0=10,片内数据存储器空间分布图,寄存器3组,寄存器区 4组(32B),RS1、RS0=11,位寻址(20H2FH),P57,位寻址(20H2FH),把2FH单元中最高位置1,SETB 7FH,20H.0,23H.2,位寻址(20H2FH),字节地址20H, 位地20H,怎么让指令来认识?,MOV A 20H MOV A 20H MOV C 20H,特殊功能寄存器SFR,P58,
4、21个特殊功能寄存器,累加器又称为ACC或A。在运算器做运算时其中一个数一定是在ACC中。大多数指令的操作都需要累加器。 如 ADD A , Rn,21个特殊功能寄存器,B寄存器用来做乘法及除法指令运算。不做乘除法运算时B寄存器与一般的寄存器相同。,21个特殊功能寄存器,程序状态字PSW用于记录及控制程序运行时的相关信息。,程序状态字PSW,CY:进位标志位。在进行加法(或减法)运算时,若运算结果最高位有进位或借位,则CY自动置“1”,否则CY置“0” 。 AC:辅助进位标志位。当进行加法或减法时,若低4位向高4位有进位(或借位)时,AC被置“1”,否则AC被置“0”。 F0:用户标志位。用户
5、可以根据自己的需要对F0附以一定的含义。 OV:溢出标志位,当运算结果溢出时OV为“1”,否则为“0” 。 PSW.1:未定义位。 P:奇偶标志位。当累加器A中“1”的个数为奇数时,P置“1”,否则P置“0”。此位反映累加器A中内容“1”的奇偶性。 RS1、RS0:工作寄存器组选择位。用来选择当前工作的寄存器区。用户通过改变RS1 、RS0的内容来选择当前工作寄存器区。,P52,21个特殊功能寄存器,P37,堆栈指针寄存器SP用来指示堆栈位置的。,堆栈是在内存中专门开辟出来的按照“先进后出,后进先出”原则进行存取的区域。堆栈指针寄存器SP (Stack Pointer Register)就是用
6、来存放堆栈的栈顶地址。在使用堆栈之前,先给SP赋值,以规定堆栈的起始位置,称为栈底。当数据存入堆栈后,堆栈指示器的值随之而变化。,堆栈指针SP,两种不同类型的堆栈,P53,21个特殊功能寄存器,P54,数据指针寄存器DPTR主要功能是存储16位地址。,数据指针寄存器DPTR (Data Pointer Register)是一个16位寄存器,由高8位寄存器DPH和低8位寄存器DPL组成。主要功能是用来存放16位地址,可以用来存放片内ROM的地址,也可以存放片外RAM和片外ROM的地址。 DPTR的值可以通过指令设置和改变。,数据指针DPTR,P54,例如,设片外RAM的2000H单元中有一个数X
7、,把它取入累加器A,MOV DPTR, #2000H MOVX A,DPTR,21个特殊功能寄存器,P49,CPU中使用的特殊功能寄存器,11个可位寻址的SFR寄存器,11个可位寻址的SFR寄存器,MOV P1 , 20H 把20H中的内容传送给P1 MOV 90H , 20H MOV P1.0 , C 把C中的内容传送给P1.0,思考:会不会认为是把位地址20H中的内容传送给位地址90H?,位传送必须通过累加器C。 MOV C, 20H MOV 90H , C,微处理器又称为CPU,是单片机的核心部件,由运算器和控制器两大部分组成。 运算器以算术逻辑单元ALU为核心,加上累加器ACC、暂存器
8、、程序状态字寄存器PSW、以及布尔处理器等组成。,2. CPU,P49,单片机指令系统中的位处理指令集,存储器中的位地址空间,以及借用程序状态寄存器PSW的进位标志位C(位操作的累加器),他们构成了MCS-51单片机的布尔处理机,可对直接寻址的位变量进行位操作,如置位、清零、取反等。,控制器 是CPU的大脑中枢,它的组成包括定时控制部件、指令寄存器、指令译码器、数据指针DPTR、程序计数器PC、堆栈指针SP以及地址寄存器、地址缓冲器等。它的功能是逐条对指令进行译码,并通过定时和控制电路在规定的时刻发出各种操作所需要的内部和外部控制信号,协调各部分的工作,完成指令规定的操作。 程序计数器PC(P
9、rogram Counter,PC)是一个16位的专用寄存器,用来存放下一条指令的地址,具有自动加1功能。当CPU要取指令时,将PC中的地址送到地址总线上,从存储器中取指令后,PC中的地址自动加1,指向下一条指令,以保证程序按顺序执行。 指令译码器当指令送入指令译码器,由指令译码器对该指令进行译码,即把指令转变成所需的电平信号,CPU根据译码器输出的电平信号使定时控制电路定时地产生执行该指令所需的各种控制信号,以便计算机能正确执行程序所要求的各种操作。,2. CPU,P49,8051共有四个8位的并行I/O口(P0、P1、P2、P3),共有32根I/O线。 它们都具有双向I/O功能,均可作为数
10、据输入/输出使用。作输出时数据可以锁存,作输入时数据可以缓冲。 每个接口内部都有一个8位数据输出锁存器、一个输出驱动器和输入缓冲器,因此,CPU数据从并行I/O接口输出时可以得到锁存,输入时可以得到缓冲。,3. 并行I/O端口,P59,在无片外扩展存储器的系统中,这4个端口的每个都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。 8051单片机4个I/O端口线路设计的非常巧妙,学习I/O端口逻辑电路,不但有利于正确合理地使用端口,而且会给设计单片机外围逻辑电路有所启发。 下面简单介绍一下输入/输出端口结构。,3.
11、 并行I/O端口,P0口有位,每一位由一个锁存器、两个三态输入缓冲器以及一个输出控制电路和一个输出驱动电路组成。 输出控制电路由一个与门电路、1个反相器和1个多路开关MUX组成。 输出驱动电路由FET(场效应管)T1、T2组成。,P0口结构,P0口作为一般I/O口使用,P0口作为一般I/O口使用,2.作输入口有两种工作方式:,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写“1”,使T2截止,引脚处于悬浮状态,变为高阻抗输入。这就是所谓的准双向口。,P0作为输入口使用时是一个准双向口,在系统扩展
12、时,P0端口作为地址/数据总线使用时,分为:- P0引脚输出地址/数据信息 - P0引脚输出地址/输入数据,P0口作为地址/数据总线使用,CPU发出控制电平“1”,打开“与”门,又使多路开关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地址或数据。输出地址/数据不需要外接上拉电阻。,P0引脚输出地址/数据信息,P0引脚输出地址/输入数据,输入信号是从引脚通过输入缓冲器进入内部总线。此时,CPU自动使MUX向下,并向P0口写“1”,“读引脚” 控制信号有效,下面的缓冲器打开,外部数据读入内部总线。,CPU发出控制电平“1”,打开“与”门,又使多路开关MUX把CPU的地址/数据总线与T2栅
13、极反相接通,输出地址或数据。,当P0口作输入时,在访问外部存储器期间,CPU会自动向P0所存器写入“1”,所以对用户而言,P0口作为地址/数据总线时,则是一个真正的双向口。,P0口特点,P0口可作通用I / O口使用,又可作地址/数据总线口; 作地址/数据总线口时,P0是一真正双向口,而作通用I / O口时,只是一个准双向口。 作通用I / O 口输出时:是漏极开路输出,需外接上拉电阻;,P1口的结构,P1口的特点,无地址/数据口功能 作I / O输入口时:是一准双向口。内部已有上拉电阻。,P2口的结构,P2口比P1口多了一个多路开关,多路开关的输入有两个:一个是输出锁存器的输出端Q;一个是地
14、址寄存器(PC或DPTR)的高位输出端。,CPU发出控制电平“0” ,使多路开关MUX倒向锁存器输出Q端,构成一个准双向口。其功能与P1相同。,P2口作为一般I/O口,在系统扩展片外程序存储器、扩展数据存储器且容量超过256B时,CPU发出控制电平“1”,使多路开关MUX倒内部地址线。此时,P2输出高8位地址。,P2口作为地址总线,P2口的功能,P3口的结构,P3口的主要特点在于增加了第二功能控制逻辑。结构上与P1口类似,比P1口多了一个第二功能控制部分的逻辑电路(由一个与非门和一个输入缓冲器组成)。,P3口作为一般I/O口使用时,第二输出功能输出端保持为高电平(W=1)。,P3作为一般I/O
15、口,用于第二功能输出时,该位的锁存器应置“1”,打开与非门,第二功能端的内容通过“与非门”和FET送至端口管脚。 用于第二功能输入时,端口管脚的第二功能信号通过第一个缓冲器送到第二个功能输入端。,P3第二功能口,P3口特点,P3口的第二功能表,4. 串行口,MCS-51单片机有一个全双工的可编程串行口,以实现单片机和其它设备之间的串行数据传送。,4. 串行口,两个串行数据I/O引脚:RXD(P3.0串行输入接收端)和TXD(P3.1串行输出发送端)。 发送或接收的数据放在串行数据缓冲器SBUF(Serial Buffer)中,占用内部RAM地址99H。在机器内部实际上有两个数据缓冲器:发送缓冲
16、器、接收缓冲器,因此可以同时保留收/发数据,进行收/发操作,但收/发操作都是对同一个地址99H进行的。,4. 串行口,串行口控制寄存器SCON功能:控制串行口的工作方式和状态。串行口可以通过指令设置成四种不同工作方式中的一种。,电源控制寄存器PCON的SMOD用来控制波特率加倍。,5. 定时/计数器,8051内部有两个16位的可编程定时/计数器,记为定时器T0和T1,每个定时器/计数器都属于特殊功能寄存器。,16位是指它们都由16个触发器构成,故最大计数值模为216-1。 可编程是指它们的工作方式可以由指令来设定:或者当作计数器,或者当定时器用,并且计数(定时)的范围也可以由指令来设置。这种控
17、制功能是通过定时器方式控制寄存器TMOD来完成的。,p61,5. 定时/计数器,如果需要,定时器在到达规定的定时值时,可以向CPU发出中断申请,从而完成定时的控制功能。在计数状态下同样也可以申请中断。定时器控制寄存器TCON用来负责定时器的启动,停止以及中断管理。,6. 中断系统,MCS-51单片机的中断功能较强,以满足控制应用的需要。8051共有5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。全部中断分为高级和低级共两个优先级别,由中断优先控制器IP来控制。,2.2 MCS-51单片机引脚功能,P62,1、电源线Vss 、 Vcc 2、端口线P0.0-P0.7P1.0-p1.7
18、P2.0-P2.7 P3.0-P3.7 4控制线,地址锁存允许/编程线配合P0口的第二功能使用。在访问外部存储器时,8051CPU在P0引脚线上输出存储器低8位地址的同时还在 线上输出一个高电位脉冲,下降沿用于把这个低8位地址锁存到外部专用地址所存器,以便空出P0引脚线去传送随后而来的片外存储器读写数据。,对于片内具有EPROM型的单片机8751,在EPROM编程期间,此引脚用于输入编程脉冲。,允许访问片外存储器/编程电源线可以控制使用片内ROM和还是片外ROM。/EA=1,则与允许访问片内ROM;/EA=0,则允许使用片外ROM。,对于8751,此引脚用于施加编程电源。,片外程序存储器的读选
19、通信号线在执行访问片外ROM的指令MOVC时,8051自动在 线上产生一个负脉冲,用于片外ROM芯片的选通,其他情况下, 均为高电平封锁状态。,RST/VPD 复位/备用电源线RST即为RESET,VPD为备用电源。高电平有效,在此输入端保持两个机器周期的高电平后,就可以完成复位操作。该引脚还有掉电保护功能,若在该端接+5V备用电源,一旦在使用中Vcc突然消失(掉电),则可以保护片内RAM中的信息不丢失。,2.2.2 8031对片外部存储器的连接,扩展存储器通常是通过三条总线扩展的。 地址总线:16根地址线,由p0口和P2口构建,P0口低8位,P2口高8位。 数据总线:8位字长,由p0口构建。
20、 控制总线:第二功能信号线,包括ALE、PSEN、RD和WR等。,p65,2.2.2 8031对片外部存储器的连接,8031无程序存储器,片内RAM128字节。,p65,2.2.2 8031对片外部存储器的连接,p65,1.8031对片外ROM的读操作,2.2.2 8031对片外部存储器的连接,p65,2.8031对片外RAM的写操作,2.3 MCS-51单片机工作方式,单片机工作方式包括: 复位方式 程序执行方式(连续) 单步执行方式 掉电节电方式 EPROM编程和校验方式,2.3.1 复位方式,复位是单片机进入工作状态的初始化操作,是使CPU和系统中其它部件都处于一个确定的初始状态,并从这
21、个状态开始工作。另外,当程序运行错误或由于错误操作而使单片机进入死锁状态时,也可以通过复位进行重新启动。 RST引脚是复位信号的输入端。复位信号是高电平有效,高电平有效的持续时间应为24个时钟周期以上,若时钟频率为6MHz,则复位信号至少应持续4s以上,才可以使单片机可靠复位。 复位后,单片机内部寄存器的值被初始化。复位后,PC初始化为0000H,使单片机从0000H单元开始执行程序。复位不影响片内RAM存放的内容。而ALE、PSEN、P0、P1、P2、P3各引脚均为高电平。,复位后SFR中各寄存器的状态,程序执行方式是单片机的基本工作方式。所执行的程序可以放在内部ROM、外部ROM或者同时放
22、在内外ROM中。 若程序全部放在外部ROM中,则应使/EA=0。由于单片机复位后PC=0000H,所以程序总是从地址0000H开始执行。 但真正的程序一般不可能从0000H开始存放,因此需要在0000H单元开始存放一条转移指令,从而使程序跳转到真正的程序入口地址。,2.3.2 程序执行方式,单步运行方式是使程序的执行在外加脉冲(通常用一个按键产生)的控制下,一条指令一条指令的执行,即按一次键,执行一条指令。 单步运行方式通常是在用户调试程序时使用,用于观察每条指令的执行情况。,2.3.3 单步执行方式,用户系统在检测到电源电压Vcc下降到一定值时,即认为电源出现故障,应通过INT0或者INT1
23、使CPU产生中断,把有关的数据传送到RAM,并在Vcc降到允许限度之前,把备用电源加到RST/VPD引脚上,此时电路进入掉电方式。 对于CMOS工艺的MCS51单片机芯片,还有一种节电运行方式。若在某一阶段时间内,不需要CPU进行工作,则可使CPU暂时停止工作,进入节电工作方式。 在节电方式下,CPU暂时不工作,但也随时准备恢复工作。,2.3.4 掉电和节电方式,编程和校验方式用于内部含有EPROM的单片机芯片(如8751),一般的单片机开发系统都提供实现这种方式的设备和功能。 编程的主要操作是将原始程序、数据写入内部EPROM中。 校验的主要操作是在向片内程序存储器EPROM写入信息时或写入
24、信息后,可将片内EPROM的内容读出进行校验,以保证写入信息的正确性。,2.3.5 编程和校验方式,2.4.1 机器周期和指令周期,3.4 MCS-51单片机的时序,计算机工作要有严格的时序。事实上,计算机更象一个大钟,什么时候分针动,什么时候秒针动,什么时候时针动,都有严格的规定,一点也不能乱。单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。或者说是:CPU在执行指令时所需产生的时间顺序,振荡周期:为单片机提供时钟信号的振荡源的周期。 时钟周期:又称为状态周期或状态时间S,是振荡周期的2倍。状态S包含两个节拍,其前半周期对应的节拍叫P1,后
25、半周期对应的节拍叫P2。,p73,机器周期: 一个机器周期由6个状态组成,并依次表示为S1S6。由于一个状态又包括两个节拍,因此,一个机器周期总共有12个节拍,分别记作S1P1、S1P2、S6P2。 指令周期:执行一条指令所需时间,可包含14个机器周 期(单、双、四周期)。包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令,等等。,若MCS-51单片机外接晶振为12MHz,则单片机的四个周期的具体值为:振荡周期1/12MHz1/12s0.0833s时钟周期1/6s0.167s机器周期1s指令周期14s,2.4.2 MCS-51指令的读取/执行时序,每一条指令的执行都可以
26、包括取指和执行两个阶段。在取指阶段,把PC中的地址送到程序存储器,CPU从内部或者外部ROM中取出指令操作码及操作数。 指令执行阶段可以对指令操作码进行译码以产生一系列控制信号完成指令的执行。,单字节单周期指令 例:INC A,双字节单周期指令 例:ADD A,DATA,单字节双周期指令例:INC DPTR,MCS-51共有111条指令,按照指令字节数和机器周期数,8051的111条指令可分为6类,分别是:单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令。,(1)单字节单周期指令:INC A 只需进行一次读指令操作(指令只有一个字节),
27、当第二个ALE有效时,由于PC没有加1,读出的还是原指令。属于一次无效操作。,(2)双字节单周期指令:ADD A,#data ALE两次读操作都有效,第一次读操作码(指令第一字节),第二次读立即数(指令第二字节)。,(3)单字节双周期指令:INC DPTR 两个机器周期共进行四次读指令操作,但其后三次的读操作都是无效的。,MOVC A, DPTR;A(A+DPTR),S4P2后开始第二次读入,/PSEN在S3P1到S4P2期间有效,选中片外ROM,并根据送出的地址,将指令从P0口读入到CPU执行,ALE信号在S1P2时有效,/PSEN变为或继续保持(高电平)无效状态,2.4.3 访问外部ROM
28、和外部RAM的时序,读片外ROM时序,2.4.3 访问外部ROM和外部RAM的时序,读片外RAM时序,ALE在第一次和第二次有效期间,用于从片外ROM中读出指令代码,即PC中高8位地址送到P2口和PC中低8位地址送到P0口,并在ALE第一个下降沿锁存P0口低8位地址,MOVX A, DPTR;,作业:,1.简述8051片内RAM的空间分配。 2.简述直接位寻址区的空间分配,片内RAM中包含哪些可位寻址单元? 3.CPU如何确定和改变当前工作寄存器组? 4.程序状态字PSW的作用是什么?有哪些常用标志位?作用是什么? 5.8051单片机的I/O口有什么特点?读I/O口有几种方法?,教材p77 题2.3 3.11、2.16、2.22,