《微计算机与单片机原理及应用》第9章 80C51单片机的结构与工作原理_第1页
《微计算机与单片机原理及应用》第9章 80C51单片机的结构与工作原理_第2页
《微计算机与单片机原理及应用》第9章 80C51单片机的结构与工作原理_第3页
《微计算机与单片机原理及应用》第9章 80C51单片机的结构与工作原理_第4页
《微计算机与单片机原理及应用》第9章 80C51单片机的结构与工作原理_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章

80C51单片机的结构与工作原理本章重点:MCS-51单片机的硬件结构及性能存储器结构及工作原理并行接口的结构串行接口的结构及工作方式定时器的结构及工作方式中断系统本章难点:存储器空间的地址分配、使用特点定时器的工作方式中断处理过程9.180C51的基本结构与应用模式

9.1.180C51的基本结构80C51单片机基本结构80C51单片机主要由以下几部分组成:1.CPU系统●8位CPU,含布尔处理器;●时钟电路;●总线控制逻辑。2.存储器系统●4K字节的程序存储器;●128字节的数据存储器;●21个特殊功能寄存器SFR。3.I/O口和其它功能单元●4个并行I/O口;●2个16位定时/计数器;●1个全双工异步串行口;●中断系统(5个中断源、2个优先级)。9.1.280C51外部引脚封装80C51单片机引脚封装

1.电源及晶振VCC:电源接入引脚。VSS:接地引脚。XTAL1:晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚接地)。XTAL2:晶体振荡器接入的另一个引脚(采用外部振荡器时,此引脚作为外部振荡信号的输入端)。2.控制线引脚RST/VPD:复位信号输入引脚/备用电源输入引脚。ALE/PROG:地址锁存允许信号输出引脚/编程脉冲输入引脚。EA/VPP:内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚。PSEN:外部程序存储器选通信号输出引脚。3.I/O引脚(32个,分成4个8位口)

P0.0~P0.7:一般I/O口引脚或数据/低位地址总线复用引脚。

P1.0~P1.7:一般I/O口引脚。

P2.0~P2.7:一般I/O口引脚或高位地址总线引脚。

P3.0~P3.7:一般I/O口引脚或第二功能引脚。9.280C51的微处理器80C51单片机内部结构9.2.1运算器

1.累加器ACC(简称为A):用于向ALU提供操作数和存放运算的结果。

2.寄存器B:在乘、除运算时用来存放一个操作数,乘法运算时,B中存放的是乘数。

3.暂存寄存器:用来暂时存放数据总线或其它寄存器送来的操作数。

4.程序状态字寄存器PSW:是一个逐位定义的8位寄存器,它用于寄存器程序运行的状态信息。9.2.2控制器

1.程序计数器PC:是一个16位的计数器(注意:PC不属于SFR)。其内容为将要执行的指令地址。单片机开机或复位时,PC自动清0,即装入地址0000H,这就保证了单片机开机或复位后,程序从0000H地址开始执行。

2.指令寄存器(IR)及指令译码器(ID):IR保存当前正在执行的一条指令。指令内容含操作码和地址码两部分,操作码送往ID,并形成相应指令的微操作信号。

3.定时与控制逻辑电路:它的任务是控制取指令、执行指令、存取操作数及运算结果等操作,向其它部件发出各种微操作控制信号,协调各部件的工作。9.3存储器80C51存储器配置

在物理上可分为4个存储空间:片内程序存储器和片外程序存储器,片内数据存储器和片外数据存储器。在逻辑上,即从用户使用角度去分,可分为3个逻辑空间:片内外统一编址的64KB程序存储器地址空间;片内256B或384B的数据存储器地址空间;片外64KB的数据存储器地址空间。用户要采用不同的指令形式和寻址方式,访问这3个不同的逻辑空间。9.3.1内部数据存储器数据存储器分为片内和片外两种,二者无论在物理上和逻辑上,其地址空间都是彼此独立的。片内数据存储器地址范围为00H~FFH,片外数据存储器地址空间为0000H~FFFFH。片内数据存储器

1.工作寄存器组由32个RAM单元组成,地址为00H~1FH。共4个区,每区由8个通用工作寄存器R0~R7组成。工作寄存器区域的选择由程序状态字PSW中的RS1和RS0确定,它们可用位操作指令直接修改,从而选择不同的工作寄存器区。80C51内部RAM功能配置图工作寄存器选择

