当前位置:文档之家› 第二章 8051单片机组成原理

第二章 8051单片机组成原理

第二章 8051单片机组成原理
第二章 8051单片机组成原理

第二章 8051单片机组成原理

§2.1 80C51系列单片机的特点

一、 学习目的及要求

1.了解8051单片机的基本组成

2.掌握CPU工作时序

3.掌握I/O端口P0-P3的工作特性

4.掌握单片机存储器组成

5.掌握8051单片机指令系统

6.掌握8051汇编语言程序设计方法

7.引入单片机各种片内集成外围功能

8.掌握单片机外部扩展方法

二、 重点内容

1.CPU工作时序

2.I/O端口工作特性及存储器组成

3.单片机指令系统及汇编语言程序设计

4.片内集成外围功能

5.单片机外部扩展

三、 难点讨论

1.时序分析

2.I/O端口特性

3.指令与编程

4.外部三总线与系统扩展

四、 教学方法

1.传统黑板教学为主,强调基础

2.多媒体教学为辅,突出重点

3.采用Proteus软件仿真,突出硬件设计与软件编程的关系

五、 教学参考书

1.徐爱钧,《智能化测量控制仪表原理与设计》,北航出版社

2.李朝青,《单片机基础教程》,北航出版社

80C51系列单片机可分为无片内ROM型和带片内ROM型两种。对于无片内ROM型的芯片,必须外接EPROM才能应用(典型芯片为80C31)。带片内ROM型的芯片又分为片内EPROM型(典型芯片为87C51)、片内FLASH型(典型芯片为89C51)、片内掩膜ROM型(典型芯片为80C51),一些公司还推出了一种带有片内一次性可编程ROM(One Time Programming,简称OTP)的芯片(典型芯片为97C51)。一般来说,片内EPROM型或片内FLASH型芯片适合于开发样机和需

要现场进一步完善的场合,当样机开发基本成功后,可以采用OTP型芯片进行小批量试生产,完全成功后再采用带掩膜ROM的8051进行大批量生产。80C51系列单片机在存储器的配置上采用程序存储器与数据存储器分开的结构,利用不同的指令和寻址方式进行访问,可分别寻址64kB字节的程序存储器空间和64kB字节的数据存储器空间,充分满足工业测量控制的需要。共有111条指令,其中包括乘除指令和位操作指令。中断源有5个(8032/8052为6个),分为2个优先级,每个中断源的优先级是可编程的,在80C51系列单片机的内部RAM区中开辟了4个通用工作寄存区,共有32个通用寄存器,可以适用于多种中断或子程序嵌套的情况。另外还在内部RAM中开辟了1个位寻址区,利用位操作指令可以对其中各个单元的每一个位直接进行操作,特别适合于解决各种控制和逻辑问题。80C51在单芯片应用方式下其4个并行I/O口(P0~P3)都可以作为输入输出之用,在扩展应用方式下则需要采用P0和P2口作为片外扩展地址总线之用。80C51单片机内部集成了一个全双工的异步串行接口,可同时发送和接收数据,为单片机之间的相互通信或与上位及通信带来极大的方便。

§2.2 80C51单片机的结构

2.2.1 80C51单片机的基本组成与内部结构

80C51单片机的基本组成如图2.1所示。

图2.1 80C51单片机的基本组成

在很多情况下,单片机还要和外部设备或外部存储器相连接,连接方式采用三总线(地址、数据、控制)方式,但在80C51单片机中,没有单独的地址总线和数据总线,而是与通用并行I/O口中的P0口及P2口共用的,P0口分时作为低8位地址线和8位数据线,P2口则作为高8位地址线用,可形成16条地址线和8条数据线。但是一定要建立一个明确的概念,单片机在进行外部扩展时的地址线和数据线都不是独立的总线,而是与并行I/O口公用的,这是80C51单片机结构上的一个特点。

图2.2所示为8051单片机内部结构框图,其中中央处理器CPU包含运算器和控制器两大部分,运算器完成各种算术和逻辑运算,控制器在单片机内部协调各功能部件之间的数据传送和运算操作,并对单片机外部发出若干控制信息。

1. 运算器

运算器以算术逻辑单元ALU为核心,加上累加器ACC、暂存寄存器TMP和程序状态字寄存器PSW等所组成。ALU主要用于完成二进制数据的算术和逻辑运算,并通过对运算结果的判断影响程序状态字寄存器PSW中有关位的状态。累加器ACC是一个8位的寄存器(在指令中一般写为A),它通过暂存寄存器TMP与ALU相连,ACC的工作最为繁忙,因为在进行算术

逻辑运算时,ALU的一个输入多为ACC的输出,而大多数运算结果也需要送到ACC中,在作乘除运算时,B寄存器用来存放一个操作数,它也用来存放乘除运算后的一部分结果,若不作

图2.2 80C51单片机的内部结构

乘除操作时, B寄存器可用作通用寄存器。程序状态字寄存器PSW也是一个8位寄存器,用于存放运算结果的一些特征,格式如下:

D7 D6 D5 D4 D3 D2 D1 D0

CY AC F0RS1RS0OV\P

其中各位的意义如下:

CY:进位标志。在进行加法或减法运算时,若运算结果的最高位有进位或借位,CY=1,否则CY=0,在执行位操作指令时,CY作为位累加器。

AC:辅助进位标志。在进行加法或减法运算时,若低半字节向高半字节有进位或借位, AC=1,否则AC=0,AC还作为BCD码运算调整时的判别位。

F0:用户标志。用户可根据自己的需要对F0赋以一定的含义,例如可以用软件来测试F0的状态以控制程序的流向。

RS1和RS0:工作寄存器组选择。可以用软件来置位或复位。它们与工作寄存器组的关系见表2-1。

表2-1 RS1,RS0余工作寄存器组的关系

RS1 RS0工作寄存器组片内RAM地址

0 0 第0组 00H~07H

0 1 第1组 08H~0FH

1 0 第2组 10H~17H

1 1 第3组 18H~1FH

OV:溢出标志。当两个带符号的单字节数进行运算,结果超出-128~+127的范围时,OV=1,表示有溢出,否则OV=0表示无溢出。

PSW中的D1位为保留位,对于8051来说没有意义,对于8052来说为用户标志,与F0

相同。

P:奇偶校验标志。每条指令指行完毕后,都按照累加器A中“1”的个数来决定P值,

当“1”的个数为奇数时,P=1,否则P=0。

2. 控制器

控制器包括定时控制逻辑、指令寄存器、指令译码器、程序计数器PC、数据指针DPTR、

堆栈指针SP、地址寄存器和地址缓冲器等。它的功能是对逐条指令进行译码,并通过定时和

控制电路在规定的时刻发出各种操作所需的内部和外部控制信号,协调各部分的工作。下面

简单介绍其中主要部件的功能。

程序计数器PC:用于存放下一条将要执行指令的地址。当一条指令按PC所指向的地址

从程序存储器中取出之后,PC的值会自动增量,即指向下一条指令。

堆栈指针SP:用来指示堆栈的起始地址。80C51单片机的堆栈位于片内RAM中,而且属

于“上长型”堆栈,复位后SP被初始化为07H,使得堆栈实际上由08H单元开始。

指令译码器:当指令送入指令译码器后,由译码器对该指令进行译码,即把指令转变成

为所需要的电平信号,CPU根据译码器输出的电平信号使定时控制电路产生执行该指令所需

要的各种控制信号。

数据指针寄存器DRTR:它是一个16位寄存器,

由高位字节DPH和低位字节DPL组成,用来存放

16位数据存储器的地址,以便对片外64kB的数据

RAM区进行读写操作。

2.2.2 引脚功能

采用40引脚双列直插封装(DIP)的80C51单

片机引脚分配如图2.3所示。各引脚功能如下:

Vss(20):接地。

Vcc(40):接+5V电源。

XTAL1(19)和XTAL2(18):在使用单片机内部

振荡电路时,这两个端子用来外接石英晶体和微

调电容(图2.4(a))。在使用外部时钟时,则用来

输入时钟脉冲,但对NMOS和CMOS芯片接法不同,

图2.4(b)所示为NMOS芯片8051外接时钟, 图2.3 80C51系列单片机引脚分配图

图2.4(c)所示为CMOS芯片80C51外接时钟。

RST/V PD(9):RST是复位信号输入端。当此输入端保持两个机器周期(24个振荡周期)的高

电平,就可以完成复位操作。第二功能是V PD,即备用电源输入端,当主电源发生故障,降低

到规定的低电平以下时,V PD将为片内RAM提供备用电源,以保证存贮在RAM中的信息不丢失。

ALE/(30):ALE是地址锁存允许信号,在访问外部存储器时,用来锁存由P0 PROG

口送出的低8位地址信号。在不访问外部存储器时,ALE以振荡频率1/6的固定速率输出脉

冲信号。因此它可用作对外输出的时钟。但要注意,只要外接有存储器,则ALE端输出的就

不再是连续的周期脉冲信号了。第二功能PROG是用于对8751片内EPROM编程的脉冲输入

端。

图2.4 80C51单片机的时钟接法

PSEN (29):它是外部程序存储器ROM的读选通信号。在执行访问外部ROM指令的时

候,会自动产生PSEN信号,而在访问外部数据存储器RAM或访问内部ROM时,不产生PSEN 信号。

