
《第三章单片机的结构及原理》由会员分享,可在线阅读,更多相关《第三章单片机的结构及原理(100页珍藏版)》请在文档大全上搜索。
1、1v3.1 单片机的结构v3.2 单片机的工作原理v3.3 80C51的存储器v3.4 输入/输出端口v3.5 CPU时序及时钟电路v3.6 复位和复位电路v3.7 80C51系列单片机的低功耗方式2单片机结构与原理单片机结构与原理v教学目的:了解80C51系列单片机的内部结构、工作原理 、存储器结构、时序及复位电路等硬件内容。 v教学重点:1.内部主要组成及工作原理 ;v 2.存储器结构特点;v 3. I/O 的复用结构,及应用特点; 4 .时序及复位电路的作用。v教学难点:1 .特殊功能寄存器的作用;v 2 .堆栈及堆栈指针的作用。33.1 单片机的结构3.1.1 标准型单片机的组成与结构
2、特征:将组成计算机的基本部件集成在一块芯片上。中央处理器、并行可编程特征:将组成计算机的基本部件集成在一块芯片上。中央处理器、并行可编程I/O、 可编程串行口、定时器可编程串行口、定时器/计数器、定时电路及元件等,各部分通过内部总线相连计数器、定时电路及元件等,各部分通过内部总线相连4图3.2 AT89S51/S52内部结构框图5中央处理器(CPU)v中央处理器是单片机最核心的部分,主要完成运算和控制功能;v80C51系列的CPU是一个字长为8位的中央处理单元,它对数据的处理是以字节为单位进行的。6数据存储器(内部RAM)v用于存放变化的数据;v80C51单片机中,通常将专用寄存器在逻辑上划分
3、在内部RAM中,因为其地址与RAM是连续的;vAT89S51中数据存储器的地址空间为256个RAM单元,其中能作为数据存储器供用户使用的仅有前面的128个,后128个被专用寄存器占用。7程序存储器(内部ROM)v存放程序和固定不变的常数等;通常采用只读存储器;v89系列单片机中全部采用闪存。8定时/计数器v实现定时和计数功能。9并行I/O口vAT89S51/S52共有4个8位并行I/O口。v主要用于实现与外部设备中数据的并行输入/输出。10串行口vAT89S51/S52有1个UART全双工异步串行口,用以实现单片机和其他具有相应接口的设备之间的异步串行数据传送。vAT89S51/S52还有一个
4、ISP串行口,用于实现串行在线下载程序。11时钟电路v产生单片机工作所需的时钟脉冲序列。12中断系统v主要作用是对外部或内部的中断请求进行管理与处理。vAT89S51有5个中断源。133.1.2 引脚定义及功能14v主电源引脚主电源引脚VccVcc和和GNDGNDvXTAL1(19XTAL1(19脚脚) ):接外部石英晶体的一端。在单片机内部,它是一个反相:接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部时钟时,放大器的输入端,这个放大器构成了片内振荡器。当采用外部时钟时,对于对于HMOSHMOS单片机,该引脚接地;对于单片机,该引脚接地;
5、对于CHMOSCHMOS单片机,该引脚作为外部振单片机,该引脚作为外部振荡信号的输入端。荡信号的输入端。vXTAL2XTAL2(1818脚):接外部晶体的另一端;它是片内振荡电路反向放大器脚):接外部晶体的另一端;它是片内振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,此引脚悬空不用。时,此引脚悬空不用。vRSTRST:复位信号输入端,高电平有效。当此输入端保持两个:复位信号输入端,高电平有效。当此输入端保持两个机器周期的高电平时,就可以完成复位操作。机器周期的高电平时,就可以完成复位操作。vAL
6、E/PROGALEALE:地址锁存允许信号端。正常工作时,该引脚以振荡频率的:地址锁存允许信号端。正常工作时,该引脚以振荡频率的1/61/6固定输出正脉冲。固定输出正脉冲。CPUCPU访问片外存储器时,该引脚输出信号作为锁存访问片外存储器时,该引脚输出信号作为锁存低低8 8位地址的控制信号。它的负载能力为位地址的控制信号。它的负载能力为8 8个个LSLS型型TTLTTL负载。负载。PROGPROG:是对片内程序存储器编程写入时的编程脉冲输入端。:是对片内程序存储器编程写入时的编程脉冲输入端。15vPSEN:片外程序存储器选通控制信号端。在访问片外程序存储器选通控制信号端。在访问片外片外ROMR
7、OM时,定时输出负脉冲作为读片外时,定时输出负脉冲作为读片外ROMROM的选通的选通信号,接片外信号,接片外ROMROM 的的OEOE端。端。vEA/Vpp:内、外程序存储器选择内、外程序存储器选择/ /编程电源输入端编程电源输入端EAEA:当该引脚接高电平时,当该引脚接高电平时,CPUCPU访问片内访问片内EPROM/ROMEPROM/ROM并执行并执行片内程序存储器中的指令,但当片内程序存储器中的指令,但当PCPC值超过值超过0FFFH0FFFH(片内(片内ROMROM为为4KB4KB)时,将自动转向执行片外)时,将自动转向执行片外ROMROM中的程序。当该中的程序。当该引脚接低电平时,引
8、脚接低电平时,CPUCPU只访问片外只访问片外EPROM/ROMEPROM/ROM并执行外部并执行外部程序存储器中的程序。程序存储器中的程序。V Vpppp:对片内:对片内闪存闪存固化编程时,编程电压输入端固化编程时,编程电压输入端163.2 单片机的工作原理v指令是规定计算机执行某种操作(如加、减等)的命令;v指令通常分为操作码和操作数两部分操作码:规定操作的类型;操作数:给出参加操作的数据或存放数据的地址;v计算机全部指令的集合成为指令系统;v程序是根据任务要求有序地编排指令的集合。3.2.1 指令与程序173.2.2 CPU的工作原理vCPU主要由控制器和运算器两大部分组成;v控制器根据
9、指令码产生控制信号,使运算器、存储器、输入输出端口之间能自动协调地工作;v运算器用于进行算术、逻辑运算以及位操作处理等。181、控制器v用来统一指挥和控制计算机工作的部件。v功能:从存储器中逐条取指令,进行指令译码,并通过定时和控制电路,在规定的时刻发出各种操作所需的全部内部控制信息及CPU外部所需的控制信号,使各部分按照一定的节拍协调工作,完成指令所规定的各种操作。19程序计数器PCvPCPC用于存放用于存放CPUCPU下一条要执行的指令地址下一条要执行的指令地址, , 是一个是一个 16 16 位的专用寄存器位的专用寄存器, ,由两个由两个8 8位计数器位计数器PCHPCH、PCLPCL组
10、组成,可寻址范围是成,可寻址范围是0000H0FFFFH0000H0FFFFH共共 64 KB64 KB。v程序中的每条指令存放在程序中的每条指令存放在ROMROM区的某一单元区的某一单元, , 并都并都有自己的存放地址。有自己的存放地址。 CPU CPU 要执行哪条指令时要执行哪条指令时, , 就就把该条指令所在的单元的地址送上地址总线。把该条指令所在的单元的地址送上地址总线。vPCPC具有自动加具有自动加1 1功能,功能, 在顺序执行程序中在顺序执行程序中, , 当当PCPC的的内容被送到地址总线后内容被送到地址总线后, , 会自动加会自动加 1, 1, 即即(PC) (PC) (PC)+
11、1, (PC)+1, 又指向又指向CPU CPU 下一条要执行的指令地址。下一条要执行的指令地址。v改变改变PCPC内容,改变执行的流向。内容,改变执行的流向。20v指令寄存器:8位寄存器,用于暂时存放指令,等待译码。v指令译码器:对送入指令译码器中的指令进行译码,把指令转变成执行此指令所需要的电信号。212、运算器v运算器以算术逻辑单元ALU为核心,包括累加器ACC、寄存器B、暂存器、程序状态字PSW等许多部件。v它能实现数据的算术逻辑运算、位变量处理和数据传输操作。22v算术逻辑单元算术逻辑单元ALU:用于对数据进行算术运用于对数据进行算术运算和逻辑操作的执行部件;不仅能完成算和逻辑操作的
12、执行部件;不仅能完成8位二位二进制的加、减、乘、除、加进制的加、减、乘、除、加1、减、减1及及BCD加加法的十进制调整等算术运算,还能对法的十进制调整等算术运算,还能对8位变量位变量进行逻辑进行逻辑“与与”、“或或”、“异或异或”、循环、循环移位、求补、清零等逻辑运算,并具有数据移位、求补、清零等逻辑运算,并具有数据传输、程序转移等功能。传输、程序转移等功能。v暂存器:暂存器:暂存进入运算器之前的数据,它不暂存进入运算器之前的数据,它不能通过编程访问。能通过编程访问。233.2.3 单片机执行程序的过程v单片机的工作是执行程序的过程,即逐条执行指令的过程。计算机每执行一条指令都可分为三个阶段进
13、行,即取指令,分析指令和执行指令。24取指令阶段v根据程序计数器PC中的值,从程序存储器读出现行指令,送到指令寄存器25分析指令阶段v将指令寄存器中的指令操作码取出后进行译码,分析该指令要求实现的操作性质,如执行传送还是加、减操作。26执行指令阶段v取出操作数,然后按照操作码的性质对操作数进行操作。27v注意:在80C51系列单片机开机或复位后,程序计数器PC就变成0000H。v任何程序的第一条指令都要从这个地址开始,并且要采用无条件转移指令转移到实际的应用程序。283.3 80C51的存储器v存放程序和数据v以80C51系列的AT89S51/S52型号为例介绍293.3.1 存储器结构和地址
14、空间v80C51系列单片机的存储器结构与一般通用计算机不同;v通用计算机的程序存储器和数据存储器是统一编址的,只有一个逻辑空间;访问存储器时,同一地址对应惟一的存储空间,并用同类指令访问-冯.诺依曼结构。v80C51系列单片机的程序存储器和数据存储器在物理结构上是分开的-哈佛结构“;80C51系列单片机的存储器在物理结构上分为四个存储空间。30图3.5 AT89S51存储空间分布图 4个存储空间:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器31v片内存储器的地址范围与其实际容量是一致的,且固定不变;而片外程序存储器和数据存储器的地址空间不一定全部占满;此外,此地址空间也可以容
15、纳其他I/O外设地址。v一般情况下片上的存储器够用,所以片外存储器空间不是必须使用的,特别是现在已经基本不扩展程序存储器了。32 v但在逻辑上,即从用户使用的角度上,80C51系列有三个存储空间:片内外统一编址的64KB的程序存储器地址空间(用16位地址);片内数据存储器地址空间,寻址范围为00FFH;64KB片外数据存储器地址空间。v访问这几个不同的逻辑空间时,采用的指令:访问这几个不同的逻辑空间时,采用的指令:片内外程序存储器空间片内外程序存储器空间-MOVC-MOVC片内数据存储器空间和片内数据存储器空间和SFR-MOVSFR-MOV片外数据存储器地址空间片外数据存储器地址空间-MOVX
16、-MOVX333.3.2 程序存储器v用于存放编好的程序和数据表格;vAT89S51片内有4KB(AT89S52为8KB)闪存;通过片外16位地址线最多可扩展到64KB,两者是统一编址的。vEA为内、外程序存储器选择输入端当EA端接高电平时,CPU从片内程序存储器地址0000H单元开始执行程序,当地址超出4KB(对于AT89S52则为8KB),将自动执行片外程序存储器的程序;当EA端接低电平时,CPU仅访问片外程序存储器,CPU直接从片外程序存储器地址0000H单元开始执行程序。34程序存储器入口地址v0000H: 程序入口地址。51单片机上电复位后,PC=0000H,程序将自动从0000H开
17、始取指令执行v80C51有5个中断源,其相应的入口地址安排在程序存储器的固定单元,这些入口地址不得随意被其它程序指令占用 :v0003H:外部中断0入口。v000BH:定时器0溢出中断入口。v0013H:外部中断1入口。v001BH:定时器1溢出中断入口。v0023H:串行口中断入口。v002BH:定时器2溢出中断入口。(只有AT89S52/C52有)35v设计程序时在0000H0002H之间存放一条无条件转移指令跳转到用户设计的主程序的入口地址。v中断入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断程序起始地址。v通常在0003H002FH之间的空闲单元也不再安排程序;主程序一般从
18、30H后面的单元开始。363.3.3 数据存储器v主要用于存放经常要改变的中间运算结果、数据暂存或标志位等,通常都是由随机存储器RAM组成。v数据存储器可片内和片外两部分。片内够用,则不必外扩。37图3.6 片内数据存储器的配置381.片内数据存储器的结构及操作v片内数据存储器为8位地址,寻址范围为00HFFH。vAT89S51片内供用户使用的RAM为片内低128字节,地址范围为00H7FH;对其访问可采用直接寻址或间接寻址的方式。v80HFFH为特殊功能寄存器SFR(Special Function Register)所占用的空间。v特殊功能寄存器虽然在地址空间上被划分在数据存储器中,但它们
19、不是用于存储一般数据的,其作用非常重要。392.低128字节RAMv根据存储器的用途,又分为3部分:通用工作寄存器区(00H1FH)位寻址区(20H2FH)用户RAM区(30H7FH) 40(1)通用工作寄存器区v80C51系列单片机的工作寄存器共分为4组,每组8个8位的工作寄存器(R0R7),共占用32个单元。v每组寄存器均可选作CPU当前的工作寄存器组,通过对PSW中RS1、RS0的设置来决定CPU当前使用哪一组。v非当前工作寄存器组的寄存器组可用作一般数据存储器。vCPU复位后,选中第0组工作寄存器。41PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器组R0R7000组(00
20、H07H)011组(08H0FH)102组(10H17H)113组(18H1FH)工作寄存器组的选择表工作寄存器组的选择表42(2)位寻址区v工作寄存器区后的16字节(即20H2FH)称为“位寻址区”,可用位寻址方式访问其各个位。v位地址范围为:00H7FH。v可用作软件标志位或用于1位(布尔)的处理。v位寻址能力体现了单片机用于控制的重要特点。43v说明:通用工作寄存器区和位寻址区在不用作工作寄存器或位寻址时,都可作为一般的用户数据区。443.片外数据存储器的结构及操作v片外数据存储器和外围扩展电路统一编址,可寻址范围为64 KB。v片内RAM和片外RAM的低地址部分(00HFFH)的地址码
21、是相同的,但它们是两个地址空间,采用不同的指令访问:访问片内RAM用MOV指令访问片外RAM用MOVX指令v片外数据存储器的访问采用间接寻址方式,只能和累加器A交换数据,通过地址指针DPTR或工作寄存器Ri间接寻址。453.3.4 特殊功能寄存器v特殊功能寄存器SFR也称为“专用寄存器”,主要用于管理片内和片外的功能部件(如定时器、串行口、中断系统及外部扩展的存储器、外围芯片等)。v80C51单片机中,在片内RAM的80HFFH空间建立了集中的特殊功能寄存器SFR空间,通过该空间的SFR实现对80C51系列单片机内部资源的运行管理操作、位地址空间的操作等。这种集中的、归一化操作管理寄存器的模式
22、是单片机内部资源操作管理的重要方式。v访问这些专用寄存器仅允许使用直接寻址的方式。v26/32个专用寄存器中有11/12个具有位寻址能力,其字节地址正好能被8整除。v特殊功能寄存器并未占满80HFFH整个地址空间,对空闲地址的操作是无意义的。46表3.5 特殊功能寄存器名称、表示符、地址一览表47481、程序状态字寄存器PSWvPSW是用于反映程序运行状态的8位寄存器。v当CPU进行各种算术运算或逻辑操作时,为反映操作或运算结果的状态,把相应的标志位置1或清0.v标志位的状态,可由专门的指令测试,也可通过指令来读出。v为计算机确定程序的下一步运行方向提供了依据。49CYACF0RS0OVPRS
23、1PSW.7PSW.0PSW.6 PSW.5CYCY(PSW.7)(PSW.7)进位进位/ /借位标志位借位标志位。若若ACCACC在运算过程在运算过程中发生了进位或借位,则中发生了进位或借位,则CY=1CY=1;否则;否则=0=0。它也。它也是布尔处理器的位累加器是布尔处理器的位累加器C C,可用于布尔操作。,可用于布尔操作。ACAC(PSW.6)(PSW.6)半进位半进位/ /借位标志位。借位标志位。若若ACCACC在运算过在运算过程中,程中,D3D3位向位向D4D4位发生了进位或借位,则位发生了进位或借位,则CY=1,CY=1,否则否则=0=0。机器在执行。机器在执行“DA A”DA A
24、”指令时指令时自动自动要判要判断这一位,我们可以暂时不关心它。断这一位,我们可以暂时不关心它。F0 F0 (PSW.5)(PSW.5)可由用户定义的标志位。可由用户定义的标志位。50RS1RS1(PSW.4)(PSW.4)、RS0RS0(PSW.3)(PSW.3)工作寄存器组选择位工作寄存器组选择位。RS1RS1,RS0 = 0 1 RS0 = 0 1 则选择了工作寄存器组则选择了工作寄存器组 1 1 区区R0R0R7R7分别分别代表代表08H 08H 0FH0FH单元。单元。RS1RS1,RS0 = 1 0 RS0 = 1 0 则选择了工作寄存器组则选择了工作寄存器组 2 2 区区 R0R0
25、R7R7分别分别代表代表10H 10H 17H17H单元。单元。RS1RS1,RS0 = 1 1 RS0 = 1 1 则选择了工作寄存器组则选择了工作寄存器组 3 3 区区R0R0R7R7分别分别代表代表18H 18H 1FH1FH单元。单元。RS1RS1,RS0 = 0 0 RS0 = 0 0 则选择了工作寄存器组则选择了工作寄存器组 0 0 区区R0R0R7R7分别分别代表代表08H 08H 0FH0FH单元。单元。51OV OV (PSW.2)(PSW.2)溢出标志位。溢出标志位。 OV=1OV=1时特指累加器在进行带符号数时特指累加器在进行带符号数(-128(-128+127)+127
26、)运算时出错(超出范围);运算时出错(超出范围);OV=0OV=0时未出错。时未出错。PSW.1 PSW.1 未定义。未定义。P P (PSW.0)(PSW.0)奇偶标志位。奇偶标志位。 P=1P=1表示累加器中表示累加器中“1”1”的个数为奇数的个数为奇数 P=0P=0表示累加器中表示累加器中“1”1”的个数为偶数的个数为偶数 CPUCPU随时监视着随时监视着ACCACC中的中的“1”1”的个数的个数, ,并反映在并反映在PSWPSW中中522.累加器ACCv累加器ACC简称累加器A, 为一个8位寄存器, 通过暂存器与ALU相连。它是CPU中使用最频繁的寄存器。 进入ALU作算术和逻辑运算的
27、操作数多来自于A, 运算结果也常送回A保存。533.双数据指针寄存器DPTR0/1v数据指针可以用它来访问外部数据存储器中的任一单元,也数据指针可以用它来访问外部数据存储器中的任一单元,也可以作为通用寄存器来用,由我们自已决定如何使用。可以作为通用寄存器来用,由我们自已决定如何使用。v数据指针数据指针DPTR是一个是一个 16 位的专用寄存器位的专用寄存器, 其高位字节寄存其高位字节寄存器用器用DPH表示表示,低位字节寄存器用低位字节寄存器用DPL表示。既可作为一个表示。既可作为一个 16 位寄存器位寄存器DPTR来处理来处理, 也可作为两个独立的也可作为两个独立的 8 位寄存器位寄存器DPH
28、和和DPL来处理。来处理。vDPTR 主要用来存放主要用来存放 16 位地址位地址, 当对当对 64 KB外部数据存储外部数据存储器空间寻址时器空间寻址时, 作为间址寄存器用。在访问程序存储器时作为间址寄存器用。在访问程序存储器时, 用用作基址寄存器。作基址寄存器。v在在AT89S51/S52中设置了两个中设置了两个16为数据指针寄存器:为数据指针寄存器:DPTR0和和DPTR1,但在但在80C51的指令系统中,数据指针只有的指令系统中,数据指针只有DPTR一种表示方法,要通过辅助寄存器一种表示方法,要通过辅助寄存器1(AUXR1)的)的DPS位来选择位来选择DPTR0或或DPTR1。544.
29、B寄存器一个经常与一个经常与 ACCACC 配合在一起使用的特殊功能寄存器配合在一起使用的特殊功能寄存器( (如:乘法、除法如:乘法、除法) ),此外,它也经常当作普通寄存,此外,它也经常当作普通寄存器使用。器使用。555.堆栈指针SP(Stack Pointer)u堆栈:堆栈:在片内在片内RAMRAM中,常常要指定一个专门的区域中,常常要指定一个专门的区域来存放某些特别的数据来存放某些特别的数据, ,它遵循它遵循先进后出先进后出和和后进先后进先出出(LIFO/FILO(LIFO/FILO)的原则)的原则, ,这个这个RAMRAM区叫堆栈。区叫堆栈。u堆栈指针堆栈指针SP是一个是一个8位的特殊
30、功能寄存器。位的特殊功能寄存器。总是指总是指向栈顶向栈顶, ,压栈压栈时先时先 (SP)+1 (SP)+1 然后数据进栈;然后数据进栈;弹栈弹栈时时数据先出栈数据先出栈 然后然后(SP)-1(SP)-1。u栈底和栈顶:第一个进栈的数据所在的存储单元称栈底和栈顶:第一个进栈的数据所在的存储单元称为为“栈底栈底”;最后进栈的数据所在的存储单元称为;最后进栈的数据所在的存储单元称为“栈顶栈顶”。随着数据的增减,栈顶是不断变化的。随着数据的增减,栈顶是不断变化的。56图3.7 堆栈和堆栈指针示意图57堆栈的功用1 1)子程序调用和中断服务时)子程序调用和中断服务时CPUCPU自动将当前自动将当前PCP
31、C值压栈保存,返回时自动将值压栈保存,返回时自动将PCPC值弹栈。值弹栈。2 2)保护现场)保护现场/ /恢复现场恢复现场3 3)数据传输)数据传输58v系统复位后,系统复位后,SP初始化为初始化为07H,所以堆栈实,所以堆栈实际由际由08H开始。开始。v堆栈区可以安排在堆栈区可以安排在 RAMRAM区任意位置,一般不区任意位置,一般不安排在工作寄存器区和可按位寻址的安排在工作寄存器区和可按位寻址的RAMRAM区,区,通常放在通常放在RAMRAM区的靠后的位置。一般区的靠后的位置。一般SPSP初值设初值设为为2FH2FH或更大值。或更大值。596.P0P3端口寄存器v特殊功能寄存器P0P3分别
32、用于控制P0P3的I/O端口操作;v单片机进入复位后,除SP为07H,P0P3为FFH外,其余均为0。603.4 输入/输出端口v对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,亦或接受外部的控制,都是通过I/O口进行的。单片机总共有P0、P1、P2、P3四个8位双向输入输出端口,每个端口都有一个锁存器(即专用寄存器P0P3)、一个输出驱动器和输入缓冲器。4个I/O端口都能作输入输出口用,其中P0和P2通常用于对外部存储器的访问。v在无片外扩展存储器的系统中,这4个端口的每一个都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0
33、口分时作为低8位地址线和双向数据总线。613.4.1 P0口v标准的双向8位并行口,既可以用作通用I/O口,也可以用作地址/数据线;v地址为80H,各位地址为80H87H;v访问片外存储器时,它分时提供低8位地址和8位数据,所以称为“地址/数据总线”,简写为AD0AD7。621.P0口的位电路结构n它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路及控制电路组成。n其输出级在结构上的主要特点是无内部上拉电阻;n从图中可以看出,P0口既可以作为I/O用,也可以作为地址/数据线用。63v输出锁存器用于锁存输出数据;v2个三态输入缓冲器B1和B2分别用于对锁存器和引脚输入数据进行缓冲;v多路转换开
34、关MUX一个输入为锁存器,另一个输入为地址/数据线的反相输出,在内部控制信号的作用下,多路开关MUX可以分别接通锁存器输出和地址/数据线;v2个输出驱动场效应管FET(T1和T2)用于驱动输出的数据。642.P0口的工作原理vP0作为一般I/O口使用时,CPU内部发出控制电平“0”,封锁“与”门,将输出上拉场效应管FET(T1)截止;v同时控制多路开关MUX,将锁存器Q与输出场效应管FET(T2)的栅极接通。(1)P0口用作一般I/O口65 输出口v内部总线与P0口同相,写脉冲加在D触发器CL上,内部总线就会向端口引脚输出数据;vP0内部没有上拉电阻,为高阻状态,所以不能正常地输出高/低电平,
35、因此改组I/O口在使用时务必要外接上拉电阻。66输入口-分读引脚或读锁存器v读引脚时,需要先向对应的锁存器写入读引脚时,需要先向对应的锁存器写入“1”,以,以使使FET截止。截止。v下面一个缓冲器用于读端口引脚数据,当执行一条下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把该三态缓冲器打开,由端口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。这样端口引脚上的数据经过缓冲器读入到内部总线。读引脚:由传送指令MOV实现67读锁存器u通过上面的缓冲器通过上面的缓冲器B1读锁存器读锁存器Q端的状态。端的状态。u有些指令有些指令 如:如:A
36、NL P0ANL P0,A A称为称为“读读- -改改- -写写” 指令,指令,需要读锁存器。需要读锁存器。68准双向口v在读信号之前数据之前,先要向相应的锁存器做写在读信号之前数据之前,先要向相应的锁存器做写1操作的操作的I/O口称为准双向口;口称为准双向口;v从图中可以看出,在读入端口数据时,由于输出驱从图中可以看出,在读入端口数据时,由于输出驱动动FETFET并接在引脚上,如果并接在引脚上,如果T2T2导通,就会将输入的导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写入操作前,应先向端口锁存器写“1 1
37、”,使,使T2T2截止,截止,引脚处于悬浮状态,变为高阻抗输入。这就是所谓引脚处于悬浮状态,变为高阻抗输入。这就是所谓的准双向口。的准双向口。 69(2)P0口用作地址/数据总线v在系统扩展时,在系统扩展时,P0P0端口作为端口作为使用时,使用时,分为:分为:P0P0引脚输出地址引脚输出地址/ /数据信息。数据信息。P0P0引脚输出地址引脚输出地址/ /输入数据输入数据70uP0P0引脚输出地址引脚输出地址/ /数据信息。数据信息。CPUCPU发出控制电平发出控制电平“1”“1”,打开,打开“与与”门,又使多路开关门,又使多路开关MUXMUX把把CPUCPU的地址的地址/ /数据总线与数据总线
38、与T2T2栅极反相接通栅极反相接通,输出地址,输出地址或数据。或数据。由图上可以看出,上下两个由图上可以看出,上下两个FETFET处于反相,构成处于反相,构成了推拉式的输出电路,其负载能力大大增强。了推拉式的输出电路,其负载能力大大增强。71uP0P0引脚输出地址引脚输出地址/ /输入数据输入数据输入信号是从引脚通过输入缓冲器进入内部总线。输入信号是从引脚通过输入缓冲器进入内部总线。 此时,此时,CPUCPU自动使自动使MUXMUX向下,并向向下,并向P0P0口写口写“1”“1”,“读引脚读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部控制信号有效,下面的缓冲器打开,外部数据读入内部总
39、线。总线。723.4.2 P1口vP1口是一个准双向的8位并行口,主要作为通用I/O口使用;v地址为90H,各位地址为90H97H.731.P1口的位电路结构v内部有与电源相连的上拉负载电阻,这种接口输出内部有与电源相连的上拉负载电阻,这种接口输出没有高阻状态。没有高阻状态。v它由一个输出锁存器、两个三态输入缓冲器和输出它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成驱动电路组成74753.4.3 P2口vP2口是一个准双向的8位并行口,既可以作为通用I/O口使用,也可以作为高8位地址线使用;v地址为A0H,各位地址为A0HA7H;v访问片外存储器时,输出高8位地址,即A8A15。76
40、1.P2口的位电路结构77P2口用作通用I/O口v在内部控制信号作用下,在内部控制信号作用下,使多路开关使多路开关MUXMUX倒向锁存倒向锁存器输出器输出Q Q端,构成一个准双向口。其功能与端,构成一个准双向口。其功能与P1P1相同。相同。78P2口用作高8位地址线v在系统扩展片外程序存储器在系统扩展片外程序存储器扩展数据存储器且容量扩展数据存储器且容量超过超过256B (256B (用用MOVX DPTRMOVX DPTR指令指令) )时,时,CPUCPU发出控制电发出控制电平平“1”“1”,MUXMUX在在CPUCPU的控制下与内部地址线相接。的控制下与内部地址线相接。此时,此时,P2P2
41、输出高输出高8 8位地址。位地址。793.4.4 P3口vP3口是一个多功能的准双向8位并行口,它的每一位既可以作为通用I/O口使用,又都具有第二输出功能;v地址为B0H,各位地址为B0HB7H。80812.P3口的工作原理v作为通用I/O口与P1口类似,第二输出功能端为高电平。82P3口作为第二功能引脚v第二输出功能端为输出时,锁存器输出Q为1;v执行与第二功能有关的输入操作时,锁存器和第二输出功能端均置1,FET保持截止,端口引脚的第二功能信号通过右边的缓冲器B3送到第二输入功能端。83第二功能各引脚功能定义:P3.0:RXD串行口输入P3.1:TXD串行口输出P3.2:INT0外部中断0
42、输入P3.3:INT1外部中断1输入P3.4:T0定时器0外部输入P3.5:T1定时器1外部输入P3.6:WR外部写控制P3.7:RD外部读控制843.4.53.4.5读引脚与读端口操作v1.读端口操作v在CPU发出读端口指令时,锁存器的值首先通过读锁存器输入缓冲器进入内部总线,待该值修改后,又重新写到锁存器中。这类指令称为“读改写”操作的指令.v2.读引脚操作v当需要读引脚时,必须先由指令或通过复位置端口锁存器为1,使端口输出FET截止,然后再发读引脚指令。 853.5 CPU时序及时钟电路v为了保证各部件协调一致地同步工作,单片机内部的电路应在惟一的时钟信号控制下严格按时序进行工作。863
43、.5.1 CPU时序及有关概念vCPU执行指令的一系列动作都是在统一的时钟脉冲控制下逐拍进行的,这个脉冲是由单片机控制器中的时序电路发出的。v振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期。是计算机中最基本、最小的时间单位,时钟脉冲是计算机的基本工作脉冲。一个振荡周期定义为1个节拍,用P表示。v状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。 用S表示。v机器周期: 一个机器周期包含 6 个状态周期S1S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。v指令周期: 它是指CPU完成一条操作所需的全部时间。
44、每条指令执行时间都是有一个或几个机器周期组成。80C51系列 系统中, 有单周期指令、双周期指令和四周期指令。873.5.2 振荡器和时钟电路v1、振荡器和时钟电路的工作原理882.时钟电路接法图3-13内部时钟方式 图3-14外时钟源接法 893.5.3 80C51的指令时序图3-15 80C51典型指令的取指令时序 90u按其长度可分为单字节指令、双字节指令和三字节指令。执行这些指令所需要的机器周期数目是不同的:u单字节单机器周期指令、单字节双机器周期指令、双字节单机器周期指令和双字节双机器周期指令,三字节指令都是双机器周期的,而单字节乘除指令则均为四机器周期的。91v单周期指令的执行从S
45、1P2开始, 在S1P2期间读入操作码并把它锁存到指令寄存器中。 双字节指令, 则在同一机器周期的S4期间读出第2个字节。 对于单字节指令在S4处仍有一次读操作, 但这时读出的字节(下一条指令的操作码)是不予考虑的, 而且程序计数器PC也不加1。 对于单周期指令, 在上述任何情况下, 指令都在S6P2期间完成操作。 图中的(a )和(b)分别表示单字节单周期和双字节单周期指令的执行时序。 92v 图(c)表示单字节双周期指令的时序, 单字节双周期指令在两个机器周期内作4次读操作码的操作, 由于是单字节指令, 后3次读操作是无效的。 v图(d)表示执行访问外部数据存储器指令MOVX的时序, 这是
46、一条单字节双周期指令,具有其特殊性。933.6 复位和复位电路v复位是单片机的初始化操作,单片机在启动复位是单片机的初始化操作,单片机在启动运行时,都需要先复位,它的作用是使运行时,都需要先复位,它的作用是使CPUCPU和和系统中其他部件都处于一个确定的初始状态,系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。并从这个状态开始工作。v 80C51 80C51系列单片机的复位引脚系列单片机的复位引脚RST上只要出上只要出现现10 ms以上的高电平,单片机就实现复位。以上的高电平,单片机就实现复位。943.6.3 外部复位电路设计v复位操作有上电自动复位上电自动复位和按键手动复位按键
47、手动复位两种方式 (a) 上电复位 (b)按键脉冲复位 (c)按键电平复位图3-17 复位电路 951.上电自动复位:上电自动复位:是通过外部复位电路的电容充电实现。是通过外部复位电路的电容充电实现。2.按键手动复位:按键手动复位:963.7 80C51系列单片机的低功耗方式v80C51提供两种节电工作方式,即空闲(等待、待机)方式和掉电(停机)工作方式v空闲运作方式:在这种方式下,振荡器仍继续运行,但IDL封锁了去CPU的“与”门,故CPU此时得不到时钟信号。而中断、串行口和定时器等环节却仍在时钟控制下正常运行。掉电方式下(PD=1),振荡器冻结。vPD和IDL均为PCON中PD和IDL触发
48、器的输出端。97v空闲方式和掉电方式是通过对SFR中的PCON(地址87H)相应位置1而启动的。98vSMOD: 波特率倍频位。若此位为1,则串行口方式1、方式2和方式3的波特率加倍。vGF1和GF0: 通用标志位。vPD: 掉电方式位。此位写1即启动掉电方式。此时时钟冻结。vIDL: 空闲方式位。此位写1即启动空闲方式。这时CPU因无时钟控制而停止运作。如果同时向PD和IDL两位写1,则PD优先。v89C51中PCON的复位值为00000B。99空闲(等待、待机)工作方式vCPU执行完置IDL=1(PCON.1)的指令后,系统进入空闲工作方式。v进入空闲方式后,有两种方法可以使系统退出空闲方式:一是任何的中断请求被响应都可以由硬件将PCON.0(IDL)清0而中止空闲工作方式。另一种退出空闲方式的方法是硬件复位,100掉电(停机)工作方式v当CPU执行一条置PCON.1位(PD)为1的指令后,系统进入掉电工作方式。v退出掉电方式的唯一方法是由硬件复位,复位后将所有特殊功能寄存器的内容初始化,但不改变片内RAM区的数据。v在掉电工作方式下,VCC可以降到2 V,但在进入掉电方式之前,VCC不能降低。而在准备退出掉电方式之前,VCC必须恢复正常的工作电压值,并维持一段时间(约10 ms),使振荡器重新启动并稳定后方可退出掉电方式。