2.位寻址区

RAM位寻址区是布尔处理机数据存储器的主要组成部分,全部可以位寻址。3.数据缓冲区数据缓冲区地址为30H~7FH,这些RAM单元按字节寻址。由于80C51单片机在复位时,堆栈指针SP指向07H单元,故当用户使用堆栈时,应该首先设置堆栈。用户堆栈一般设在30H~7FH范围之内。原则上栈深为128个字节,即以不超过RAM空间为限。4.专用寄存器(SFR)专用寄存器又称为特殊功能寄存器。80C51片内的I/O端口锁存器、定时器/计数器,串行口数据缓冲器以及各种控制寄存器(除PC外),都以特殊功能寄存器的形式出现,80C51共有21个特殊功能寄存器,它们离散地分布在片内80H~FFH地址空间范围内。另外,在SFR块中字节地址能被8整除的单元具有位寻址功能。SFR块中各个寄存器:累加器A:参见9.2.1.寄存器B:参见9.2.1.程序状态字PSW:PSW状态字格式

下面说明各位的含义。(1)CY(PSW.7):进/借位标志(2)AC(PSW.6):辅助进位标志(3)F0(PSW.5):用户标志位(4)RS1,RS0(PSW.4,PSW.3):工作寄存器区选择控制位(5)OV(PSW.2):溢出标志位(6)P:(PSW.0)奇偶标志位数据指针DPTR它是一个16位专用寄存器,其高字节寄存器用DPH表示,低字节寄存器用DPL表示。既可作为16位寄存器(DPTR)使用,又可作为两个独立的8位寄存器(DPH、DPL)来使用。DPTR通常在访问外部数据存储器(64KB)时作地址指针使用。I/O端口P0~P3专用寄存器P0、P1、P2和P3分别是I/O端口P0~P3的锁存器。

串行数据缓冲器SBUF串行数据缓冲器SBUF用于存放欲发送或已接收的数据。它由两个独立的寄存器组成,一个是发送缓冲器,一个是接收缓冲器(两个缓冲器共用一个地址)。定时器/计数器80C51有2个16位定时器/计数器T0和T1。它们各由2个独立的8位寄存器组成,共分为4个独立的寄存器:TH0、TL0、TH1、TL1。其他控制寄存器IP、IE、TMOD、TCON、SCON和PCON寄存器等。9.3.2程序存储器

1.80C51内部程序存储器

80C51内部有4KBROM程序存储器,地址为0000H~0FFFH(如下图所示)。

2.外部程序存储器

8031/8032/80C32片内无ROM,可扩展64KB外部程序存储器。程序存储器中有7个地址具有特殊功能,80C51复位后,(PC)=0000H,故系统程序必须从0000H单元开始,因而0000H是复位入口地址,也叫做系统程序的启动地址。一般在该单元中存放一条绝对跳转指令,跳转地址通常放在初始化程序及主程序中。除0000H单元外,其他6个特殊单元分别对应于6种中断入口地址。通常在这些入口地址都放一条绝对跳转指令,跳转到相应中断服务程序入口去执行中断服务程序。各种中断服务子程序入口地址

9.4CPU工作条件及运行方式9.4.1时钟及工作时序

1.振荡器和时钟电路

80C51内部有一个高增益反相放大器,用于构成振荡器,需附加电路。80C51的时钟产生方法有以下两种。内部时钟方式利用芯片内部的振荡器,然后在引脚XTAL1和XTALL2两端跨接晶体振荡器(简称晶振),就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。80C51时钟电路接线方法

外部时钟方式80C51单片机外部时钟接入方式2.工作时序

CPU执行一条指令的时间称为指令周期。指令周期是以机器周期为单位的。80C51典型的指令周期为一个机器周期。80C51单片机规定一个机器周期包括6个状态S1~S6,每个状态又分两部分:相位1(P1)和相位2(P2),即每个状态包括2个振荡(晶振)周期。因此,有下式成立:1个机器周期=6个状态=12个振荡周期。80C51单片机的时钟信号