EA/V PP(31),访问外部存储器的控制信号。当EA为高电平时,访问内部程序存储器,但当程序计数器PC的值超过0FFFH(对8051/80C51/8751)或1FFFH(对(8052)时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,则只访问外部程序存储器,不管是否有

内部程序存储器。第二功能V PP为对8751片内EPROM的21伏编程电源输入。

P0.0~P0.7(39-32):双向I/O口P0。第二功能是在访问外部存储器时,可分时用作低8位地址和8位数据线,在对8751编程和校验时,用于数据的输入和输出。P0口能以吸收电流的方式驱动8个LS型TTL负载。

P1.0~P1.7(1~8):双向I/O口P1。P1口能驱动(吸收或输出电流)4个LS型TTL负载。在对EPROM编程和程序验证时,它接收低8位地址。在8052单片机中,P1.0还用作定时器2的计数触发输入端T2,P1.1还用作定时器2的外部控制端T2EX。

P2.0~P2.7(21~28):双向I/O口P2。P2口可以驱动(吸收或输出电流)4个LS型TTL 负载。第二功能是在访问外部存储器时,输出高8位地址。在对EPROM编程和校验时,它接收高位地址。

P3.0~P3.7(10~17):双向I/0口P3, P3口能驱动(吸收或输出电流)4个LS型TTL负载。P3口的每条引脚都有各自的第二功能,详见§2.6节。

§2.3 80C51单片机的存储器结构 图2.5所示为80C51系列单片机的存储器结构图。在物理上它有4个存储器空间;片内程序存储器和片外程序存储器;片内数据存储器和片外数据存储器。在访问这几个不同的存储器时应采用不同形式的指令。

80C51系列单片机的程序存储器ROM地址空间为64kB,其中ROM型单片机具有4kB的片内ROM,CPU的控制器专门提供一个控制信号EA来区分片内ROM和片外ROM的公用地址区:当EA接高电平时,单片机从片内ROM的4kB字节存储器区取指令,当指令地址超过0FFFH后,就自动地转向片外ROM取指令;当EA接低电平时,所有的取指操作均对片外程序存储器进

2.5 80C51单片机存储器结构

行,这时片外程序存储器的地址范围为

0000H~0FFFFH。对于无ROM型的单片机,

EA端必须接地。

80C51系列单片机的片外数据存储器

RAM也有64kB的寻址区,在地址上是与ROM

重迭的。80C51单片机通过不同的信号来选

通ROM或RAM。当从外部ROM中取指令时,

用选通信号PSEN,而从外部RAM中读写数

据时则采用读写信号RD或WR来选通,因

此不会因地址重迭而发生混乱。在某些特殊

应用场合,如单片机的开发系统等,需要执

行存放在数据存储器RAM内的程序,这时可

采用将PSEN和RD信号作逻辑与的方法

将8051单片机的外部程序存储器和数据存

储器空间合并,与得的结果产生一个低电平

有效的读选通信号,用于合并的存储器空

间寻址。80C51系列单片机的片内数据存

储器RAM有256个字节,其中00H~7FH地址空 图2.6 80C51单片机片内RAM位地址

间是直接寻址区,该区域内从00H~1FH地址为工作寄存器区,安排了4组工作寄存器,每组占用8个地址单元,记为R0~R7,在某一时刻,CPU只能使用其中任意一组工作寄存器,究竟选择哪一组工作寄存器由程序状态字寄存器PSW中RS0和RS1的状态决定,见表2-1。片内RAM的20H~2FH地址单元为位寻址区,共16个字节,每个字节的每一位都规定了位地址,该区域内每个地址单元除了可以进行字节操作之外,还可进行位操作,图2.6所示为片内RAM 的位地址分配。片内RAM的80H~FFH地址空间是特殊功能寄存器(SFR)区,对于51子系列只在该区域内安排了21个特殊功能寄存器,对于52子系列则在该区域内安排了26个特殊功能

寄器,同时扩展了128个字节的间接寻址片内RAM,地址也为80~FFH,与SFR区地址重迭,但在使用时,可通过指令加以区别。表2-2所示为80C51单片机特殊功能寄存器地址及符号表,表中带*号的为可位寻址的特殊功能寄存器。内部RAM中的各个单元,都可以通过其地址来寻找,而对于工作寄存器,一般使用R0~R7表示,对于特殊功能寄存器,也是直接用其符号名较为方便。需要指出的是80C51单片机的堆栈必须使用片内RAM,而片内RAM空间十分有限,因此要仔细安排堆栈指针SP的值,以保证不会发生堆栈溢出而导致系统崩溃。

表2-2 80C51单片机特殊功能寄存器一览表

特殊功能寄存器符号 片内RAM地址 说 明

*ACC E0H 累加器

*B F0H 乘法寄存器

*PSW D0H 程序状态字

SP 81H 堆栈指针

DPL 82H 数据指针(低8位)

DPH 83H 数据指针(高8位)

*IE A8H 中断允许寄存器

*IP B8H 中断优先级寄存器

*P0 80H P0口锁存器

*P1 90H P1口锁存器

*P2 A0H P2口锁存器

*P3 B0H P3口锁存器

PCON 87H 电源控制及波特率选择寄存器

*SCON 98H 串行口控制寄存器

SBUF 99H 串行数据缓冲器

*TCON 88H 定时器控制寄存器

TMOD 89H 定时器方式选择寄存器

TL0 8AH 定时器0低8位

TH0 8BH 定时器0高8位

TL1 8CH 定时器1低8位

TH1 8DH 定时器1高8位

§2.4 80C51单片机的CPU时序

80C51单片机内部有一个高增益反向放大器,用于构成振荡器,反向放大器的输入端为XTAL1,输出端为XTAL2,分别是80C51的19和18脚。在XTAL1和XTAL2之间接一个石英晶体及两个电容,就可以构成稳定的自激振荡器,当振荡在6MHz~12MHz时通常取30pF左右的电容进行微调,如图2.7所示。晶体振荡器的振荡信号经过片内时钟发生器进行2分频,向CPU提供两相时钟信号P1和P2。时钟信号的周期称为状态时间S,它是振荡周期的2倍,在每个状态的前半周期P1信号有效,在每个状态的后半周期P2信号有效,CPU就以这两相时钟信号为基本节拍指挥单片机的部分协调工作。

图2.7 80C51的片内振荡器及时钟发生电路

图2.8 80C51单片机的取指和执行周期时序

CPU执行一条指令所需要的时间是以机器周期为单位的,80C51单片机的一个机器周期包括12个振荡周期,分为6个S状态:S1~S6,每个状态又分为2拍,即前面介绍P1和P2信号,因此一个机器周期中的12个振荡周期可表示为S1P1,S1P2,S2P1,...S6P1,S6P2。当采用12MHz的晶体振荡器时,一个机器周期为1μs。CPU执行一条指令通常需要1~4个机器

周期,指令的执行速度与其需要的机器周期数直接有关,所需机器周期数越少速度越快,80C51单片机只有乘、除2条指令需要4个机器周期,其余均为单周期或双周期指令。

图2.8所示为几种典型的取指令和执行时序,从图中可以看到,在每个机器周期之内,地址锁存信号ALE两次有效,第一次出现在S1P2和S2P1期间,第二次出现在S4P2和S5P1期间。单周期指令的执行从S1P2开始,此时操作码被锁存在指令寄存器内。若是双字节指令,则在同一机器周期的S4状态读第2个字节。若是单字节指令,在S4状态仍进行读,但操作无效,且程序计数器PC的值不加1。

图2.8(a)和图2.8(b)分别为单字节单周期和双字节单周期指令的时序,它们都在S6P2结束时完成操作。

图2.8(c)为单字节双周期指令的时序,在2个机器周期内进行4次操作,由于是单字节指令,所以后面的3次操作无效。

图2.8(d)为CPU访问片外数据存储器指令“MOVX”的时序,它是一条单字节双周期指令,在第一个机器周期的S5状态开始送出片外数据存储器的地址,进行数据的读写操作。在此期间没有ALE信号,所以在第二个周期不会产生取指操作。

§2.5 复位信号与复位电路

80C51单片机与其他微处理器一样,在启动时都需要复位,使CPU和系统的各个部件都处于一种确定的初始状态。复位信号从单片机的RST引脚输入,高电平有效,其有效电平应维持至少2个机器周期,若采用6MHz的晶体振荡器,则复位信号至少应持续4微秒以上,才可以保证可靠复位。

复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图2.9(a)所示,只要电源Vcc电压上升时间不超过1毫秒,通过在Vcc和RST之间加一个22微法的电容,RST和Vss引脚(即地)之间加一个1KΩ的电阻,就可以实现上电自动复位。

按键手动复位电路如图2.9(b)所示,它是在上电自动复位电路的基础上增加一个电阻R1和一个按键RESET实现的,它不仅具有上电自动复位的功能,在按下RESET按钮后, 电容C 通过R1放电, 同时电源Vcc通过R1和R2分压,而R2要比R1大许多,大部分电压降落在R2上,从而使RST端得到一个高电平导致单片机复位。

(a) 上电自动复位电路 (b) 按键手动复位电路

图2.9 复位电路

上述电路中的电阻、电容参数适用于6MHz的外接晶振,能保证复位信号持续2个机器周期的高电平。复位电路虽然简单,但其作用非常重要,一个实际单片机应用系统能否正常工作,首先要检查能否产生正确的复位信号。复位以后,单片机内部各寄存器的状态如下:

PC 0000H TMOD 00H

ACC 00H TL0 00H

PSW 00H TH0 000H

SP 07H TL1 00H

DPTR 0000H TH1 00H

P0~P3 FFH SCON 00H

IP ××000000B SBUF 不定

IE 0×000000B PCON 0×××0000B 复位不影响片内RAM的内容,当加上电源电压Vcc以后,RAM的内容是随 机的。

§2.6 80C51单片机的并行I/O口 8051单片机有四个并行I/O口,称为P0、P1、P2、P3,每个口都有8根引脚,共有32根I/O引脚,它们都是双向通道,每一条I/O引脚都能独立地用作输入或输出,作输出时数据可以锁存,作输入时数据可以缓冲。P0~P3口各有一个锁存器,分别对应4个特殊功能寄存器地址:80H、90H、A0H、B0H。图2.10所示为P0~P3各口中的一位逻辑图。这四个I/O口的功能不完全相同,它们的负载能力也不相同,P1、P2、P3都能驱动四个LSTTL门电路,并且不需外加电阻就能直接驱动MOS电路。P0口在驱动TTL电路时能带动8个LS型TTL门,但驱动MOS电路时若作为地址/数据总线,可直接驱动;而作为I/O口时,则需外接上拉电阻才能驱动MOS电路。

图2.10 80C51单片机并行I/O口一位的逻辑图

P0为三态双向口,它可作为输入输出端口使用,也可作为系统扩展时的低8位地址/8位数据总线使用。P0口内部有一个2选1的MUX开关,当80C51以单芯片方式工作而不需要外部扩展时,内部控制信号将使MUX开关接通到锁存器,此时P0口作为双向I/O端口,由于

P0口没有内部上拉电阻,通常要在外部加一个上拉电阻来提高驱动能力。当80C51需要进行外部扩展时,内部控制信号将使MUX开关接通到内部地址/数据线,此时P0口在ALE信号的控制下分时输出低8位地址和8位数据信号。

P1口为准双向口,它的每一位都可以分别定义为输入或输出使用。P1口作为输入口使用时,有两种工作方式,即所谓“读端口”和“读引脚”。读端口时实际上并不从外部读入数据,而只把端口锁存器中的内容读入到内部总线,经过某种运算和变换后,再写回到端口锁存器,属于这类操作的指令很多,如对端口内容取反等。读引脚时才真正地把外部的输入信号读入到内部总线。逻辑图中各有两个输入缓冲器,CPU根据不同的指令分别发出“读端口”或“读引脚”信号,以完成两种不同的操作。在读引脚,也就是从外部输入数据时,为了保证输入正确的外部输入电平信号,首先要向端口锁存器写入一个“1”,然后再进行读引脚操作,否则,端口锁存器中原来状态有可能为“0”,加到输出驱动场效应管栅极的信号为“1”,该场效应管导通,对地呈现低阻抗。这时即使引脚上输入的是“1”信号,也会因端口的低阻抗而使信号变化,使得外加的“1”信号读入时不一定是“1”。若先执行置“1”操作,则可使驱动场效应管截止,引脚信号直接加到三态缓冲器,实现正确的读入。正是由于P1口在进行输入操作之前需要有这样一个附加准备动作,故称之为“准双向口”。P1作为输出口时,如果要输出“1”,只要将“1”写入P1口的某一位锁存器,使输出驱动场效应管截止,该位的输出引脚由内部上拉电阻拉成高电平,即输出为“1”。要输出“0”时,将“0”写入P1口的某一位锁存器,使输出驱动场效应管导通,该位的输出引脚被接到地端,即输出为“0”。

P2口也是一个准双向口,它有两种使用功能:作为普通I/O端口或作为系统扩展时的高8位地址总线。P2口内部结构与P0口类似,也有一个2选1的MUX开关,P2口作I/O端口使用时,内部控制信号使MUX开关接通到锁存器,此时P2口的用法与P1口相同。P2口作外部地址总线使用时,内部控制信号使MUX开关接通到内部地址线,此时P2口的引脚状态由所输出的地址决定。需要特别指出的是,只要进行了外部系统扩展,由于对片外地址的操作是连续不断的,此时P0口和P2口就不能再用作I/O端口了。

P3口为多功能口,除了用作通用I/O口之外,它的每一位都有各自的第二功能,详见表2-3。P3口作通用I/O口时其使用方法与P1口相同,P3口的第二功能可以单独使用,即不用第二功能的引脚仍可以作通用I/O口线使用。

表2-3 P3口的第二功能定义

80C51单片机没有独立的对外地址、数据和控制“三总线”,当需要进行外部扩展时需要采用I/O口的复用功能,将P0、P2口用作地址/数据总线,P3口用其第二功能,形成外部地址、数据和控制总线,如图2.11所示。P0口在进行外部扩展时分时复用,在读写片外存储器时,P0口先送出低8位地址信号,该信号只能维持很短的时间,然后P0口又送出8位数据信号。为了使在整个读写片外存储器期间,都存在有效的低8位地址信号,必须在P0口上外接一个地址锁存器,在ALE信号有效期间将低8位地址锁存于锁存器内, 再从这个锁存器对外输出低8位地址。P2口在进行外部扩展时只用作高8位地址线,在整个读写期间P2口输

出信号维持不变,因此P2口不需外接锁存器。一般在片外接有存储器时,P0和P2口不能再用作通用I/O口,此时只有P1口可作通用I/O口用,P3口没有使用第二功能的引脚还可以

用作I/O口线。另外还要注意,外接程序存储器ROM的读写选通信号为PSEN,而外接数据存储器RAM的读写选通信号为RD和WR,从而保证外部ROM和外部RAM不会发生混淆。

图2.11单片机与外部存储器、I/O端口的连接

§2.7 80C51单片机的指令系统 指令系统是一套控制单片机执行操作的编码,它是单片机能直接识别的命令。指令系统在很大程度上决定了单片机的功能和使用是否方便灵活。指令系统对于用户来说也是十分重要的,只有详细了解了单片机的指令功能,才能编写出高效的软件程序。本节介绍80C51单片机的指令系统。

2.7.1 指令和助记符

指令本身是一组二进制数代码,记忆起来很不方便,为了便于记忆,将这些代码用具有一定含义的指令助记符来表示,助记符一般采用有关英文单词的缩写,这样就容易理解和记忆单片机的各种指令了。下面是两条分别用代码形式和助记符形式书写的指令: 十六进制代码 助记符 功能

740A MOV A,#0AH 将十六进制数0AH放入累加器A中

2414 ADD A,#14H 累加器A中的内容与十六进制数14H

相加,结果放在累加器A中 尽管采用助记符后,书写的字符增多了,但由于增强了可读性, 使用时会觉得更方便。采用助记符和其它一些符号来编写的指令程序,称为汇编语言源程序,汇编语言源程序经过汇编之后即可得到可执行的机器代码目标程序。

2.7.2 指令的字节数

一条指令通常由两部分组成:操作码和操作数。操作码用来规定这条指令完成什么操作,例如是做加减运算,还是数据传送等。操作数则表示这条指令所完成的操作对象,即是对谁进行操作。操作数可以直接是一个数,或者是一个数所在的内存地址。

操作码和操作数都是二进制代码。在80C51单片机中,8 位二进制数为一个字节,指令是由指令字节组成的。对于不同的指令,指令的字节数不相同。80C51单片机有单字节,双字节或三字节指令。

单字节指令中既包含操作码的信息,也包含操作数的信息。这可能有两种情况,一种是指令的含义和对象都很明确,不必再用另一个字节来表示操作数。例如数据指针加 1 指令:INC DPTR,由于操作的内容和对象都很明确,故不必再加操作数字节,其指令码为:

1 0 1 0 0 0 1 1

另一种情况是用一个字节中的几位来表示操作数或操作数所在的位置。例如从工作寄存器向累加器A传送数据的指令:MOV A,Rn,其中Rn可以是8个工作寄存器中的一个,在指令码中分出三位来表示这8个工作寄存器,用其余各位表示操作码的作用,指令码为:

1 1 1 0 1 r r r

其中最低3位码用来表示从哪个寄存器取数,故一个字节也就够了。80C51单片机共有49条单字节指令。

双字节指令一般是用一个字节表示操作码,另一个字节表示操作数或操作数的地址。这时操作数或其地址就是一个8 位的二进制数,因此必须专门用一个字节来表示。例如8位二进制数传送到累加器A的指令:MOV A,#data,其中#data表示8位二进制数,也叫立即数,这就是双节指令,其指令码为:

0 1 1 1 0 1 0 0 #data

双字节指令的第二个字节,也可以是操作数所在的地址。80C51单片机共有45条双字节指令。

三字节指令则是一个字节的操作码,两个字节的操作数。操作数可以是数据,也可以是地址,因此,可能有四种情况:

操作码 立即数立即数

操作码 地址立即数

操作码 立即数地址

操作码 地址地址

80C51单片机共有17条三字节指令,只占全部指令的15%。一般而言,指令的字节数越少,则其执行速度越快, 从这个角度来说,80C51单片机的指令系统是比较合理的。

2.7.3 寻址方式

所谓寻址, 就是寻找操作数的地址。在用汇编语言编程时, 数据的存放、传送、运算都要通过指令来完成, 编程者必须自始至终十分清楚操作数的位置, 以及如何将它们传送到适当的寄存器去运算。因此, 如何从各个存放操作数的区域去寻找和提取操作数就变得十分重要。所谓寻址方式就是通过确定操作数所在的地址把操作数提取出来的方法, 它是汇编语言程序设计中最基本的内容之一, 必须要十分熟悉。

在80C51单片机中, 有7种寻址方式:

(1)寄存器寻址

(2)直接寻址

(3)立即寻址

(4)寄存器间接寻址

(5)变址寻址

(6)相对寻址

(7)位寻址

分别说明如下。

1.寄存器寻址

寄存器寻址就是以通用寄存器的内容作为操作数,在指令的助记符中直接以寄存器的名字来表示操作数的位置。在80C51单片机中,没有专门的通用硬件寄存器,而是把内部数据RAM区中00~1FH地址单元作为工作寄存器使用,共有32个地址单元,分成4组,每组8个工作寄存器,命名为R0~R7,每次可以使用其中一组。当以R0~R7来表示操作数时,就属于寄存器寻址方式。例如:

MOV A,R0

ADD A,R0

前一条指令是将R0寄存器的内容传送到累加器A中, 后一条指令则是对A和R0的内容作加法运算。

特殊功能寄存器B也可当作通用寄存器使用,但用B表示操作数地址的指令不属于寄存器寻址,而是属于下面所讲的直接寻址。

2.直接寻址

在指令中直接给出操作数地址,就属于直接寻址方式。在这种方式中,指令的操作数部分直接是操作数的地址。

80C51单片机中,用直接寻址方式可以访问内部数据RAM区中00~7FH共128个单元以

及所有的特殊功能寄存器。在指令助记符中,直接寻址的地址可

用2位十六进制数表示。对于特殊功能寄存器,可用它们各自的

名称符号来表示,这样可以增加程序的可读性。例如:

MOV A,3AH

就属于直接寻址,其中3AH所表示的就是直接地址,即内部RAM

区中的3AH单元。这条指令的功能是将内部RAM区中3AH单元的

内容传送到累加器A,即A←(3AH)。该指令的功能如图2.12所

示。

图2.12 直接寻址操作

3. 立即寻址

若指令的操作数是一个8位或16位二进制数,就称为立即寻址,指令中的操作数称为立即操作数。

由于8位立即数和直接地址都是8位二进制数(两位16进制数),因此在书写形式上必须有所区别。在80C51单片机中采用“#”号来表示后面的是立即数而不是直接地址。如#3AH 表示立即数3AH,而直接写3AH则表示RAM区中地址为3AH的单元。例如指令: MOV A,#3AH

MOV A,3AH

前一条指令为立即寻址,执行后累加器A中的内容变为3AH;后一条指令为直接寻址,执行后累加器A中的内容变为RAM区中地址为3AH单元的内容。在80C51单片机中,只有一条16位立即数指令:

MOV DPTR,#data16

其功能是将16位立即数送往数据指针寄存器。由于是16位立即数,需要2个字节表示,因此这是一条三字节的指令,即一字节指令码,二字节立即数,指令格式如下:

1 0 0 1 0 0 0 0 立即数高8位立即数低8位

4.寄存器间接寻址

若以寄存器的名称间接给出操作数的地址,则称为寄存器间接寻址。在这种寻址方式下,指令中工作寄存器的内容不是操作数,而是操作数的地址。指令执行时,先通过工作寄存器的内容取得操作数地址,再到此地址所规定的存储单元取得操作数。

80C51单片机可采用寄存器间接寻址方式访问全部内部RAM地址单元(8051为00H~7FH,8052为00H~FFH),也可访问64kB的外部RAM。但是这种寻址方式不能访问特殊功能寄存器。通常用工作寄存器R0、R1或数据指针寄存器DPTR来间接寻址,为了对寄存器寻址和寄存器间接寻址加以区别,在寄存器名称前面加一个符号@来表示寄存器间接寻址。例如: MOV A,@R0

该指令的功能如图2.13所示。指令执行之前R0寄存器的内容3AH是操作数的地址,内部RAM 区中地址为3AH单元的内容65H才是操作数,执行后,累加器A中的内容变为65H。若采用寄存器寻址指令:

MOV A,R0

则执行后累加器A中的内容变为3AH。对这两类指令的差别和用法,一定要区分清楚,正确使用。

图2.13 寄存器间接寻址操作图2.14 变址寻址操作5.变址寻址

变址寻址是以某个寄存器的内容为基本地址,然后在这个基址上加以地址的偏移量,才是真正的操作数地址。80C51单片机没有专门的变址寄存器,而是采用数据指针DPTR或程序计数器指针PC的内容为基本地址,地址偏移量则是累加器A中的内容,将基址与偏移量相加,即以DPTR或者PC的内容与A的内容之和作为实际的操作数地址。80C51单片机采用变址寻址方式可以访问64kB的外部程序存储器地址空间。例如指令:

MOVC A,@A+DPTR

该指令的功能如图2.14所示。指令执行前(A)=11H,(DPTR)=02F1H,故实际操作数的地址应为02F1H+11H=0302H。指令执行后将程序存储器ROM中0302H单元的内容1EH传送到累加器A。需要注意的是,虽然在变址寻址时采用数据指针DPTR作为基址寄存器,但变址寻址的区域都是程序存储器ROM而不是数据存储器RAM,另外尽管变址寻址方式的指令助记符和指令操作都较为复杂,但却是一字节指令。

6.相对寻址

80C51单片机设有转移指令,分为直接转移指令

和相对转移指令。相对转移指令需要采用相对寻址方

式,此时指令的操作数部分给出的是地址的相对偏移

量。在指令中以rel表示相对偏移量,rel为一个带

符号的常数,可正也可以负,若rel值为负数,则应

用补码表示。一般将相对转移指令本身所在的地址称

为源地址,转移后的地址称为目的地址,它们的关系

为:

目的地址=源地址+指令字节数+rel 图2.15 相对寻址操作

例如指令:

SJMP rel

该指令的功能如图2.15所示。这条指令的机器码为80,rel,共两个字节。设该指令所在的源地址为2000H,rel的值为54H,则转移后的目的地址为: 2000H+02+54H=2056H。

7.位寻址

采用位寻址方式的指令,其操作数是8位二进制数中的某一位,在指令中要给出是内部RAM单元中的哪一位,即给出位地址,位地址在指令中用bit表示。

80C51内部RAM中有1个可位寻址区,地址为20H~2FH,共16个单元,其中每个单元的每一位都可单独作为操作数,共128位。另外如果特殊功能寄存器的地址值能被8整除,则该特殊功能寄存器也可以进行位寻址。表2-4列出了这些特殊功能寄存器及其位地址。

表2-4 可以位寻址的特殊功能寄存器

特殊功能寄存器 单元地址 表示符号 位地址

P0 80H P0.0~0.7 80H~87H

TCON 88H TCON.0~TCON.7 88H~8FH

P1 90H P1.0~.P1.7 90H~97H

SCON 98H SCON.0~SCON.7 98H~9FH

P2 A0H P2.0~P2.7 A0H~A7H

IE A8H IE.0~IE.7 A8H~AFH

P3 B0H P3.0~P3.7 B0H~B7H

IP B8H IP.0~IP.7 B8H~BFH

PSW D0H PSW.0~PSW.7 D0H~D7H

ACC E0H ACC.0~ACC.7 E0H~E7H

B F0 B.0~B.7 F0H~F7H

在80C51单片机中,位地址的表示可以采用以下几种方式:

(1) 直接用位地址00H~FFH来表示,如20H单元的0~7位可表示为20H~27H。

(2) 采用第n单元第n位的表示方法,如25H.5,表示25H单元的第5位。

(3) 对于特殊功能寄存器可直接用寄存器名加位数的表示方法,如ACC.3,PSW.7等。

(4) 用汇编语言中的伪指令定义。

2.7.4 指令分类详解

80C51单片机共有111条指令, 按指令功能可分为算术运算指令, 逻辑运算指令, 数据传送指令, 控制转移指令及位操作指令5大类。

1. 算术运算指令

算术运算指令包括加、减、乘、除法指令, 加法指令又分为普通加法指令、带进位加法指令和加1指令。普通加法指令如下:

ADD A, Rn ;Rn(n=0~7)为工作寄存器

ADD A, direct ;direct为直接地址单元

ADD A, @Ri ;Ri(i=0~1)为工作寄存器

ADD A, #data ;#data为立即数

这组指令的功能是将累加器A的内容与第二操作数的内容相加, 结果送回到累加器A中。在执行加法的过程中, 如果位7有进位, 则置“1”进位标志CY, 否则清“0”CY。如果位3有进位,则置“1”辅助进位标志AC, 否则清“0”AC。如果位6有进位而位7没有进位, 或者位7 有进位而位6没有进位, 则置“1”溢出标志OV, 否则清“0”OV。

带进位加法指令如下:

ADDC A, Rn ;Rn(n=0~7)为工作寄存器

ADDC A, direct ;direct为直接地址单元

ADDC A, @Ri ;Ri(i=0~1)为工作寄存器

ADDC A, #data ;#data为立即数

这组指令的功能与普通加法指令类似, 唯一的不同之处是在执行加法时, 还要将上一次进位标志CY的内容也一起加进去。对于标志位的影响与普通加法指令相同。

加1指令如下:

INC A

INC Rn ;Rn(n=0~7)为工作寄存器

INC direct ;direct为直接地址单元

INC @Ri ;Ri(i=0~1)为工作寄存器

INC DPTR ;DPTR为16位数据指针寄存器

这组指令的功能是将所指出操作数的内容加1, 如果原来的内容为0FFH, 则加1后将产生上溢出, 使操作数的内容变成00H, 但不影响任何标志。指令 INC DPTR是对16位的数据指针寄存器DPTR执行加1操作, 指令执行时, 先对数据指针的低8位DPL的内容加1, 当产生上溢出时就对数据指针的高8位DPH加1, 但不影响任何标志。

十进制调整指令:

DA A

这条指令的功能是对累加器A中内容进行BCD码调整,通常用于BCD码运算程序中,使A中的运算结果为两位BCD码数。该指令的执行过程如图2.16所示。

图2.16 DA A指令的执行过程

减法指令只有带进位减法和减1指令。带进位减法指令如下:

SUBB A, Rn ;Rn(n=0~7)为工作寄存器

SUBB A, direct ;direct为直接地址单元

SUBB A, @Ri ;Ri(i=0~1)为工作寄存器

SUBB A, #data ;#data为立即数

这组指令的功能是将累加器A的内容与第二操作数的内容相减,同时还要减去上一次进位标志CY的内容,结果送回到累加器A中。在执行减法的过程中, 如果位7有借位, 则置“1”当前进位标志CY, 否则清“0”CY。如果位3有借位,则置“1”辅助进位标志AC, 否则清“0”AC。如果位6有借位而位7没有借位, 或者位7有借位而位6没有借位, 则置“1”溢出标志OV, 否则清“0”OV。

减1指令如下:

DEC A

DEC Rn ;Rn(n=0~7)为工作寄存器

DEC direct ;direct为直接地址单元

DEC @Ri ;Ri(i=0~1)为工作寄存器

这组指令的功能是将所指出操作数的内容减1, 如果原来的内容为00H, 则减1后将产生下溢出, 使操作数的内容变成0FFH, 但不影响任何标志。

单字节乘法指令如下:

MUL AB

这条指令的功能是将累加器A中的8位无符号整数与寄存器B中的8位无符号整数相乘, 乘积为16 位整数。乘积的低8位存放在累加器A中, 高8位存放在寄存器B中。如果乘积大于255(0FFH), 则置“1”溢出标志OV, 否则清“0”OV。进位标志总是被清“0”。

单字节除法指令如下:

DIV AB

这条指令的功能是将累加器A中的8位无符号整数除以寄存器B中的8位无符号整数, 所得商的整数部分存放在累加器A中, 余数部分存放在寄存器B中, 清“0”进位标志CY和溢出标志OV。如果原来B中的内容为0(被0除), 则执行除法后A和B中的内容不定, 并置“1”溢出标志OV, 在任何情况下, 进位标志总是被清“0”。

2.逻辑运算指令

逻辑运算指令分为简单逻辑操作指令、逻辑与指令、逻辑或指令以及逻辑异或指令。简单逻辑指令如下:

CLR A ;对累加器A清“0”

CPL A ;对累加器A的内容求反

RL A ;累加器A的内容向左环移一位

RLC A ;累加器A的内容带进位位CY向左环移一位

RR A ;累加器A的内容向右环移一位

RRC ;累加器A的内容带进位位CY向右环移一位

SWAP A ;将累加器A的高半字节(A.7~A.4)与低半字节(A.3~A.0)交换 逻辑与指令如下:

ANL A, Rn ;(A)∧(Rn)→A, n=0~7

ANL A, direct ;(A)∧(direct)→A

ANL A, @Ri ;(A)∧((Ri))→A, i=0或1

ANL A, #data ;(A)∧#data→A

ANL direct, A ;(direct)∧(A)→direct

ANL direct, #data ;(direct)∧#data→direct

这组指令的功能是将两个操作数的内容按位进行逻辑与运算,结果送入累加器 A 或由direct所指出的内部RAM单元。

逻辑或指令如下:

ORL A, Rn ;(A)∨(Rn)→A, n=0~7

ORL A, direct ;(A)∨(direct)→A

ORL A, @Ri ;(A)∨((Ri))→A, i=0或1

ORL A, #data ;(A)∨#data→A

ORL direct, A ;(direct)∨(A)→direct

ORL direct, #data ;(direct)∨#data→direct

这组指令的功能是将两个操作数的内容按位进行逻辑或运算, 结果送入累加器 A 或由direct所指出的内部RAM单元。

逻辑异或指令如下:

XRL A, Rn ;(A)⊕(Rn)→A, n=0~7

XRL A, direct ;(A)⊕(direct)→A

XRL A, @Ri ;(A)⊕((Ri))→A, i=0或1

XRL A, #data ;(A)⊕#data→A

XRL direct, A ;(direct)⊕(A)→direct

XRL direct, #data ;(direct)⊕#data→direct

这组指令的功能是将两个操作数的内容按位进行逻辑异或运算, 结果送入累加器 A 或由direct所指出的内部RAM单元。

3. 数据传送指令

80C51单片机的存储器区域可分为如下3个部分,即

程序存储器 0000H~FFFFH

内部RAM 00H~FFH

外部RAM/IO区 0000H~FFFFH

指令对哪一个存储器区域进行操作是由指令的操作码和寻址方式确定的。对于程序存储器ROM只能通过变址寻址方式采用MOVC指令访问。对于特殊功能寄存器只能采用直接寻址和位寻址方式,不能采用间接寻址方式。对于8052单片机内部RAM的高128字节则只能采用寄存器的间接寻址方式,而内部RAM的低128个字节既能间接寻址,也能直接寻址。外部数据存储器RAM只能通过间接寻址方式用MOVX指令访问。

数据传送到累加器A的指令如下:

MOV A, Rn ;n=0~7

MOV A, direct

MOV A, @Ri ;i=0或1

MOV A, #data

这组指令的功能是把源操作数的内容送入累加器A。

数据传送到工作寄存器Rn的指令如下:

MOV Rn, A ;n=0~7

MOV Rn, direct ;n=0~7

MOV Rn, #data ;n=0~7

这组指令的功能是把源操作数的内容送入当前工作寄存器区中的某一个寄存器R0~R7。

数据传送到内部RAM单元或特殊功能寄存器SFR的指令如下:

MOV direct, A

MOV direct, Rn ;n=0~7

MOV direct, direct

MOV direct, @Ri ;i=0或1

MOV direct, #data

MOV @Ri, A ;i=0或1

MOV @Ri, direct ;i=0或1

MOV @Ri, #data ;i=0或1

MOV DPTR, #data16

这组指令的功能是把源操作数的内容送入指定的内部RAM单元或特殊功能寄存器。 最后一条指令的功能是将16位数据送入数据指针寄存器DPTR。

堆栈操作指令如下:

PUSH direct ;进栈

POP direct ;出栈

在80C51单片机的特殊功能寄存器中有一个堆栈指针寄存器SP,进栈指令的功能是首先将堆栈指针SP的内容加1, 然后将直接地址所指出的内容送入SP指出的内部RAM单元。出栈指令的功能是将SP所指出的内部RAM单元的内容送入由直接地址所指出的字节单元, 同时将栈指针SP的内容减1。

累加器A与外部数据存储器之间的数据传送指令如下:

MOVX A, @DPTR ;((DPTR))→A

MOVX A, @Ri ;((P2Ri))→A, i=0或1

MOVX @DPTR, A ;(A)→(DPTR)

MOVX @Ri, A ;(A)→(P2Ri)

这组指令的功能是在累加器A与外部数据存储器RAM或I/O口之间进行数据传送。

查表指令如下:

MOVC A, @A+PC

MOVC A, @A+DPTR

这是两条很有用的查表指令, 它们可用来查找存放在程序存储器中的常数表格。其中第一条指令是以程序计数器PC作为基址寄存器, 累加器A的内容作为无符号数偏移量与PC的内容(下一条指令的起始地址)相加, 得到一个16位的地址, 并将该地址指出的程序存储器单元的内容送入累加器A。这条指令的优点是不改变特殊功能寄存器和PC的状态, 只要根据

A中的内容就可以取出表格中的常数。缺点是表格只能放在该条查表指令后面的256个单元之中, 表格的大小受到限制, 而且表格只能被一段程序所利用。第二条指令是以数据指针寄存器DPTR作为基址寄存器, 累加器A的内容作为无符号数偏移量与DPTR的内容相加, 得到一个16位的地址, 并将该地址指出的程序存储器单元的内容送入累加器A。这条查表指令的执行结果只与DPTR和累加器A的内容有关, 而与该条指令存放的地址及常数表格存放的地址无关, 因此表格的大小和位置可以在64kB的程序存储器中任意安排, 并且一个表格可以为各个程序块所公用。

字节交换指令如下:

XCH A, Rn ;n=0~7

XCH A, direct

XCH A, @Ri ;i0或1

这组指令的功能是将累加器A的内容和源操作数的内容相互交换。

半字节交换指令如下:

XCHD A, @Ri ;i=0或1

这条指令的功能是将累加器A的低4位内容和R(i)所指出的内部RAM单元的低4位内容相互交换。

4. 控制转移指令

无条件短跳转指令如下:

AJMP addr11

这是2K字节范围内的无条件跳转指令, 它把程序存储器划分为32个区, 每个区为2K 字节,转移的目标地址必须与AJMP后面一条指令的第一个字节在同一个2K字节的范围之内( 即转移目标地址必须与AJMP下一条指令的地址A15~A11相同), 否则将引起混乱。该指令执行时先将PC的内容加2,然后将11位地址送入PC.10~PC.0,而PC.15~PC.11保持不变。

相对转移指令如下:

SJMP rel

这是一条无条件跳转指令, 执行时在(PC)+2后, 把指令中有符号偏移量rel加到PC上, 计算出偏移地址。因此转移的目标地址可以在这条指令前128个字节到后127个字节之间。

8051单片机的内部结构

8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器(CPU)是整个单片机的核心 部件,是8位数据宽度的处理器,能处理 8位二进制数据或代码,CPU负责控制、 指挥和调度整个单元系统协调的工作,完 成运算和控制输入输出功能等操作。 ·数据存储器(RAM): 8051内部有128个8位用户数据存储 单元和128个专用寄存器单元,它们是统 一编址的,专用寄存器只能用于存放控制 指令数据,用户只能访问,而不能用于存 放用户数据,所以,用户能使用的的RAM 只有128个,可存放读写的数据,运算的 中间结果或用户定义的字型表。 ·程序存储器(ROM): 8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM): 8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 ·并行输入输出(I/O)口: 8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。 ·全双工串行口: 8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以 用作异步通信收发器,也可以当同步移位器使用。 ·中断系统: 8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可 满足不同的控制要求,并具有2级的优先级别选择。 ·时钟电路: 8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051 单片机需外置振荡电容。

