补充灌电流与拉电流.ppt
第2章 89C51单片机的结构和原理,2.1 89C51单片机的内部结构及特点2.2 89C51单片机引脚及其功能2.3 89C51单片机存储器配置2.4 时针电路及89C51CPU时序2.5 复位及复位电路2.6 89C51的低功耗工作方式2.7 输入/输出端口结构,2.1 89C51单片机的内部结构及特点,MCS-51U单片机是由INTEL公司研发的。授权生产的公司有ATMEL、PHILIPS和SST等公司。(AT89C51,P89C51,STC89C51)89C51芯片的特点是:低功耗、高性能、闪速可电改写的ROM、价格便宜。近年来得到极其广泛的应用。,下面以89C51单片机为典型机,介绍该芯片内部的硬件资源、各个功能部件的结构及原理。,89C51单片机组成原理,不同型号MCS-51单片机的CPU处理能力和指令系统完全兼容,只是存储器和I/O接口的配置有所不同。,MCS-51单片机的基本组成,89C51单片机组成原理,89C51单片机的组成:1.8位CPU;片内256字节RAM;片内4KB的Flash ROM;4.4个8位并行 I/O接口;5.片内2个16位定时器/计数器6.片内5个中断源、2个中断优先级的中断处理系统7.片内1个全双工串行I/O口8.具有节电工作方式9.最高允许振荡频率为24MHz(8051为12MHz),2.1.2 MCS-51单片机内部结构,运算器,控制器,振荡器,2.1.2 MCS-51单片机内部结构,各部分的功能:,一、中央处理单元(CPU),CPU是单片机的核心,是计算机的控制和指挥中心,由运算器和控制器等部件组成。,一、中央处理单元(CPU),1.运算器有:1个能进行8位算术运算和逻辑运算的单元ALU;8位的暂存器1、暂存器2;8位的累加器ACC;寄存器B;程序状态寄存器PSW;布尔处理器C等组成。,ALU:可对4位(半字节)、8位(一字节)和16位(双字节)数据进行算术和逻辑操作。,ACC:累加器,在指令中用助记符A来表示。它是最繁忙的一个寄存器。,PSW:程序状态寄存器(8位)。是一个标志寄存器,用来指示指令执行后的状态信息。PSW中的各位状态可供程序查询和判别。,B:寄存器(8位)。在乘、除运算时,运算前B用来存放一个操作数,运算完后用来存放一部分运算结果;当不做乘、除运算时,则作为一般的寄存器使用。,C:布尔处理器(1位)。它是以PSW中的进位标志位CY作为它的累加器,专门用于处理位操作。,2.控制器,包括:程序计数器PC、指令寄存器IR、指令译码器ID、振荡器及时钟电路。,程序计数器PC:16位,由两个8位的计数器PCH(高8位)和PCL(低8 位)组成。它是程序的字节地址计数器。PC存放的内容是即将要执行的下一条指令的地址。故,改变PC的内容就可以改变程序执行的方向。PC可对64KB的ROM直接寻址,也可对89C51片内RAM寻址。,指令寄存器IR、指令译码器ID:由PC中的内容指定ROM(程序存储器)的地址,取出来的指令经IR送至ID,由ID对指令译码并送PLA产生一定序列的控制信号,以执行指令所规定的操作。,振荡器及时钟电路:89C51片内有振荡电路,只需外接晶振和频率微调电容(2个30皮法左右),频率为:024MHz.(8051为12MHz)。,二、存储器,1.程序存储器(ROM)89C51、8751的片内ROM容量为4KB,地址从0000H开始,到0FFFH。用于存放程序和表格常数。,89C51片内有:4KFlash程序存储器(ROM),它只能读不能写;数据存储器(RAM),它可以读、写。,2.数据存储器(RAM)8031、89C51、8751的片内RAM容量为128B,地址从00H开始,到7FH。用于存放运算的中间结果、数据暂存及数据缓冲等。另外,在RAM的128B单元中还有特殊功能寄存器(SFR),地址为80HFFH.详细内容将在后面介绍。,三、I/O接口,89C51有4个8位的并行接口,即:P0P3。它们都是准双向口(为什么是准双向口?后面会解释)。每个端口各有8根I/O线,均可作输入/输出用。89C51有1个可编程的全双工串行口,即RXD(引脚P3.0,接收)和TXD(引脚P3.1,发送).P0P3口的4个锁存器同RAM统一编址,可以把I/O作为一般特殊功能寄存器来寻址(所谓“寻址”,就是寻找指令中操作数或操作数所在的地址)。,2.2 89C51单片机引脚及其功能,图2-3 89C51的引脚结构,1I/O口线功能 4个8位并行 I/O 接口引脚P0.0P0.7、P1.0P1.7、P2.0P2.7 和 P3.0P3.7。除P1口外,其它为多功能引脚,可自 动切换用 作数据总线、地址总线、控制总线或I/O 接口外部引脚。,2.2 89C51单片机引脚及其功能,只有熟悉单片机的引脚功能,才能进行硬件电路的设计!,2.2 89C51单片机引脚及其功能,2控制线ALE/PROG:ALE 地址锁存允许信号端。CPU访问片外存储器时,该引脚输出信号作为锁存低8位地址的控制信号。PROG是对片内带有4KB EPROM的8751编程写入时的编程脉冲输入端。用示波器查看ALE端,若有脉冲信号输出,则说明89C51基本上是好的。,2控制线,PSEN:外部ROM读选通信号端。在访问片外ROM时(该引脚接片外ROM 的OE端),定时输出负脉冲作为读片外ROM的选通信号。检查一个89C51最小系统上电后能否正常工作,可用示波器查看该引脚有无脉冲输出,若有,则说明基本上工作正常。EA/VPP:EA程序存储器选择信号端。VPP固化编程电源输入端(12V)。,2.2 89C51单片机引脚及其功能,当EA引脚接高电平(EA=1)时,CPU只访问片内ROM/EPROM,并执行片内程序存储器中的指令,当PC(程序计数器)的值超过0FFFH(89C51、8751为4KB)时,将自动转去执行片外ROM内的程序。,当EA引脚接低电平(接地,EA=0)时,CPU只访问片外ROM/EPROM,并执行片外程序存储器中的指令,而不管片内是否有ROM。故对于无片内ROMR 的8031、8032,需要外扩EPROM,此时,EA引脚必须接地。,3.复位:,RST/VPD:复位信号端和后备电源输入端。输入10ms以上高电平脉冲,单片机复位。VPD使用后备电源,可实现掉电保护。,复位电路:1)上电复位 2)外部信号复位,4.电源 工作电源:VCC(+5V)VSS(即GND端为接地端)。,5.外接晶振引脚,XTAL2 接外部晶振和微调电容的一端。若须采用外部时钟电路时,该引脚悬空。要查看89C51的振荡电路是否工作,可用示波器查看该引脚有无脉冲信号输出,若有则说明振荡器工作正常。XTAL1 接外部晶振和微调电容的另一端。若须采用外部时钟电路时,该引脚是外部时钟的输入端。,6.输入/输出端口,P0口(P0.0P0.7):P0口是一个漏极开路的8位准双向I/O端口。每一位口线能驱动8个LS型TTL负载。当P0口作为输入口使用时,要先向端口写“1”。而作为输出口使用时则不需要。P0口内部无上拉电阻,故当作为输出口使用,需输出高电平时,应加外部上拉电阻。,在Proteus ISIS中做实验:1)未加上拉电阻,观察LED;2)加入上拉电阻,观察LED。,1、若P0.1为高电平时:LED1亮2、若P0.5为低电平时:LED2不亮,;上拉电阻实验程序 ORG 0000H;ORG是汇编伪指令,通电后单片机从0000H单元开始取指令 AJMP L1;跳转到标号为L1的指令 ORG 0030H;从0030H单元放第1条指令L1:SETB P0.1;P0.1为高电平 SETB P0.5;P0.5为高电平 SJMP$;程序在此处原地等待,防止程序跑飞 END;汇编伪指令,意思是(机器)汇编结束,在Proteus ISIS中做个实验1)未加上拉电阻,观察LED;2)加入上拉电阻,观察LED。,6.输入/输出端口,P0口还是复用端口,当CPU访问片外存储器时,P0口分时提供低8位的地址和8位数据。,6.输入/输出端口,P1口(P1.0P1.7):P1口是一个带内部上拉电阻的8位准双向I/O端口。每一位口线能驱动8个LS型TTL负载。当P1口作为输入口使用时,要先向端口写“1”。而作为输出口使用时则不需要。,P2口(P2.0P2.7):P2口是一个带内部上拉电阻的8位准双向I/O端口。每一位口线能驱动4个LS型TTL负载。当P2口作为输入口使用时,要先向端口写“1”。而作为输出口使用时则不需要。当CPU访问片外存储器时,P2口输出地址的高8位。,P3口(P3.0P3.7):P3口是一个带内部上拉电阻的8位准双向I/O端口。每一位口线能驱动4个LS型TTL负载。P3口作为输入口使用时,要先向端口写“1”。而作为输出口使用时则不需要。P3口还具有第二功能。,实例(输入/输出),水位的电信号从P1.0和P1.1输入,即P1.0和P1.1输入口使用。水位的电信号要从P1.0和P1.1口输入到CPU中,必须先向P1.0/P1.1的“端口锁存器”“写1”(称为输入的准备动作)。P1.2和P1.3是作输出口使用。具体是:P1.2用于控制水泵电机的启动与停止;P1.3用于LED的点亮与熄灭(即LED作水泵电机的启动/停止的信号灯)。作为输出口使用时,不用向其“端口锁存器”“写1”。I/O口线的这一特点是因为单片机内部的电路结构所确定的!,P3口作为第二功能端口时的功能表,P21.表2-1,物理结构(哈佛结构),89C51存储器,程序存储器ROM,数据存储器RAM,片内程序存储器,片外程序存储器,片内数据存储器,片外数据存储器,2.3 89C51存储器配置,一、物理空间与地址,物理上4个存储器地址空间:片内/片外程序存储器空间 片内/片外数据存储器空间逻辑上3个存储器地址空间:64KB 程序存储器(片内、片外统一编址0000HFFFFH)256B 片内数据存储器(地址:00HFFH)64KB 片外数据存储器(地址:0000HFFFFH),这三个存储空间的地址是重叠的,用指令来区别这三个不同的逻辑空间:当CPU访问片内、片外ROM时,用“MOVC”指令;当访问片外RAM时,用“MOVX”指令;访问片内RAM时,用“MOV”指令。,二、程序和数据存储器逻辑空间,普林斯顿结构:程序和数据共用一个存储器逻辑空间,统一 编址。哈佛结构:程序与数据分为两个独立存储器逻辑空间,分开编址。,2.3.1 程序存储器(ROM)地址空间,ROM是用来存放编好的程序和表格常数。89C51有64K的Flash ROM。ROM通过16位的程序计数器(PC)寻址,寻址空间为64K。但不能使程序从ROM中转移到数据存储器(RAM)中去。,2.3.1 程序存储器(ROM)地址空间,用户角度1、片内、外统一编址的64K程序存储器地址空间。CPU访问片内、片外ROM指令用“MOVC。2、64K的片外数据存储器地址空间。访问片外RAM指令用“MOVX”。3、256字节的片内数据存储器地址空间。访问片内RAM指令用“MOV”。上述三个存储空间地址是重叠的,89C51的指令系统采用不同的数据传送指令符号。,2.3.1 程序存储器(ROM)地址空间,寻址方式:1、当 EA=“1”时:89C51的PC在00000FFFH范围内执行片内ROM中的程序,当指令地址超过0FFFH 后就自动转向片外ROM中取指令。,2、当 EA=”0”时:89C51片内ROM不起作用,CPU只能从片ROM中取指令。可以从 0000H 开始寻址。由于8031片内不带ROM,所以使用时必须 EA=”0”。,3、89C51从片内ROM和片外ROM取指的速度相同。,2.3.1 程序存储器(ROM)地址空间,程序存储器中留有一些存储单元给系统使用,如下表:,P26.表2-2 保留的存储单元,ROM中地址从0000H0002H共3个单元留给单片机上电复位后的引导程序。89C51上电复位后PC的内容为0000H,故CPU总是从ROM中的0000H单元开始执行程序。,放“跳转指令”,2.3.1 程序存储器(ROM)地址空间,P26.表2-3 中断矢量地址表,例如,当外部中断引脚INT0(P3.2)有效,即P3.1=0时,即引起中断申请,CPU响应中断后自动将地址0030H(INT0中断的入口矢量地址)装入到PC中,则程序就自动转向到0003H单元执行。,2.3.1 程序存储器(ROM)地址空间,执行外部程序(即访问片外ROM时)时的硬件连接如图2-5所示。指令:“MOVC”。,图中,单片机EA引脚接地代表何意?,2.3.2 数据存储器(RAM)地址空间,RAM用来存放运算的中间结果、数据暂存和缓冲、标志位等。片内RAM的存储空间为256B,分为:低128B(地址:00H7FH),是真正的RAM区;高128B(地址:80HFFH),是特殊功能寄存器区(SFR)。,2.3.2 数据存储器(RAM)地址空间,1.片内RAM 工作寄存器区:(4组,每一组有8个工作寄存器R0R7,可通过PSW中的RS1、RS0设置加于选择)字节地址:00H1FH 位寻址区:字节地址:20H2FH 位地址为:00H7FH 数据缓冲区/堆栈区:字节地址:00H7FH 一般使用30H7FH,低128B,2.片外RAM,89C51片内RAM只有128B,若需要扩展片外RAM,则可外接静态RAM芯片如6116(2K)、6264(8K)、62256(32K)。硬件连接如图2-6所示。CPU访问片外RAM时,用指令:“MOVX”。当执行该指令时,RD和WR的引脚信号有效。,图中,89C51的引脚EA接高电平(即电源+Vcc)是何含义?,3.特殊功能寄存器SFR,占用字节地址:80HFFH位寻址寄存器:其字节地址可被8整除。专用寄存器:A、B、PSW、DPTR、SP I/O接口寄存器:P0、P1、P2、P3、SBUF、TMOD、TCON、SCON,高128B,访问SFR只能用直接寻址方式。,部分特殊功能寄存器,程序状态寄存器PSW(D0H)格式:,进位位标志位,半进位标志位,用户标志位,工作寄存器组选择控制位,奇偶校验标志位,未定义,溢出标志位,复习:第1章讲过“进位”与“溢出”,进位,例如在加法运算中,每位数等于基数时向前一位数进一,这叫进位溢出是指有符号数的运算结果超出了数(补码)-128+127的表示范围,破坏了符号位.如:105+50=69H+32H=155。,CY(PSW.7)进位/借位标志位。在执行加(减)运算时,若最高位(第7位)向前有进位(或借位)位,则CY自动置1;否则CY自动清0。它也是布尔处理器的位累加器,可用于布尔操作。AC(PSW.6)半进位/借位标志位。在执行加(减)运算时,第3位向第4位有进位(或借位),则AC自动置1,否则AC自动清0。F0(PSW.5)可由用户定义的标志位。,OV(PSW.2)溢出标志位。,累加器在进行有符号数(-128+127)运算时即进行补码运算时有溢出(超出-128+127范围)时,OV自动置1;无溢出时OV自动清0。在MCS-51中,无符号数进行乘法运算时,若两数的乘积超过255时,OV=1,否则为0;当执行除法运算时,若除数为0时,则OV=1,否则OV为时0。(P66.),如何判断是否溢出,例如:有符号数:+105+(+50)=+155。69H+32H=9BH,在“伟福”编释软件中,验证OV位:69H+32H ORG 0000H;从0000H单元放跳转指令(即)AJMP L1;AJMP L1)ORG 0030H;从0030H开始存放下面的第1条指令 L1:MOV A,#69H;69H存入累加器A中 ADD A,#32H;69H+32H的结果存入到A中 SJMP$;原地踏步 END,若无符号数:105+50=155。69H+32H=9BH=916+11=155。计算是正确的。虽然OV=1(溢出),可不予理会。因为这个溢出指的是有符号数:+105+(+50)=+155,运算时的溢出。,Proteus验证实验,两个补码数相加,若有溢出,则黄LED亮;若无溢出,则绿LED亮。试画出硬件电路图并编写程序,并在Proteus ISIS中进行仿真验证。,ORG 0000H AJMP MAIN ORG 0050HMAIN:SETB P1.1 SETB P1.5 MOV A,#XXH ADD A,#XXH JB OV,L1;若OV=1,转L1 CLR P1.5;OV=0,0P1.5,即绿LED亮 AJMP L2 L1:CLR P1.1;溢出,0P1.1,即黄LED亮 L2:SJMP$END,如:69H+32H,即真值:+150(+50);53H+21H,即真值:+83+(+33);7AH+0B2H,即真值:+122+(-78)。,ORG 0000H AJMP MAIN ORG 0050HMAIN:SETB P1.1 SETB P1.5 MOV A,#XXH ADD A,#XXH MOV 20H,A;结果存入20H单元中 JB OV,L1 CLR P1.5 AJMP L2 L1:CLR P1.1 MOV R0,#21H MOV A,20H ANL A,#0FH MOV R0,A;低4位存入21H单元中 INC R0 MOV A,20H SWAP A ANL A,#0FH MOV R0,A;高4位存入22H单元中 MOV DPTR,#TAB MOV A,22H MOVC A,A+DPTR MOV P2,A;显示十位 SETB P1.6 MOV A,21H MOVC A,A+DPTR MOV P3,A;显示个位 SETB P1.7 L2:SJMP$TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH END,若要将计算结果(16进制)显示出来。则需把计算值进行拆字(P95例4-3),再由7段LDE数码管显示(P241)。,RS1(PSW.4)、RS0(PSW.3)工作寄存器组选择位。PSW.1 未定义。P(PSW.0)奇偶标志位。P=1表示累加器中“1”的个数为奇数 P=0表示累加器中“1”的个数为偶数 CPU随时监视着ACC中的“1”的个数,并反映在PSW中。,部分特殊功能寄存器,表2-8 RS0,RS1的组合关系,部分特殊功能寄存器,栈指针SP(81H)SP的内容可指向89C51片内00H7FH RAM的任何单元。系统复位后,SP初始化为07H,即指向07H的RAM单元。,堆栈“先进后出”原则堆栈的操作:PUSH(数据压入);POP(数据弹出)。,在使用堆栈之前,先给SP赋值,即规定堆栈的起始位置,称为“堆底”。89C51的堆栈指针SP是一个双向计数器:进栈时,SP的内容自动+1;出栈时自动-1。,堆栈的操作,MOV SP,#60H,堆栈区,堆栈是片内RAM中临时开辟的暂存区,堆栈主要是为子程序调用和中断操作而设立的。其具体功能有两种:保护现场和保护断点。计算机无论是执行子程序还是执行中断操作最后都要返回主程序,因此计算机在转去执行这些程序之前,必须考虑其返回问题。这就要预先把主程序的断点保护起来,为程序的正确返回作准备。那么,把断点和现场内容保护在哪里?这就必须保护在堆栈内,用户可以指定内部RAM的最高若干字节做为堆栈区。在初始化程序中,可以对堆栈指针SP写入栈底的地址,于是从SP指定的栈底直到7FH单元都是堆栈区。例如MOV SP,#5FH。那么,从60H7FH单元都是堆栈区。,部分特殊功能寄存器,数据指针DPTR(83H、82H)DPTR是一个16位的特殊功能寄存器,其高位字节(高8位)寄存器用DPH表示(地址为:83H),低位字节(低8位)寄存器用DPL表示(地址为:82H)。DPTR既可以作为一个16位寄存器使用,也可以作为两个独立的8位寄存器DPH和DPL来使用。DPTR主要用来存放16位的地址,以便对64K片外RAM作间接寻址。,2.4 CPU时序,2.4.1 片内振荡器及时钟信号的产生89C51内部有一个高增益反相放大器,用来构成振荡器。在XTAL1引脚(19)和XTAL2引脚(18)间跨接一个石英晶体(即晶振)及两个电容(30皮法左右)就可构成稳定的自激振荡器。如果用多片89C51同时工作,则一般采用外部振荡源方式,以便于同步工作。此时,XTAL2引脚(18)悬空。,而XTAL1引脚(19)作外部时钟信号输入的输入端。,时钟,时钟频率:范围要求在1.2MHz24MHz 之间。,基本时序单位:1.振荡周期:晶振的振荡周期。2.状态周期:振荡周期2分频,也称时钟周期。3.机器周期:完成一个基本操作所需要的时间。一个机器周期包括12 个时钟周期。4.指令周期:执行一条指令的时间。以机器周期为单位:单周期、双周期和四周期指令。INTEL对每一条指令都给出了它的指令周期数,MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。,时钟,2.4 CPU取指、执指时序,CPU取指、执指时序,2.5 复位及复位电路,2.5.1 复位操作复位是单片机的初始化操作。主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。,表2-9 一些寄存器的复位状态,2.5.2 复位信号及其产生,MCS-51单片机复位(RST高电平2个机器周期)任何单片机在工作之前都要有个复位的过程,复位是什么意思呢?对单片机来说,是程序还没有开始执行,是在做准备工作-初始状态。显然,准备工作不需要太长的时间,复位需要不少于24个时钟周期的时间就可以了。,2.5.3 复位电路,只要在单片机的RST引脚上加上高电平(2个机器周期),就可以了。为了达到这个要求,可以用很多种方法,右图为其中一种方法。,2.6 89C51单片机的低功耗工作方式,89C51提供二种节电方式,即空闲(待机)方式和掉电(停机)方式。它们是通过对电源控制寄存器PCON的“PD”位和“IDL”位的设置来实现的。,2.6 89C51单片机的低功耗工作方式,例如,若使89C51进入“空闲方式”,则只要设置IDL=1。指令为:MOV PCON,#0000 0001B或写成:MOV PCON,#01H,如若使89C51进入“停机方式”,则要设置PD=1。指令为:MOV PCON,#0000 0010B或写成:MOV PCON,#02H,2.6 89C51单片机的低功耗工作方式,注意:如果PD位和IDL位同时置“1”,即指令:MOV PCON,#0000 0011B(或:MOV PCON,#03H)时,则PD优先(即为停机方式优先)。当89C51复位时,PCON的值为:0XXX0000B。,空闲(待机)方式的特点,系统在空闲工作方式时,CPU内部状态维持不变,即堆栈指针SP、程序计数器PC、程序状态字PSW、累加器ACC所有的内容不变,端口状态不变。ALE和PSEN保持高电平。系统退出空闲方式的方法:任何的中断请求被响应都可由硬件使IDL位清0,使系统中止空闲工作方式;由硬件复位(即按复位键)。,89C51进入空闲方式时,CPU此时得不到时钟信号,但中断、串行口、定时器等仍在时钟控制下正常运行。,停机(掉电)方式的特点,89C51在停机方式时,内部振荡器停止工作(即没有振荡时钟),故所有的功能部件都停止工作。内部RAM区和SFR中的内容被保留,而端口的输出状态值都保存在对应的SFR中。ALE和PSEN都为低电平。退出停机方式的唯一方法:硬件复位。复位后所有SFR中的内容被初始化,但片内RAM区的数据不变。在停机工作方式下,Vcc可降到2V,退出掉电方式之前,Vcc必须恢复正常的工作电压值。,空闲方式和停机方式的原理,2.7 输入/输出端口结构,场效应管(复习)当G=0 时,场效应管截止;当G=1 时,场效应管导通。,2.7.1 P0口,下图为P0口的某位P0.n(n=07)结构图,它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路及控制电路组成。P0口既可以作为I/O用,也可以作为地址/数据线用。,三态缓冲器,与门,多路开关,一、P0口作为一般I/O口使用,P口用作输出口时CPU发出控制电平“0”(即:硬件自动使“控制”=0)封锁“与门”,将输出上拉场效应管T1截止,同时使多路开关MUX把锁存器的输出端 Q与场效应管T2栅极接通。,P0口用作输入口时,输入时-分读引脚或读锁存器。读引脚:由传送指令(MOV)实现。下面的缓冲器2用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把三态缓冲器2打开,这样端口引脚上的数据经过缓冲器读入到内部总线。,第1步:输入时,先向锁存器“写”1。指令为:SETB P0.n 或:MOV P0,#0FFH,1,1,0,0,T2截止,第2步:引脚信号,“读引脚”信号有效,缓冲器2打开,P0口用作输入口时,输入时-分读引脚或读锁存器读锁存器:有些指令 如:ANL P0,A 称为“读-修改-写”指令,需要读锁存器。缓冲器1用于读端口锁存器数据。,原因:,如果此时该端口的负载恰是一个晶体管基极,且原端口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0”电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能发生的错误。,准双向口,从图中可以看出,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写“1”,使T2截止,引脚处于悬浮状态,变为高阻抗输入。这就是所谓的准双向口。,二、P0口作为地址/数据总线使用,在系统扩展时,P0端口作为地址/数据总线使用时。执行“MOVX”指令或 EA=0 时执行“MOVC”指令时,内部硬件自动使“控制”=1。,P0口用作输出地址/数据总线。,P0引脚输出地址/输入数据,输入信号是从引脚通过输入缓冲器进入内部总线。此时,CPU自动使MUX向下,并向P0口写“1”,“读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部总线。,2.7.2 P1口,它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成-准双向口。,2.7.3 P2口,P2口作为普通I/O口CPU发出控制电平“0”,使多路开关MUX倒向锁存器输出Q端,构成一个准双向口。其功能与P1相同。,2.7.3 P2口,2.P2口作为地址总线在系统扩展片外程序存储器扩展数据存储器且容量超过256B(用MOVX DPTR指令)时,CPU发出控制电平“1”,使多路开关MUX倒内部地址线。此时,P2输出高8位地址。,2.7.4 P3口,P3口是多功能端口。一、作通用I/O口用:输出:当W=1时(由内部硬件自动置W为高电平),输出Q端的信号(即输出内部数据),输入时:先向端口写“1”,即锁存器Q端为“1”。,2.7.4 P3口,P3口的第二功能,2.7.4 P3口,二、P3口作为第二功能(内部硬件自动使Q=1)此时引脚部分输入(Q=1、W=1)。,例如:P3.0作为串行口输入,2.7.4 P3口,P3口作为第二功能(Q=1)部分输出(Q=1、W 输出)。,例如:P3.1作为串行口输出,2.7.5 端口的负载能力和接口要求,P0口的输出级无上拉电阻。当输出要去驱动NMOS(N沟道增强型场效应管)等负载时,需外接上拉电阻,这时才有高电平输出;作为输入用时,需向端口写“1”;作为地址/数据总线用时,无需外接上拉电阻。P0口的每一位口线可驱动8个LS型TTL负载。,1.P0口,2.P1P3口P1P3口都是准双向口,作为输入用时,必须向相应的端口写“1”;P1P3口内部有上拉电阻,其每一位口线可驱动4个LS型TTL负载。,2.8 89C51单片机最小系统的电路图,图中,EA引脚为什么要接高电平(即接Vcc)?,简画法复位电路可省略不画。时钟电路中晶振及微调电容可省略不画。单片机引脚可不按实物引脚顺序排列。,补充,“灌电流”与“拉电流”,“灌电流”,称为:低电平驱动,“灌电流”与“拉电流”,“拉电流”,称为:高电平驱动,P0口的驱动能力较大,当其输出高电平时,可提供400A的电流(“拉电流”);当其输出低电平(0.45V)时,则可提供3mA左右的“灌电流”。P1、P2、P3口的每一位只能驱动4个LSTTL,即可提供的电流只有P0口的一半。所以,任何一个口要想获得较大的驱动能力,只能用低电平输出(低电平驱动)。,P1、P3口的驱动能力有限,在低电平输出时,一般也只能提供不到2mA的“灌电流”。,本章小结:,熟悉98C51单片机的基本组成。记住89C51单片机主要引脚功能。记住输入/输出端口的特点、功能。熟悉并记住89C51单片机存储器的配置。记住程序状态寄存器PSW各位的排列及其含义。记住栈指令SP、堆栈的概念及堆栈操作。记住PC、DPTR。记住基本时序定时单位(振荡周期、状态周期、机器周期、指令周期)。记住各特殊功能寄存器的复位值。记住输入/输出端口的使用原则。,作业:,P48.第15、16、22题。,第2章 完,