3.80C51的典型时序单机器周期指令时序由于是单字节指令,因此只需进行一次读指令操作,当第二个ALE有效时,由于PC不加1,所以读出的还是原指令,属于一次无效操作。双字节指令时,对应于ALE两次读操作都是有效的,第一次是读指令操作码,第二次是读指令中的第二字节。双机器周期指令时序对于单字节指令,在两个机器周期之内要进行4次读操作。只是后3次读操作无效。单字节双周期指令时序

访问外部RAM的双周期指令时序

9.4.2复位及初始状态

复位是单片机的初始化操作。初始化后,程序计数器PC=0000H,所以程序从0000H地址单元开始执行。同时复位还对其它一些特殊功能寄存器有影响。P0~P3为FFH,SP为07H,SBUF不定,IP、IE和PCON的有效位为0,其余的特殊功能寄存器的状态均为00H。相应的意义为:(1)P0~P3=FFH,相当于各接口锁存器已写入1,此时不但可用于输出,也可以用于输入;(2)SP=07H,堆栈指针指向片内RAM的07H单元;(3)IP、IE和PCON的有效位为0,各中断源处于低优先级且均被关断,串行通信的波特率不加倍;(4)PSW=00H,当前工作寄存器为0组。1.复位电路单片机的复位电路

9.4.3运行方式

80C51单片机具有低功耗运行方式。对于CHMOS型单片机有两种低功耗方式:待机方式与掉电方式。HMOS型单片机仅有一种低功耗方式,即掉电方式。

1.HMOS型单片机的掉电运行方式正常运行时,HMOS型单片机由VCC供电。当VCC掉电时,在VCC下降到操作允许极限之前,RST/VPD接上备用电源,向内部RAM供电。当VCC恢复时,备用电源仍要保持一段时间,以便完成复位操作,然后重新开始工作。低功耗掉电方式

2.CHMOS型单片机的掉电运行方式与待机方式在CHMOS型单片机中,待机方式与掉电方式均由特殊功能寄存器PCON的有关位控制,该控制字格式如下图所示。PCON控制字格式

下面说明其中各位含义:SMOD(PCON.7):波特率加倍位。当SMOD=1时,串行口方式1、2、3的波特率提高一倍。PCON.6,PCON.5,PCON.4:保留位,无定义。GF1(PCON.3):通用标志位,供用户使用。GF0(PCON.2):通用标志位,供用户使用。PD(PCON.1):掉电方式位。当PD=1时,机器进入掉电工作方式。IDL(PCON.0):待机方式位。当IDL=1时,机器进入待机工作方式。(1)掉电运行方式当80C51检测到电源故障时,PD=1,片内振荡器停止工作,只有片内RAM内容被保持。单片机进入掉电运行方式。退出掉电方式的惟一途径是硬件复位,复位信号维持10ms。

(2)待机方式当执行了使PCON寄存器中IDL位为“1”的指令后,单片机就进入了待机方式。当IDL=1,CPU处于冻结状态。然而,时钟信号仍能提供给中断逻辑、串行口和定时器。在待机期间CPU状态被完整保存,如程序计数器PC,堆栈指针SP,程序状态字PSW,累加器A及所有的工作寄存器等。而ALE和PSEN变为无效状态。有两种方法退出待机方式:任何一个允许的中断请求被响应时,内部硬件电路将IDL位清零,结束待机状态,进入中断服务程序。硬件复位:由于时钟振荡器仍在工作,只要复位信号保持两个机器周期以上,便可完成复位,结束待机状态。9.5并行接口

80C51单片机有4个8位I/O端口P0~P3:P0口为三态双向口;P1~P3为准双向口。在单片机中口是一个集数据输入缓冲、数据输出驱动及锁存等功能为一体的I/O电路。9.5.1并口的结构及相关寄存器

1.P0口(P0.0~P0.7,39~32脚)为三态双向口P0口位结构

(1)P0口作地址/数据复用总线使用(2)P0口作通用I/O端口使用(3)P0口线上的“读—修改—写”功能

2.P1口(P1.0~P1.7、1~8脚)准双向口P1口位结构

3.P2口(P2.0~P2.7,21~28脚)准双口(1)P2口作通用I/O端口使用(2)P2口作地址总线口使用P2口位结构

4.P3口(P3.0~P3.7、10~17脚)双功口(1)P3口作第一功能口(通用I/O端口)使用(2)P3口作第二功能口使用

P3口位结构