AT89C51单片机的基本结构和工作原理

AT89C51单片机的主要工作特性: ·内含4KB的FLASH存储器,擦写次数1000次; ·内含28字节的RAM; ·具有32根可编程I/O线; ·具有2个16位可编程定时器; ·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口; ·具有一个数据指针DPTR; ·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位; AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz. AT89C51各部分的组成及功能: 1.单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。

(1)运算器 运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。 ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。 暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。 累加器是CPU使用最频繁的一个寄存器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。 B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。运算结果存于AB寄存器中。 (2)控制器 控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。AT89C51单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。复位时PC的内容是0000H. (3)存储器 单片机内部的存储器分为程序存储器和数据存储器。AT89C51单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电器实现。 (4)外围接口电路 AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。 AT89C51的工作原理: 1.引脚排列及功能 AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。 (1)I/O口线 ·P0口 8位、漏极开路的双向I/O口。 当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口也可做通用I/O口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置1。P0口可驱动8个TTL负载。 ·P1口 8位、准双向I/O口,具有内部上拉电阻。 P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。 ·P2 8位、准双向I/O口,具有内部上拉电阻。 当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,P2口接收高字节地址和某些控制信号。 ·P3 8位、准双向I/O口,具有内部上拉电阻。 P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/校验时,P3口接收某些控制信号。它可驱动4个TTL负载。 (2)控制信号线

