第二章80C51单片微机的基本结构微型计算机的基本组成有三部分,即CPU+存储器+I/O接口。80C51内部结构如图2-1所示。CPU(算术逻辑单元ALU、控制器)存储器-程序存储器ROM、数据存储器RAM定时器/计数器并行I/O口P0~P3串行口中断系统定时控制逻辑电路等2.180C51单片微机的内部结构微型计算机的基本组成有三部分,即CPU+存储器+I/O接口。80C51内部结构:图2-1CPU(算术逻辑单元ALU、控制器)存储器-程序存储器ROM、数据存储器RAM定时器/计数器并行I/O口P0~P3串行口中断系统定时控制逻辑电路等参考图这些部件通过内部总线连接起来,基本结构仍然是通用CPU加上外围芯片的结构模式,但采用了特殊功能寄存器(SFR)进行集中控制的方法。1.中央处理器单片微机的核心,主要完成运算和控制功能,又增设了“面向控制”的处理功能,增强了实时性。2.程序存储器80C31:内部没有程序存储器80C51:内部带ROM87C51:内部带EPROM单片微机的程序存储器有以下几种结构形式:⑴片内只读存储器程序必须在制作单片微机时写入,一次性固化。只适用于程序已成熟、定型,且批量很大的场合。并且只能在厂家定制完成。⑵片内可编程的ROM片内可编程的ROM可直接由用户进行编程。·紫外线可擦除型ROM:EPROM型单片微机(如87C51)。EPROM需用紫外线擦除,必须脱机固化,不能在线改写。·电可擦除型ROM:EEPROM,称为Flash单片微机(如89C51)。应用系统的现场调试。EPROM和EEPROM都是可以多次擦除和编程的,或称MTP的ROM。·OTP的ROM,仅允许用户一次编程。⑶片外只读存储器由于受芯片集成度的限制,片内只读存储器一般存储容量较小。利用单片微机的并行扩展技术可以外扩片外只读存储器。3.数据存储器(RAM)存储程序在运行期间的工作变量和数据,称为数据存储器。一般在单片微机内部设置一定容量(64B~384B或更大容量)的RAM,以加快单片微机运行的速度,还可以使存储器的功耗下降很多。常把寄存器(如工作寄存器、特殊功能寄存器、堆栈等)在逻辑上划分在片内RAM空间中,可将单片微机内部RAM看成是寄存器堆,有利于提高运行速度。4.并行I/O口提供许多功能强、使用灵活的并行输入/输出引脚,用于检测与控制。●有些I/O引脚还具有多种功能,比如可以作为数据总线的数据线、地址总线的地址线、控制总线的控制线等。●单片微机I/O引脚的驱动能力也逐渐增大,甚至可以直接驱动外扩的LED显示器。5.串行I/O口实现与某些终端设备进行串行通信,或者和一些特殊功能的器件相连的能力,甚至用多个单片微机相连构成多机系统。6.定时器/计数器用于精确的定时,或者需对外部事件进行计数80C51有两个16位的定时器/计数器,80C52有三个16位的定时器/计数器。7.中断系统具有内、外共五个中断源,两个中断优先级。8.定时电路及元件计算机的整个工作是在时钟信号的驱动下,按照严格的时序有规律地一个节拍一个节拍地执行各种操作。单片微机内部设有定时电路,只需外接振荡元件即可工作。外接振荡元件一般选用晶体振荡器,或用价廉的RC振荡器,也可用外部时钟源,作为振荡元件。有的单片微机将振荡元件也集成在芯片内部。80C51/80C52的封装及逻辑图如图2-2所示。若不需要通过并行总线扩展芯片,常采用20引脚甚至仅14引脚的单片微机,如Atmel公司的89C1051/2051/4051,或Philips公司的P87LPC764。它们的封装及引脚见图2–3。2.280C51单片微机的引脚及其功能按引脚的功能可分为三部分:1.电源和晶振·Vcc:运行和程序校验时接电源正端。·Vss:接地。·XTAL1:输入到单片微机内部振荡器的反相放大器。当采用外部振荡器时,对HMOS单片微机,此引脚应接地;对CHMOS单片微机,此引脚作驱动端。·XTAL2:反相放大器的输出,输入到内部时钟发生器。当采用外部振荡器时,XTAL2接收振荡器信号,对CHMOS,此引脚应悬浮。2.I/O·P0:8位、漏极开路的双向I/O口。当使用片外存储器(ROM及RAM)时,作低8位地址和8位数据总线分时复用。·P1:8位、准双向I/O口。对于80C52,P1.0:T2,是定时器2的计数输入端;P1.1:T2EX,是定时器2的外部输入端。·P2:8位、准双向I/O口。当使用片外存储器(ROM及RAM)时,输出高8位地址。·P3:8位、准双向I/O口,具有内部上拉电路。P3提供各种替代功能。在提供这些功能时,其输出锁存器应由程序置1。·串行口:P3.0:RXD串行输入口。P3.1:TXD串行输出口。·中断:P3.2:INT0外部中断0输入。P3.3:INT1外部中断1输入。·定时器/计数器:P3.4:T0的外部输入。P3.5:T1的外部输入。·数据存储器选通:P3.6:WR,片外数据存储器或I/O端口写选通。P3.7:RD,片外数据存储器或I/O端口读选通。3.控制线·RST:复位输入信号。在振荡器工作时,在RST上作用两个机器周期以上的高电平,将单片微机复位。·EA/Vpp:片外程序存储器访问允许信号。●EA=1,选择片内程序存储器●EA=0,则程序存储器全部在片外。使用80C31时,EA必须接地,使用8751编程时,EA施加21V的编程电压。●ALE/PROG:地址锁存允许信号。◇在访问片外存储器或I/O时,用于锁存低8位地址,以实现低地址与8位数据的隔离。◇ALE以1/6的振荡频率固定速率输出,可作为对外输出的时钟或用作外部定时脉冲。●PSEN:片外程序存储器读选通信号。在从片外程序存储器取指期间,在每个机器周期中,当PSEN有效时,程序存储器的内容被送上P0口(数据总线)。。2.380C51CPU的结构和特点中央处理器CPU是单片微机内部的核心部件,主要包括控制器、运算器和工作寄存器及时序电路。2.3.1中央控制器识别指令,并根据指令性质控制计算机各组成部件进行工作的部件,与运算器一起构成中央处理器。●在80C51中,控制器包括程序计数器PC、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路及定时控制逻辑电路。功能:控制指令的读出、译码和执行,对指令的执行过程进行定时控制,并根据执行结果决定是否分支转移。1.程序计数器PC(ProgramCounter)一个独立的计数器,不属于内部的特殊功能寄存器。●存放下一条将要从程序存储器中取出的指令的地址。●PC基本的工作过程是:读指令时,PC将其中的数作为所取指令的地址输出给程序存储器,然后程序存储器按此地址输出指令字节,同时PC本身自动加1,指向下一条指令地址。PC变化的轨迹决定程序的流程。●在执行条件转移或无条件转移指令时,PC将被置入转移的目的地址,程序的流向发生变化。●在执行调用指令或响应中断时,将子程序的入口地址或者中断矢量地址送入PC,程序流向发生变化。2.数据指针DPTR16位特殊功能寄存器.作为片外数据存储器或I/O寻址用的地址寄存器。●既可以作为一个16位寄存器处理,也可以作为两个8位寄存器处理,其高8位用DPH表示,低8位用DPL表示。●访问片外数据存储器或I/O的指令为:MOVXA,@DPTR读MOVX@DPTR,A写●作为访问程序存储器时的基址寄存器。寻址程序存储器中的表格、常数等单元,而不是寻址指令。MOVCA,@A+DPTRJMP@A+DPTRPC与DPTR:⑴都是与地址有关的16位的寄存器。PC与程序存储器的地址有关,DPTR与数据存储器或I/O的地址有关。作为地址寄存器使用时,PC与DPTR都是通过P0和P2口输出的。PC的输出与ALE及PSEN信号有关;DPTR的输出,则与ALE、WR、RD信号有关。⑵PC只能作为16位寄存器对待,是不可以访问的。DPTR可以作为16位寄存器,也可以作为两个8位特殊功能寄存器,DPTR是可以访问的。3.指令寄存器IR、指令译码器及控制逻辑●IR是用来存放指令操作码的专用寄存器。执行程序时,首先进行程序存储器的读操作,也就是根据程序计数器给出的地址从程序存储器中取出指令,送指令寄存器IR,IR的输出送指令译码器;●指令译码器对该指令进行译码,译码结果送定时控制逻辑电路,如图2-4所示。●定时控制逻辑电路则根据指令的性质发出一系列定时控制信号,控制计算机的各组成部件进行相应的工作,执行指令。●条件转移逻辑电路主要用来控制程序的分支转移。转移条件分为两部分:内部条件,程序状态标志位(PSW)和累加器的零状态;外部条件,F0和所有位寻址空间的状态。2.3.2运算器运算器主要用来实现对操作数的算术逻辑运算和位操作的。●对传送到CPU的数据进行加、减、乘、除、比较、BCD码校正等算术运算。●“与”、“或”、“异或”等逻辑操作;移位、置位、清零、取反、加1、减1等操作。●80C51的ALU还具有极强的位处理功能,如位置1、位清零、位“与”、位“或”等操作,对“面向控制”特别有用。包括:算术逻辑运算单元ALU、累加器A、暂存寄存器、B寄存器、程序状态标志寄存器PSW以及BCD码运算修正电路等。ALU有两个输入:⑴通过暂存器1的输入:输入数据来自寄存器、直接寻址单元(含I/O口)、内部RAM、寄存器B或是立即数。⑵通过暂存器2或累加器的输入:通过暂存器2的运算的指令有ANLdirect,#dataORLdirect,#dataXRLdirect,#data其它的运算,其输入之一大多数也要通过累加器。•ALU有两个输出:•⑴数据经过运算后,其结果又通过内部总线送回到累加器A中;•⑵数据运算后产生的标志位输出至程序状态字PSW。2.累加器A简称ACC或A寄存器。主要功能:累加器A存放操作数,是ALU单元的输入之一,也是ALU运算结果的暂存单元。单片微机中大部分数据操作都要通过累加器A进行,容易产生“瓶颈”现象。3.B寄存器乘法中,ALU的两个输入分别为A、B,运算结果,A中放积的低8位,B中放积的高8位。除法中,被除数取自A,除数取自B,商数存放于A,余数存放于B。在其它情况下,B寄存器可以作为内部RAM中的一个单元来使用。4.程序状态字PSW(ProgramStatusWord)主要部分是算术逻辑运算单元(ALU)的输出。其中有些位(如F0)状态可用软件方法设定。奇偶校验位P、溢出标志位OV、辅助进位标志位AC及进位标志位CY都是ALU运算结果的直接输出。CYACF0RS1RS0OV-P(1)P-奇偶标志位每个指令周期都由硬件来置位或清除。用以表示累加器A中值为1的个数的奇偶性:若累加器值为1的位数是奇数,P置位(奇校验);否则P清除(偶校验)。如(A)=00001010,则P=0。在串行通信中,常以传送奇偶校验位来检验传输数据的可靠性。(2)OV-溢出标志位当执行运算指令时,由硬件置位或清除。OV置位:运算结果超出了目的寄存器A所能表示的带符号数的范围(一128~+127)。若以Ci表示位i向位i+l有进位,则OV=C6⊕C7;当位6向位7有进位(借位)而位7不向CY进位(借位)时;或当位7向C进位(借位)而位6不向位7进位(借位)时,OV标志置位,表示带符号数运算时运算结果是错误的;否则,清除OV标志,运算结果正确。•对于MUL乘法,当A、B两个乘数的积超过255时OV置位;否则,OV=0。若OV=0时,只需从A寄存器中取积。•对于DIV除法,若除数为0时,OV=1;否则,OV=0。(3)RS1、RS0-工作寄存器组选择位用于设定当前工作寄存器的组号。工作寄存器共有4组,其对应关系见表2–1(4)AC-辅助进位标志位当进行加法或减法运算时,若低4位向高4位数发生进位或借位时,AC将被硬件置位;否则,被清除。在十进制调整指令DA中要用到AC标志位状态。(5)CY-进位标志位。在进行算术运算时,可以被硬件置位或清除,以表示运算结果中高位是否有进位或借位。在布尔处理机中CY被认为是位累加器。(6)F0-用户标志位。开机时该位为“0”。用户可根据需要,通过位操作指令置“l”