9.5.2并口的驱动能力

P0口的输出级与P1~P3口的输出级在结构上是不同的,因此它们的负载能力与接口要求也不相同。P0口的每个位口线可驱动8个LSTTL门输入,当把它当作通用I/O端口使用时,输出级是漏级开路,故用它去驱动NMOS输入时需外接上拉电阻;把它当作地址/数据总线口使用时,它为三态双向口,无需外界再加上拉电阻。P1~P3口输出级接有内部上拉电阻,它的每个位口线可驱动4个LSTTL门输入,输入端都可以被集电极开路或漏级开路电路所驱动,无需再外接上拉电阻。9.6串行接口

9.6.1串口的结构及相关寄存器80C51串行口的内部结构

1.80C51串行口的控制寄存器单片机串行口是可编程的,对它初始化编程只需将两个控制字分别写入特殊功能寄存器SCON(98H)和电源控制寄存器PCON(97H)即可。串行控制寄存器SCON是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志。字节地址为98H,可进行位寻址,其格式为:(1)SM0和SM1(SCON.7和SCON.6):串行口工作方式选择位。串行口的工作方式(2)SM2(SCON.5):多机通信控制位,主要用于方式2和方式3。在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。(3)REN(SCON.4):允许串行接收位。若软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。(4)TB8(SCON.3):在方式2或方式3中,是发送数据的第九位,可以用作数据的奇偶校验位,在多机通信中,TB8=0为数据,TB8=1为地址,作为地址帧/数据帧的标志位。在方式0和方式1中,该位未用。(5)RB8(SCON.2):在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。(6)TI(SCON.1):发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。(7)RI(SCON.0):接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的一半时,由内部硬件使RI置1,向CPU发中断申请。在中断服务程序中,用软件将其清0,取消此中断申请。2.电源控制寄存器为PCON(97H)在PCON中只有一位SMOD与串行口工作有关,其格式为:(1)SMOD(PCON.7):波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。9.6.2串口的工作方式

1.方式0

方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。(1)方式0输出方式0输出时序

(2)方式0输入方式0输出时,串行口可以外接串行输入行输出的移位寄存器,如74LS164、CD4094等。方式0输入时序

方式0发送电路

方式0接收电路

2.方式1

串行口定义为方式1时,是10位数据的异步通信口。串口帧数据格式

(1)方式1输出方式1的发送时序

(2)方式1输入方式1的接收时序3.方式2和方式3串行口方式2和方式3的数据格式

(1)方式2和方式3输出

CPU向SBUF写入数据时,就启动了串行口的发送过程。SCON中的TB8写入输出移位寄存器的第9位,8位数据装入SBUF。方式2和方式3的发送时序

(2)方式2和方式3输入软件使接收允许位REN为1后,接收器就以所选频率的16倍速率开始取样RXD引脚的电平状态,当检测到RXD引脚发生负跳变时,说明起始位有效,将其移入输入移位寄存器,开始接收这一帧数据。方式2和方式3的接收时序4.波特率的计算方式0的波特率=fosc/12方式2的波特率=(2/64)·fosc方式1的波特率=(2/32)·(T1溢出率)方式3的波特率=(2/32)·(T1溢出率)当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。T1溢出率=fosc/{12×[256–(TH1)]}在使用串行口之前,应对其进行初始化,主要是设置产生波特率的定时器①、串行口控制和中断控制。具体步骤如下:确定T1的工作方式(编程TMOD寄存器);计算T1的初值,装载TH1、TL1;启动T1(编程TCON中的TR1位);确定串行口控制(编程SCON寄存器);串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。9.7定时/计数器9.7.1定时/计数器的结构及相关寄存器

1.定时/计数器的结构定时/计数器的结构框图

2.定时/计数器的功能

(1)计数功能:计数是对外部事件进行计数。

(2)定时功能:通过计数器的计数来实现,不过这时计数脉冲来自单片机内部,即每个机器周期产生一个计数脉冲。由于一个机器周期等于12个振荡脉冲周期,因此计数频率为振荡频率的1/12。