李全利版单片机原理及接口技术课后答案(第五章)

章5 80C51的中断系统及定时/计数器 1.80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少? 答:5个中断源,分别为外中断INT0和INT1、T0和T1溢出中断、串口中断。 电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。 T0和T1,CPU响应中断时,由硬件自动复位。 RI和TI,由硬件置位。必须由软件复位。 另外,所有能产生中断的标志位均可由软件置位或复位。 各中断入口地址:INT0―0003H,T0—000BH,INT1—0013H,T1—001BH,RI和TI—0023H。 2.某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。 答:将3个中断信号经电阻线或,接INT1。 ORG 0000H LJMP MAIN ORG 00013H LJMP ZDFZ ORG 0040H MAIN:SETB EA SETB EX1 SJMP $ 0RG 0200H ZDFZ:PUSH PSW PUSH ACC JB P1.0,DV0 JB P1.1,DV1 JB P1.2,DV2 INRET:POP ACC POP PSW RETI ORG 2000H DV0:------------ JMP INRET ORG 2100H

DV1:------------ JMP INRET ORG 2200H DV2:------------ JMP INRET 3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定? 答: 当IT0=0时,INT0为电平触发方式。电平触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,当采样到低电平时,置IE0=1向CPU请求中断;采样到高电平时,将IE0清0。在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。 电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。 当IT0=1时,INT0为边沿触发方式。边沿触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,如果在连续的两个机器周期检测到INT0引脚由高电平变为低电平,即第一个周期采样到INT0=1,第二个周期采样到INT0=0,则置IE0=1,产生中断请求。在边沿触发方式下,CPU响应中断时,能由硬件自动清除IE0标志。 边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则在IE0或IE1中将锁存一个逻辑1。若CPU暂时不能响应,中断申请标志也不会丢失,直到CPU响应此中断时才清0。另外,为了保证下降沿能够被可靠地采样到,INT0和INT1引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频率为12MHz,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。 4.定时/计数器工作于定时和计数方式时有何异同点? 答: 定时/计数器实质是加1计数器。 不同点:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。 相同点:它们的工作原理相同,它们都有4种工作方式,由TMOD中的M1M0设定,即 方式0:13位计数器; 方式1:16位计数器; 方式2:具有自动重装初值功能的8位计数器; 方式3:T0分为两个独立的8位计数器,T1停止工作。 5.定时/计数器的4种工作方式各有何特点?

8051单片机考试试题及答案-2

一、填空题 1、请完成下列数制间的转换: 2、(00100110)B =()D ;(10011010)B =() H 3、根据一次传送数据位的多少,单片机传送数据的方 式分为两种,即 4、方式和方式。 5、假定(A)=22H,(R0)=66H,(66H)=FFH,执行指 令: 6、ADD A,@R0 后,累加器A的内容为,CY 内容为。 7、个人电脑(PC)存储器采用的结构为普林斯顿结构, 其特点是数据存储器和程序存储器统一编址,即存放在同一存储器中;而51单片机的存储器结构为 8、结构,其特点 是。 9、单片机中有个并行口,个串行口。 10、单片机能够识别的语言是,但该语言 记忆非常不方便,因此我们通常编写单片机程序使用的语言是;对编程效率要求很而执行效率要求不高的时候,还可以使用C语言对单片机进行

编程。 11、执行指令JZ NEXT时,当A等于时程序发生 跳转。 12、单片机上电复位后P3= H,SP= H。 13、某单片机晶振频率为6MHZ时,则该单片机的一个机 器周期为。 14、单片机系统复位后(PSW)=00H,此时内部RAM 寄存器区当前寄存器组是 15、第组,该组寄存器的单元地址范围为 至。 16、程序状态寄存器PSW的作用是用来保存程序运行过 程中的各种状态信息,其中CY为标志。 二、选择题 1、89C51单片机内部ROM的容量是 ( ) 2、A、128B B、4KB C、256B D、64KB 3、8051单片机的四个并行口P0、P1、P2、P3,用作通 用I/O口时,在读数据之前必须进行的操作是: () 4、A、写0 B、写1 C、读D、随 便