3.定时/计数器的控制工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低4位用于T0,高4位用于T1。其格式如下:GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0或INT1也为高电平时,才能启动定时/计数器工作。C/T:定时/计数模式选择位。C/T=0为定时模式;C/T=1为计数模式。M1、M0:工作方式设置位。定时/计数器有4种工作方式,由M1、M0进行设置。(2)控制寄存器TCONTCON的低4位用于控制外部中断,将在下节中介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:TF1(TCON.7):定时/计数器T1溢出中断请求标志位。定时/计数器T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。TR1(TCON.6):定时/计数器T1运行控制位。TR1置1时,定时/计数器T1开始工作;TR1置0时,定时/计数器T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。TF0(TCON.5):定时/计数器T0溢出中断请求标志位,其功能与TF1类同。TR0(TCON.4):定时/计数器T0运行控制位,其功能与TR1类同。9.7.2定时/计数器的工作方式

80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。

1.方式0

这里要说明一下门控位GATE具有的特殊作用。方式0的逻辑结构

通常,在定时/计数器的应用中要根据计数个数求出送入TH1、TL1和TH0、TL0中的计数初值。当为计数工作方式时,计数范围为1~8192。按照计数初值的计算公式:式中,X为计数初值,N为计数个数.当计数个数为1时,初值X为8191;计数个数为8192时,初值X为0。即初值在8191~0范围时,计数范围为1~8192。当为定时工作方式时,定时时间t的计算公式为:t=N*Tcy式中t为定时时间,N为计数个数,Tcy

为时钟周期。2.方式1

方式1的逻辑结构

当为计数工作方式时,计数范围为1~65536。当为定时工作方式时,定时时间t计算公式为:t=N*Tcy式中t为定时时间,N为计数个数,Tcy

为时钟周期。例:若要求定时器T0工作于方式1,定时时间为1ms,当晶振频率为6MHz时,求送入TH0和TL0的计数初值各为多少?解:由于晶振频率为6MHz,所以机器周期Tcy

为2μs。所以N=t/Tcy=1×10–3/2×10–6=500X=216–N=65536–500=65036=FE0CH即应将FEH送入TH0中,0CH送入TL0中。3.方式2方式2的逻辑结构工作方式0和工作方式1的特点是计数溢出后,计数器为0。4.方式3T0方式3的逻辑结构

9.8中断系统

9.8.1中断系统的结构及相关寄存器80C51中断系统结构图

1.中断源80C51单片机的有三类共五个中断源,分别为外部中断(2个)、定时中断(2个)、串行中断(1个):外部中断类:由外部原因引起,包括外部中断0和外部中断1,对应引脚为INT0(P3.2)和INT1(P3.3)。定时中断类:定时中断是为满足定时或计数的需要而设置。为此单片机内部有两个定时器/计数器。以对其中的计数结构进行计数的方法,来实现定时或计数功能。串行中断类:串行中断是为串行数据传送的需要而设置的,当串行口接收完一帧串行数据时就产生中断请求。因此这种中断也是在单片机内部自动发生,无需在芯片上设置引脚。2.中断控制

(1)TCON的中断标志其中与中断有关的有6位,定义如下:IT0(TCON.0):外部中断INT0触发方式控制位。当IT0=0时,INT0为电平触发方式(低电平有效)。当IT0=1时,INT0为边沿触发方式(下降沿有效)。IE0(TCON.1):外部中断INT0中断请求标志位。当CPU采样到INT0端出现有效中断请求时,由硬件置IE0=1,在中断响应完成后转向中断服务时,再由硬件自动清0。IT1(TCON.2):外部中断INT1触发方式控制位。其操作功能与IT0类同。IE1(TCON.3):外部中断INT1中断请求标志位。其操作功能与IE0类同。TF0(TCON.5):定时/计数器T0溢出中断请求标志位。在T0启动后就开始由初值加1计数,直至最高位产生溢出由硬件置TF0=1,CPU响应中断时,TF0由硬件自动清0。TF1(TCON.7):定时/计数器T1溢出中断请求标志位。其操作功能与TF0类同。(2)SCON的中断标志

a)RI(SCON.0):串行口接收中断标志位。当允许串行口接收数据时,每接收一个串行帧,由硬件置位RI。RI必须由软件清除。TI(SCON.1):串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,TI必须由软件清除。单片机复位后,TCON和SCON各位清0。另外,所有能产生中断的标志位均可由软件置1或清0。(3)中断允许控制寄存器IEEX0(IE.0):外部INT0中断允许位。ET0(IE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论