单片机习题

第一章: 1·何谓微处理器,CPU,微机,单片机? 2·单片机有何特点? 3·微型计算机怎样执行一个程序? 第二章: 1·8051单片机片内包含哪些主要逻辑功能部件? 2·8051的EA端有何用途? 3·8051的存储器分哪几个空间?如何区别不同空间的寻址? 4·简述8051片内RAM的空间分配。 5·简述布尔处理存储器的空间分配,片内RAM中包含哪些可位寻址单元。 6·如何简捷地判断8051正在工作? 7·8051如何确定和改变当前工作寄存器组? 8·805l P0口用作通用I/O口输入时,若通过TTL"OC"门输入数据,应注意什么?为什么?9·805 lP0~P3口结构有何不同?用作通用I/O口输入数据时,应注意什么? 10·8051单片机的EA信号有何功能?在使用8031时,EA信号引脚应如何处理? 11·8051单片机有哪些信号需要芯片引脚以第二功能的方式提供? 12·内部RAM低128B单元划分为哪三个主要部分?各部分主要功能是什么? 13·使单片机复位有几种方法?复位后机器的初始状态如何? 14·开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPrT如何确定和改当前工作寄存器组? 15·程序状态寄伊器PSW的作用是什么?常用标志有哪些位?作用是什么? 16·位地址7C H与字节地址7CH如何区别?位地址7CH具体在片内RAM中什么位置? 17·8051单片机的时钟周期与振荡周期之间有什么关系? 18·一个机器周期的时序如何划分? 19·什么叫堆栈?堆栈指针SP的作用是什么?8051单片机堆栈的容量不能超过多少字节? 第三章: 1·简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。 2·什么是计算机的指令和指令系统? 3·简述8051汇编指令格式。 4·简述80.51的寻址方式和所能涉及的寻址空间。 5·要访间特殊功能寄存器和片外数据存储器,应采用哪些寻址方式? 6·在8051片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H. 请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。 MOV A.40H MOV R0,A MOV Pl,#F0H MOV @R0,30H MOV DPTR,#3848H MOV 40H.38H MOV R0,30H MOV P0,R0 MOV l8H,#30H

8051系列单片机常识

8051系列单片机常识 单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。 单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU 集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。 早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。 单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。 单片机介绍 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,

《单片机原理与接口技术(第2版)张毅刚》第5章习题与答案

《单片机原理及接口技术》(第2版)人民邮电出版社 第5章I/O口应用-显示与开关/键盘输入 思考题及习题5 1.判断下列说法是否正确。 A.HD7279是用于键盘和LED数码管的专用接口芯片。答:对 B.LED数码管的字型码是固定不变的。答:错 C.为给扫描法工作的88非编码键盘提供接口电路,在接口电路中需要提供两个8位并行的输入口和一个8位并行的输出口。答:错 D.LED数码管工作于动态显示方式时,同一时间只有一个数码管被点亮。答:对 2.动态显示的数码管,任一时刻只有一个LED处于点亮状态,是LED的余辉与人眼的“视觉暂留”造成数码管同时显示的“假象”。答:对 3.为什么要消除按键的机械抖动?软件消除按键机械抖动的原理是什么? 答:消除按键的机械抖动,避免由于机械抖动造成的对键盘是否按下误判。软件消除按键机 械抖动的原理是采用软件延时,躲过键盘按键的机械抖动期。 4.LED的静态显示方式与动态显示方式有何区别?各有什么优缺点? 答:静态显示时,欲显示的数据是分开送到每一位LED上的。而动态显示则是数据是同时送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示口线占用较少,但是需要编程进行动态扫描,适合用在显示位数较多的场合。 5.分别写出表5-1中共阴极和共阳极LED数码管仅显示小数点“.”的段码。 答:80H(共阴极);7FH(共阳极)。 6.已知8段共阴极LED数码显示器要显示某字符的段码为7DH(a段为最低位),此时显示器显示 的字符为。 答:6 7.已知8段共阳极LED数码显示器要显示字符“6”(a段为最低位),此时的段码为。。 答:82H 8.当键盘的按键数目少于8个时,应采用式键盘。当键盘的按键数目为64个时,应采用式键盘。

单片机原理及应用课后习题答案第5章作业学习资料

单片机原理及应用课后习题答案第5章作 业

第五章中断系统作业 1. 外部中断1所对应的中断入口地址为()H。 2. 对中断进行查询时,查询的中断标志位共有、_ _、、 _ 和_ 、_ _ 六个中断标志位。 3.在MCS-51中,需要外加电路实现中断撤除的是:() (A) 定时中断 (B) 脉冲方式的外部中断 (C) 外部串行中断 (D) 电平方式的外部中断 4.下列说法正确的是:() (A) 同一级别的中断请求按时间的先后顺序顺序响应。() (B) 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。() (C) 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求 能中断低优先级中断请求。() (D) 同级中断不能嵌套。() 5.在一般情况下8051单片机允许同级中断嵌套。() 6.各中断源对应的中断服务程序的入口地址是否能任意设定? () 7.89C51单片机五个中断源中优先级是高的是外部中断0,优先级是低的是串行口中断。() 8.各中断源发出的中断申请信号,都会标记在MCS-51系统中的()中。 (A)TMOD (B)TCON/SCON (C)IE (D)IP 9. 要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存 器IE的内容应是() (A)98H (B)84H (C)42 (D)22H 10.编写出外部中断1为负跳沿触发的中断初始化程序。 11.什么是中断?其主要功能是什么? 12. 什么是中断源?MCS-51有哪些中断源?各有什么特点? 13. 什么是中断嵌套? 14.中断服务子程序与普通子程序有哪些相同和不同之处? 15. 中断请求撤除的有哪三种方式? 16. 特殊功能寄存器TCON有哪三大作用?

8051单片机的特点1

1.单片机概念:单片机,又称微控制器,是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器CPU,数据存储器RAM,程序存储器ROM,定时器/计数器和多种I/O接口电路。 2.MCS-51系列单片机中的基本型产品是8051,8031和8751,这三个产品只是片内程序存储器制造工艺不同。8051的片内程序存储器ROM为掩膜型的在制造芯片时已将应用程序固化进去,使它具有了某种专用功能;8031无ROM,使用时需外接ROM;8751的片内ROM是EPROM型的,固化的应用程序可以方便改写。(除片内ROM 类型不同外,其他性能完全相同) 3.其他性能的结构特点:(1)8位CPU; (2)片内震荡器及时钟电路 (3)32根I\O线 (4)外部存储器ROM和RAM寻址范围各64KB (5)2个16位的定时器/计数器 (6)5个中断源,2个中断优先级 (7)全双工串行口 (8)布尔处理器 4.8051的内部结构 8051内部结构可划分为CPU,存储器,并行口,串行口,定时器/计数器和中断逻辑几部分。 (1)中央处理器 8051的中央处理器CPU由运算器和控制逻辑构成。其中包括若干特殊功能寄存器(SFR)。

a 以ALU为中心的运算器 运算逻辑单元ALU能对数据进行加减乘除等算术运算和“与”“或”“异或”等逻辑运算以及位操作运算。 ALU只能进行运算,运算的操作数可以事先存放在累加器ACC或暂存器TMP 中,运算结果可以送回ACC或通用寄存器或储存单元中。累加器ACC也可以写为A。B寄存器在乘法指令中用来存放乘数,在除法指令中用来存放除数,运算后B中为部分运算结果。 程序状态字PSW是8位寄存器,用来寄存本次运算的特征信息,用到其中的七位, 下面是其各位的定义: CY:进位标志,有进位或借位时,CY=1;否则CY=0. AC:半进位标志,当D3位向D4位产生借位或进位时,AC=1;否则AC=0;常用于十进制调整运算中。 F0:用户可设定的标志位,可置位或复位,也可供测试。 RS1,RS0:4个通用寄存器组的选择位,该两位的4种组合状态用来选择0~3寄存器组。 RS1、RS0与工作寄存器组的关系如图表所示 RS1 RS0 工作寄存器组 0 0 0组(00H~07H)0 1 1组(08H~0FH)RS1 RS0 工作寄存器组 1 0 2组(10H~17H)1 1 3组(18H~1FH)

8051单片机CPU的内部组成及功能介绍

8051单片机CPU的内部组成及功能介绍 一、运算器 运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。累加器ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。寄存器B主要用于乘法和除法操作。标志寄存器PSW也是一个八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。其每位的具体含意如下所示。PSW CY AC FO RS1 RS0 OV -P对用户来讲,最关心的是以下四位。 1?进位标志CY(PSW?7)。它表示了运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。 2?辅助进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。 3?溢出标志位OV。MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。 4?奇偶标志P。反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。 PSW的其它位,将在以后再介绍。由于PSW存放程序执行中的状态,故又叫程序状态字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)。其功能在介绍位指令时再说明。 二、控制器 控制器是CPU的神经中枢,它包括定时控制逻辑电路、指令寄存器、译码器、地址指针DPTR及程序计数器PC、堆栈指针SP等。这里程序计数器PC是由16位寄存器构成的计数器。要单片机执行一个程序,就必须把该程序按顺序预先装入存储器ROM的某个区域。单片机动作时应按顺序一条条取出指令来加以执行。因此,必须有一个电路能找出指令所

单片机原理及应用课后习题答案第5章作业

第五章中断系统作业 1. 外部中断1所对应的中断入口地址为()H。 2. 对中断进行查询时,查询的中断标志位共有、_ _、、 _ 和_ 、_ _ 六个中断标志位。 3.在MCS-51中,需要外加电路实现中断撤除的是:() (A) 定时中断 (B) 脉冲方式的外部中断 (C) 外部串行中断 (D) 电平方式的外部中断 4.下列说法正确的是:() (A) 同一级别的中断请求按时间的先后顺序顺序响应。() (B) 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。() (C) 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求 能中断低优先级中断请求。() (D) 同级中断不能嵌套。() 5.在一般情况下8051单片机允许同级中断嵌套。() 6.各中断源对应的中断服务程序的入口地址是否能任意设定? () 7.89C51单片机五个中断源中优先级是高的是外部中断0,优先级是低的是串行口中断。() 8.各中断源发出的中断申请信号,都会标记在MCS-51系统中的()中。 (A)TMOD (B)TCON/SCON (C)IE (D)IP 9. 要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存器 IE的内容应是() (A)98H (B)84H (C)42 (D)22H 10.编写出外部中断1为负跳沿触发的中断初始化程序。 11.什么是中断?其主要功能是什么? 12. 什么是中断源?MCS-51有哪些中断源?各有什么特点? 13. 什么是中断嵌套? 14.中断服务子程序与普通子程序有哪些相同和不同之处? 15. 中断请求撤除的有哪三种方式? 16. 特殊功能寄存器TCON有哪三大作用? 17. 把教材的P82页的图改为中断实现,用负跳变方式,中断0(INT0)显示“L2”,中断1(INT1)显示“H3”。(可参考第四章的电子教案中的例子) 18.第5章课后作业第9题。 第五章中断系统作业答案 1. 外部中断1所对应的中断入口地址为(0013)H。 2. 对中断进行查询时,查询的中断标志位共有 IE0 、_TF0_、IE1 、 TF1_ 和_TI 、_RI_六个中断标志位。【实际上只能查询TF0、TF1、TI、RI】 3.在MCS-51中,需要外加电路实现中断撤除的是:(D) (A) 定时中断 (B) 脉冲方式的外部中断 (C) 外部串行中断 (D) 电平方式的外部中断 4.下列说法正确的是:(A C D ) (A) 同一级别的中断请求按时间的先后顺序顺序响应。(YES)

单片机原理及接口技术张毅刚第5章习题及答案

第5章 I/O口应用-显示与开关/键盘输入 思考题及习题5 1.判断下列说法是否正确。 A.HD7279是用于键盘和LED数码管的专用接口芯片。答:对 B.LED数码管的字型码是固定不变的。答:错 C.为给扫描法工作的88非编码键盘提供接口电路,在接口电路中需要提供两个8位并行的输入口和一个8位并行的输出口。答:错 D.LED数码管工作于动态显示方式时,同一时间只有一个数码管被点亮。答:对 2.动态显示的数码管,任一时刻只有一个LED处于点亮状态,是LED的余辉与人眼的“视觉暂留”造成数码管同时显示的“假象”。答:对 3.为什么要消除按键的机械抖动软件消除按键机械抖动的原理是什么 答:消除按键的机械抖动,避免由于机械抖动造成的对键盘是否按下误判。软件消除按键机械抖动的原理是采用软件延时,躲过键盘按键的机械抖动期。 4.LED的静态显示方式与动态显示方式有何区别各有什么优缺点 答:静态显示时,欲显示的数据是分开送到每一位LED上的。而动态显示则是数据是同时送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示口线占用较少,但是需要编程进行动态扫描,适合用在显示位数较多的场合。 5.分别写出表5-1中共阴极和共阳极LED数码管仅显示小数点“.”的段码。 答: 80H(共阴极);7FH(共阳极)。 6. 已知8段共阴极LED数码显示器要显示某字符的段码为7DH(a段为最低位),此时显示器显示 的字符为。 答:6 7.已知8段共阳极LED数码显示器要显示字符“6”(a段为最低位),此时的段码为。。答:82H 8.当键盘的按键数目少于8个时,应采用式键盘。当键盘的按键数目为64个时,应采用式键盘。 答:独立式,矩阵式

单片机原理与应用及C51程序设计第5章习题答案

第5章习题答案 5-1 什么叫中断系统?中断系统的功能是什么?什么是中断嵌套? 答:当CPU正在执行主程序时,外部或内部发生的某一事件(如某个引脚上电平的变化、一个脉冲的发生或计数器的计数溢出等)请求CPU迅速处理,CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,CPU再继续执行原来被中断的程序,这样的过程称为中断。 功能:中断系统是为使CPU 具有对单片机外部或内部随机发生的事件进行实时处理而设置的。 中断嵌套:8051设置了两级中断优先级,低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。 5-2 MCS-51型单片机各中断源的中断标志是如何产生的?又是如何清除的?CPU响应中断时,中断入口地址各是多少? 答:见p133;. 或端出现有效中断请求时,IE0 IE1)位由硬件置“1”。当中断响应当CPU采样到IE0IE1 完成转向中断服务程序时,由硬件把IE0(或IE1)清零。 TF0和TF1——计数溢出标志位,当计数器产生计数溢出时,相应的溢出标志位由硬件置“1”。当转向中断服务时,再由硬件自动清“0”。 TI:串行发送中断标志。CPU将数据写入发送缓冲器SBUF时就启动发送,每发送完一帧后,硬件将TI置位,必须由软件清0. RI:串行接收中断标志。串口允许接收时,每接收完一帧后,硬件将RI置位,必须由软件清0.地址分别为:0003H,000bH0013H,001BH,0023H 5-3:在MCS-51型单片机中,哪些中断标志可以在响应自动撤除。 见第二题,也可见P136; 5-4 答:见p136. 5-5: 解:PX1=1;IT1=0;PT1=0;PS=1;EA=1;ES=1;ET1=1;EX1=1;ET0=0;EX0=0; 5-6 解:两个,它由模式设置寄存器TMOD,中断控制寄存器IE,中断优级级寄存器IP,中断标志寄存器TCON组成 5-8 请叙述TMOD=A6H所代表的含义。 答:A6H=10100110,其表示定时器0工作与方式2,为计数方式。定时器1工作与方式2,为定时方式,首席门控信号Gate=1,只有INT1引脚和TR1同时为1时,定时器/计数器才开始工作,主要用于测量INT引脚上高电平脉冲的宽度。 5-9利用MCS-51型单片机的定时器测量某正脉冲宽度时采用何种工作方式可以获得最大的量程?若系统时钟频率为6MHz那么最大允许的脉冲宽度是多少? 答:使用工作方式2(16进制计数方式),其计数值最大为65536*机器周期 若系统时钟为6MHz,那么最大允许的脉冲宽度为65536*2us=131072us 5-10 定时器/计数器用作定时器时,其定时时间与哪些因素有关?作计数器时对外计数频率有何限制? 答:其定时时间与时钟频率,工作模式,初始化值有关。作计数器时对外计数时外部频率不能小于单片机本身的机器周期的倒数(即应小于计数器的计数值至少为1),应该大于机器周期的1/65536(即不能溢出)。 5-11单片机用内部定时方法产生频率为20kHz的方波,设单片机晶振频率为12MHz,请编

8051单片机引脚图与引脚功能简介

8051单片机引脚图与引脚功能简介 时间:2009-03-02 12:42 来源:未知作者:牛牛 首先我们来连接一下单片机的引脚图,如果,具体功能在下面都有介绍。 单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 ⒈电源: ⑴ VCC - 芯片电源,接+5V; ⑵ VSS - 接地端; ⒉时钟: XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 ⒊控制线: 控制线共有4根, ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ① ALE功能:用来锁存P0口送出的低8位地址 ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 ⑵ PSEN:外ROM读选通信号。 ⑶ RST/VPD:复位/备用电源。 ① RST(Reset)功能:复位信号输入端。 ② VPD功能:在Vcc掉电情况下,接备用电源。 ⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。 ① EA功能:内外ROM选择端。 ② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

⒋ I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。 编辑本段复位电路简介 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。 编辑本段单片机复位电路的类型

单片机练习题2014.6

练习题 一、选择 MCS-51系列单片机属于: A、4位机型 B、8位机型 C、16位机型 D、32位机型 下列不属于51单片机的是: A、Intel 80C51 B、Intel 8052 C、MC68HC08 D、AT89C2051 8031与8051的主要差异在于: A、片内无ROM B、片内无RAM C、时钟频率不同 D、片内接口资源不同 下列无片内ROM的51单片机是: 下列采用FALSH存储器作片内程序存储器的51单片机是: A、8031 B、8051 C、8751 D、AT89S51 下列对8051单片机的基本特性叙述错误的是: A、片内有4KB ROM存储器 B、片内有256B RAM存储器 C、具有2个16位定时计数器 D、具有一个全双工异步串行口 复位后,8051单片机从下列哪个地址开始执行(): A、0000H B、0003H C、000BH D、0013H 在8051单片机复位后,选择从片内ROM还是片外ROM中开始执行程序,取决于下列哪个引脚的接入电平: 外扩程序存储器时哪个引脚被用于程序存储器的输出使能: 外扩存储器时那个引脚用于地址锁存: A、ALE B、 C、 D、以上都不是 下列对8051单片机存储器组织叙述正确的是: A、程序存储器和数据存储器统一编址 B、程序存储器和数据存储器独立编址 C、片内和片外数据存储器统一编址 D、片内和片外程序存储器独立编址 下列对8051单片机存储器组织叙述错误的是: A、8051单片机的存储器由程序存储器和数据存储器两部分组成 B、8051单片机的程序存储器和数据存储器统一编址 C、8051单片机的片内和片外数据存储器独立编址 D、8051单片机的片内和片外程序存储器统一编址 要改变8051单片机的当前通用寄存器区,可通过下哪个寄存器实现: A、PC B、ACC C、PSW D、SP 8051单片机片内共有几个通用寄存器区: A、1 B、2 C、3 D、4 8051单片机取指令是依据下列哪个寄存器的内容进行: 51单片机中唯一一个可访问16位寄存器是: A、PC B、DPTR C、PSW D、ACC 下列8051单片机的并行I/O口每个引脚都具有复用的第二功能的是: 被复用为地址/数据的是: 被复用为高8位地址的是: 没有复用功能的是: A、P0 B、P1 C、P2 D、P3

8051单片机教程

实验一:扩展存储器读写实验 一.实验要求 编制简单程序,对实验板上提供的外部存贮器(62256)进行读写操作。 二.实验目的 1.学习片外存储器扩展方法。 2.学习数据存储器不同的读写方法。 三.实验电路及连线 将P1.0接至L1。CS256连GND孔。 四.实验说明 1.单片机系统中,对片外存贮器的读写操作是最基本的操作。用户藉此来熟悉MCS51单片机编程的基本规则、基本指令的使用和使用本仿真实验系统调试程序的方法。 用户编程可以参考示例程序和流程框图。本示例程序中对片外存贮器中一固定地址单元进行读写操作,并比较读写结果是否一致。不一致则说明读写操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(本示例程序通过熄灭一个发光二极管来表示出错)。读写数据的选用,本例采用的是55(0101,0101)与AA(1010,1010)。一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实际调试用户电路时非常有效。 用户调试该程序时,可以灵活使用单步、断点和变量观察等方法,来观察程序执行的流程和各中间变量的值。 2.在I状态下执行MEM1程序,对实验机数据进行读写,若L1灯亮说明RAM读写正常。

3.也可进入LCA51的调试工具菜单中的对话窗口,用监控命令方式读写RAM,在I状态执行SX0000↓ 55,SPACE,屏幕上应显示55,再键入AA,SPACE,屏幕上也应显示AA,以上过程执行效果与编程执行效果完全相同。 注:SX是实验机对外部数据空间读写命令。 4.本例中,62256片选接地时,存储器空间为0000~7FFFH。 五.实验程序框图 实验示例程序流程框图如下: 六.实验源程序: ORG 0000H LJMP START ORG 0040H START:

8051单片机的指令系统有何特点

1.8051单片机的指令系统有何特点? 2.8051单片机指令系统按功能可分为几类?具有几种寻址方式?它们的寻址范围如何?3.访问特殊功能寄存器和外部数据存储器应采用哪种寻址方式? 4.“DA A”指令的作用是什么?怎样使用? 5.片内RAM 20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作? 6.8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还没有设置了绝对跳转AJMP,绝对调用ACALL指令?在实际使用是应怎样考虑? 7.SJMP,AJMP和LJMP指令在功能上有何不同? 8.MOVC A,@DPTR与MOVX A,@DPTR指令有何不同? 9.在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使用了DPTR和PC 作基址,请问这两个基址代表什么地址?使用中有何不同? 10.设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM 中50H和51H单元的内容为何值? MOV A,40H MOV R0,A MOV A,#00 MOV @R0,A MOV A,#30H MOV 51H,A MOV 52H,#70H 11.设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化? 12.在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。 分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。 MOV A,40H MOV R0,A MOV P1,#0F0H MOV @R0,20H MOV 50H,R0 MOV A,@R0 MOV P2,P1 13.完成以下的数据传送过程。 (1)R1的内容传送到R0。 (2)片外RAM 20H单元的内容送R0。 (3)片外RAM 20H单元的内容送片内RAM 20H (4)片外RAM 1000H单元的内容送片内RAM 20H (5)片外RAM 20H单元的内容送R0。 (6)片外RAM 2000H单元的内容送片内RAM 20H (7)片外RAM 20H单元的内容送片外RAM 20H 14.设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。(以上均为低位字节,高位在高字节)。 15.编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。16.编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。

80C51 单片机的硬件结构 思考题及答案复习过程

1 、如何理解51单片机存储空间在物理结构上可分为4个,而逻辑上又可划分为3个? 答: MCS-51在物理上有四个存储空间: 1、片内程序存储器 2、片外程序存储器、 3、片内数据存储器 4、片外数据存储器。从逻辑上划分有三个存储器地址空间: 1、片内外统一编址的64K字节程序存储器(0000H~0FFFFH) 2、内部256字节数据存储器地址空间(包括 128字节片内RAM和128字节的SFR) 3、外部64K字节数据存储器地址空间(0000H~0FFFFH) 2 、MCS-51片内RAM的容量?8051最大可配置的RAM/ROM容量?答: 1)MCS-51片内RAM的容量: 51子系列:128B 52子系列:256B 2)其ROM最大可扩展到64KB 注:片内数据存储区=片内RAM+SFR,51和52子系列的SFR容量都是128B 3 、8051的/PSEN、/RD、/WR的作用? 答: 1)/PSEN(外部程序存储器读选通信号): CPU访问片外ROM时,使/PSEN低电平有效,可实现片外ROM的读操作,其他情况下此引脚为高电平封锁状态。 2)/RD:外部RAM读信号 3)/WR:外部RAM写信号 4 、ALE线的作用?当8051不和RAM/ROM相连时,ALE线的输出频率是多少? 答: 1)ALE(地址锁存控制信号): 访问片外ROM,RAM时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存,实现低位地址和数据的分时传送。 不访问片外存储器时,可做为外部时钟使用。 2)当8051不和RAM/ROM相连时,ALE线的输出频率等于时钟周期的倒数

5 、MCS-51的工作寄存区包含几个通用工作寄存器组?每组的地址是什么?如何选用?开机复位后,CPU使用的是哪组工作寄存器?答: 1)MCS-51的工作寄存区包含4个通用工作寄存器组 2)第0组通用寄存器区地址:00H~07H 第1组通用寄存器区地址:08H~0FH 第2组通用寄存器区地址:10H~17H 第3组通用寄存器区地址:18H~1FH 3)选择哪个工作寄存器组是通过软件对程序状态字寄存器PSW的第 4、3位进行设置实现的 4 6、 MCS-51的内部RAM地址空间是如何安排的?共有多少个单元可以位寻址?位地址又是如何排列的? 答: 1)MCS-51的内部RAM地址的空间安排: 00H~1FH 寄存器区 20H~2FH 位寻址区 30H~7FH 数据缓冲区 80H~FFH 专用寄存器区 2)位寻址的单元个数:16B*8位/B=128位 3)位地址排列方式: 位地址为:00H~7FH 字节地址:20H~2FH 7 、MCS-51的程序计数器PC是几位寄存器?它是否为专用寄存器?PC的内容是什么信息? 答 1)MCS-51的程序计数器PC是16位寄存器

相关主题
文本预览
相关文档 最新文档