单片机原理及应用系统设计902_第1页
单片机原理及应用系统设计902_第2页
单片机原理及应用系统设计902_第3页
单片机原理及应用系统设计902_第4页
单片机原理及应用系统设计902_第5页
已阅读5页,还剩897页未读 继续免费阅读

下载本文档

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

文档简介

1.1单片机概述

1.251系列单片机的基本结构

1.3AT89系列单片机型号的编码说明及封装形式

习题一第一章单片机概述及基本结构1.1.1单片机的定义

单片机是单片微型计算机(SingleChipMicrocomputer,SCM)的简称,是将中央处理器(CentralProcessingUnit,CPU)、存储器(Memory)、定时/计数器、I/O(Input/Output)接口等通过片内总线连接起来并集成在一块集成电路芯片上的微型计算机,其内部结构如图1-1所示。1.1单片机概述图1-1单片机内部结构1.1.2单片机的发展

1.4位单片机

2.8位单片机

3.16位单片机

4.32位单片机1.1.3单片机的分类

1.Intel公司的MCS-51系列单片机

2.ATMEL公司的51系列单片机

3.Philips公司的51系列单片机

4.华邦公司51系列单片机

5.Freescale公司的51系列单片机

6.其他公司生产的8位单片机

1.1.4单片机的特点

(1)单片机的ROM和RAM存储器是严格区分的。

(2)采用面向控制的指令系统。

(3)单片机的I/O引脚通常是多功能的。

(4)单片机的外部扩展能力强。1.1.5单片机的应用领域

1.家电产品及玩具

2.机电一体化设备

3.智能测量设备

4.自动控制系统

5.计算机控制及通信技术1.2.1内部结构的主要组成部分

51系列单片机主要由中央处理器(CPU)、片内存储器(ROM和RAM),定时/计数器、中断系统和并行I/O接口、串行I/O接口等功能部件组成,其AT89S52单片机的功能框图如图1-2所示。1.251系列单片机的基本结构图1-2AT89S52的功能框图

AT89S52单片机采用了3个定时/计数器片内数据存储器(RAM),其空间为256B,片内Flash程序存储器(ROM)的空间达8KB;工作频率有12时钟与6时钟两种模式可供选择。其内部结构如图1-3所示。

1.中央处理器

2.片内存储器

3.定时与中断系统

4.I/O口

5.时钟电路

图1-3MCS-51系列AT89S52单片机的内部结构图1.2.2单片机的引脚功能

AT89S52单片机有PDIP、TQFP和PLCC三种封装形式。

AT89S52的塑封双列直插式(PDIP)封装形式如图1-4所示。

1.主电源引脚(2根)

2.外接晶振引脚(2根)

3.控制引脚(4根)

4.输入/输出引脚

(1)P0.0~P0.7:P0口的8位双向I/O口线。

(2)P1.0~P1.7:P1口的8位准双向I/O口线。

(3)P2.0~P2.7:P3口的8位准双向I/O口线。

(4)P3.0~P3.7:P3口的8位准双向I/O口线。当P3口用作第二功能时,其功能如表1-1所列。图1-4AT89S52的PDIP封装形式引脚图表1-1P3口引脚第二功能1.2.3控制器、时钟电路和基本时序周期

1.AT89S52的时钟方式

1)内部方式

图1-5所示的内部时钟方式是采用单片机内部振荡器来工作的模式。图1-5内部时钟方式连接图

2)外部方式

图1-6所示的外部时钟方式采用外部振荡器产生时钟信号,直接供给单片机使用。图1-6外部时钟方式连接图

2.AT89S52的基本时序周期

CPU时序是指令周期所遵从的格式。在单片机内部,振荡器实质驱动内部时钟发生器向CPU提供时钟信号。时钟发生器的输入是一个二分频触发器,这个二分频触发器为单片机提供了一个二相时钟信号,即图1-7所示的相位信号P1和相位信号P2,驱动CPU产生执行指令功能的机器周期。

单片机的时序是用定时单位来描述的,描述了指令执行中各控制信号的关系,这里涉及节拍、状态、机器周期和指令周期4个概念,接下来分别说明它们之间的关系。关系图如图1-7所示。图1-7MCS-51系列单片机各种周期间的关系图1.2.4复位状态及复位电路

单片机复位是让CPU及系统其他部件都处于确定的初始状态,并从初始状态开始工作。单片机复位采用上电自动复位和按钮手动复位两种方式,如图1-8所示。复位后主机内部有关寄存器的初始状态如表1-2所示。图1-8复位电路表1-2复位后主机内部有关寄存器的初始状态

1.常用复位方式

(1)上电复位。

(2)电平式开关与上电复位。

(3)复杂的复位电路。图1-9列出了两种较复杂的复位电路,供参考。

2.定时监视器的复位图1-9较复杂的复位电路1.2.5省电方式

AT89S52单片机提供了两种省电工作方式,即休眠方式和节电保持方式。其目的是尽可能地降低系统的功耗。在省电工作方式下VCC可由后备电源供电。图1-10为实现这种特性的控制电路。图1-10省电方式的控制电路

1.休眠运行方式

通过软件将PCON.0位的IDL置“1”指令执行完后,系统进入休眠运行方式,这时送向CPU内部去的时钟信号被封锁,CPU进入冻结状态,但内部时钟信号仍继续供给中断、串行口定时/计数器等。

2.省电保持方式

休眠和省电保持方式期间外部引脚状态如表1-3所示。表1-3休眠和省电保持方式期间外部引脚状态

1.编码说明

AT89系列单片机的型号编码由三个部分组成,它们是前缀、型号和后缀。格式见表1-4。

型号编码的后缀有4个参数组成,每个参数又有不同的参数值,代表不同的意义,如表1-5所示。1.3AT89系列单片机型号的编码说明及封装形式表1-4AT89系列单片机型号的编码表1-5AT89系列单片机型号的后缀说明

2.单片机的封装形式

单片机的封装形式有PDIP、PQFP、TQFP、PLCC、SOIC等多种。

其中,PDIP、PLCC、TQFP封装的AT89S52分别如图

1-11(a)、(b)、(c)所示。图1-11AT89S52的外部封装图

1.AT89S52单片机内部有哪些主要逻辑功能部件?各个功能部件的主要功能是什么?

2.何谓专用寄存器和通用工作寄存器?AT89S52的通用工作寄存器在应用时有何突出特点?为什么要设置通用工作寄存器?

3.AT89S52单片机的时钟周期、机器周期、指令周期是如何划分的?如何计算机器周期?设主振频率fosc=12MHz,则一个机器周期的T为多少?习题一

4.单片机复位有几种方式?复位后的机器初始状态如何?

5.AT89S52有哪几种省电方式?

6.每个机器周期出现两次ALE信号有效,意味着什么?在什么情况下只出现一次?

7.各自选通作用是什么?这样选通有什么重要意义?

8.试说明AT89S52单片机的时钟振荡周期、机器周期和指令周期之间的关系,以及机器周期是如何计算的。2.1AT89S52存储器结构

2.2并行I/O接口

2.3AT89S52的定时/计数器T0、T1和T2

2.4AT89S52的中断系统

2.5AT89S52的串行通信

习题二第二章AT89S52单片机的硬件结构片内程序存储器(内部ROM)、片外程序存储器(外部ROM)、片内数据存储器(内部RAM)和片外数据存储器(外部RAM),如图2-1所示。2.1AT89S52存储器结构图2-1AT89S52存储器结构2.1.1程序存储器

1.程序存储器的结构

AT89S52单片机芯片内配置了8KB的可编程Flash存储器(在2.1.2节中介绍),地址为0000H~1FFFH,可外部扩展到64KB,程序存储器的结构如图2-1(a)所示。

2.程序存储器中的中断矢量区

其他6个地址单元的入口地址为中断服务程序的矢量地址,如表2-1所列。表2-1中断源与中断矢量地址

3.外部程序存储器的扩展

在AT89S52单片机的芯片内配置有8KB的Flash存储器,当不能满足应用系统开发的需要时,可以扩展外部程序存储器,最大可扩展至64KB。这样,系统程序存储器的整个存

储空间最大可扩展为64KB,地址范围为0000H~FFFFH,其中芯片内配置的8KB的Flash程序存储器地址范围为0000H~1FFFH,如图2-1(a)所示。AT89S52单片机外部程序存储器的扩展方法如图2-2所示。图2-2外部存储器的扩展2.1.2片内Flash存储器操作

片内Flash操作包括对Flash标志字节的读出、并行编程、串行编程、程序加密等。

1.标志字节

AT89S52的标志字节共有3B,具体在存储器中的地址和含义如表2-2所示。表2-2标志字节的地址、内容和代表含义

2.程序存储器的加密

AT89S系列单片机提供了3位加密位(LB1、LB2、LB3),对每位加密位可维持原来的非编辑状态(U),也可进行编程(P),根据每位加密位是否进行了编程便可组合形成几种不同的保护模式如表2-3所示。表2-3程序加密位的保护模式

3.Flash存储器的并行编程

(1)Flash存储器的并行编程方式。图2-3所示为并行编程的接口电路图。

(2)并行编程的算法。从并行编程接口电路可以看出,当AT89S52单片机编程时,除了地址线和数据线外还需要一

些控制信号。表2-4所示为编程时这些控制信号的状态情况。图2-3AT89S52Flash存储器并行编程的接口电路表2-4AT89S52Flash存储器编程状态

(3)数据查询方式。

(4)准备就绪/忙(RDY/

)信号。

(5)程序的校验。图2-4所示为AT89S52片内Flash存储器并行校验的接口电路。

(6)Flash程序存储器的片擦除。图2-4AT89S52Flash存储器并行校验接口电路

4.Flash存储器的串行编程

1)Flash存储器的串行编程方式

当RST引脚接高电平时,可通过串行接口ISP对AT89S52Flash进行编程。串行接口ISP由引脚P1.5/MOSI、P1.6/MISO和P1.7/SCK组成,P1.5/MOSI作为串行指令的输入引脚,

P1.6/MISO为串行数据的输出引脚,P1.7/SCK为串行移位脉冲的输入引脚。串行编程/下载接口电路如图2-5所示。图2-5AT89S52Flash存储器串行编程/下载接口电路

2)Flash存储器的串行编程算法

(1)对RST、VCC和GND引脚加电.

(2)在P1.5/MOSI引脚输入编程允许指令。

(3)在P1.5/MOSI引脚输入写程序存储器指令。

3)AT89S52的串行编程指令

AT89S52单片机的串行编程指令为4B格式,表2-5给出了AT89S52单片机串行编程指令的格式构成和各指令的编码。表2-5AT89S52单片机的串行编程指令集在写程序加密位时,数位B1和B2的值与保护模式的关系如表2-6所示。表2-6B1和B2的值与保护模式的关系

4)串行编程模式下的数据查询

AT89S52在串行编程模式下也具有数据查询功能。

在写周期内,读出最后写入的字节时,则在串行数据输出口P1.6/MISO引脚上出现写入字节数据最高位的反码。

图2-6为串行编程模式下的时序图,表2-7为时序参数。图2-6串行编程模式下的时序图表2-7Flash编程串行模式时序参数2.1.3数据存储器

1.内部RAM

存储器空间如图2-1(b)所示。

1)工作寄存器区

2)可按位寻址的RAM区

如表2-8所示,在内部数据存储区RAM中的20H~2FH共16个单元可进行位寻址,这一存储空间称为“位寻址区”。

3)用户RAM区

4)片内高128B空间表2-8内部RAM中位地址表

2.外部数据存储器的扩展

片外数据存储器的扩展方法如图2-7所示。图2-7片外数据存储器的扩展2.1.4特殊功能寄存器SFR

表2-9给出了这些特殊功能寄存器的符号、名称和地址等。表2-9AT89S52特殊功能寄存器(SFR)的地址空间及复位后的值1.程序计数器PC

2.累加器Acc

3.B寄存器

4.程序状态字PSW

PSW的格式及位定义如表2-10所示。表2-10PSW的格式及位定义如表2-11所示,当使用名称寻址时,由RS1、RS0两位配合指定使用哪组寄存器。表2-11工作寄存器组与RS1、RS0的对应关系5.堆栈指针SP

6.数据指针DPTR

7.辅助功能寄存器AUXR和AUXR1

1)辅助功能寄存器AUXR

AUXR的格式及位定义见表2-12。表2-12AUXR的格式及位定义

2)辅助功能寄存器AUXR1

AUXR1的格式及位定义见表2-13。表2-13AUXR1的格式及位定义通过设置DPS可进行数据指针DPTR0和DPTR1的切换。切换时,应通过软件来保存DPS。切换示意图如图2-8所示。图2-8切换示意图8.并行端口P0~P3

9.串行数据缓冲器SBUF

10.定时/计数器T0、T1和T2单片机芯片内的一项重要内容就是并行I/O口。AT89S52有4个8位的并行双向I/O口,共32条I/O口线。这4组I/O口分别记作P0、P1、P2和P3,它们也属于特殊功能寄存器,具有字节寻址和位寻址功能。具体见表2-14。2.2并行I/O接口表2-14AT89S52并行I/O接口2.2.1P0口

1.P0口位结构和工作原理

P0口结构原理如图2-9所示.

2.P0口的功能

(1)作I/O接口使用。

(2)作地址/数据复用总线用。图2-9P0口位结构原理图2.2.2P1口

P1口是一个8位口,可按字节访问也可按位访问,其字节访问地址为90H,位访问地址为90H~97H。

1.P1口位结构和工作原理

P1口的位结构原理图如图2-10所示。

2.P1口的功能

3.P1口的第二功能图2-10P1口的位结构原理图2.2.3P2口

P2口是一个多功能的8位口,可以字节访问也可以位访问,其字节访问地址为A0H,位访问地址为A0H~A7H。

1.P2口位结构和工作原理

P2口位结构原理图如图2-11所示。

2.P2口的功能

3.P2口使用中要注意的问题

图2-11P2口位结构原理2.2.4P3口

P3口是一个多功能8位I/O接口,可按字节访问也可按位访问,其字节访问地址为B0H,位访问地址为B0~B7H。

1.P3口位结构与工作原理

P3口的位结构原理图如图2-12所示。

2.P3口的功能

图2-12P3口的位结构原理2.3.1定时/计数器的基本原理

2.3.2定时/计数器T0/T1的控制与状态寄存器

1.T0和T1的控制寄存器TCON

格式及位定义如表2-15所示。2.3AT89S52的定时/计数器T0、T1和T2表2-15T0和T1的控制寄存器TCON格式及位定义

2.定时/计数器T0和T1的工作模式寄存器TMOD

TMOD寄存器用于选择定时/计数器T0和T1的工作模式,低4位用于定时/计数器0,高4位用于定时/计数器1,两部分的操作功能完全相同。

其格式及位定义如表2-16所示。表2-16T0和T1的工作模式寄存器TMOD格式及位定义

(1)M1和M0:定时/计数器工作模式选择位,M1和M0的不同取值设定了定时/计数器的4种工作模式,如表2-17所示。

(2)C/

:选择定时或计数功能选择位。

(3)GATE:门控位。表2-17M1、M0工作方式及功能说明2.3.3T0/T1的四种工作模式

1.模式0

TMOD的M1和M0设置为00时,T1和T0工作在模式0。模式0是选择T1或T0的高8位和低5位(TL的高3位未用)组成一个13位的定时/计数器,当TL的低5位溢出时,向TH进位;当TH溢出时,向中断标志位TF(硬件置位TF)进位,并申请中断。T0的逻辑结构如图2-13所示。图2-13T0模式0逻辑结构定时时间t为

计数初值

最小的定时时间TMIN为

最大的定时时间TMAX为

2.模式1

用指令将M1、M0设为0、1时,定时/计数器工作在模式1。在模式1下,TL和TH全部使用,组成16位,如图2-14所示。图2-14T0模式1逻辑结构定时时间t为

计数初值X为

最小的定时时间TMIN为

最大的定时时间TMAX为

3.模式2

模式2是将TL配置成一个可自动重装的8位定时/计数器,而将TH作为预置寄存器。其逻辑结构如图2-15所示。图2-15T0模式2逻辑结构计数初值为

4.模式3

对于T0而言,在模式3中,内部控制逻辑把TH0和TL0配置成2个相互独立的8位计数器,如图2-16所示。因为T1在模式3下没有TF1可用,所以只能把计数溢出直接送给串行口,如图2-17所示。图2-16T0模式3逻辑结构图2-17T1模式3逻辑结构2.3.4定时/计数器T2的控制与状态寄存器

1.定时器T2控制寄存器T2CON

T2CON为T2的控制专用寄存器,格式与TCON不同,除了参与中断控制和定时控制外,还参与了串行口波特率的时钟选择。下面讲述与定时有关的控制位,其格式及位定义如表2-18所示。表2-18定时器T2控制寄存器T2CON格式及位定义

2.定时器T2模式寄存器T2MOD

T2MOD为T2方式控制寄存器,同TMOD一样,它只能用字节传送指令来设置其内容,而不能位寻址。字节地址为C9H,复位值为××××××00B,其格式及位定义如表2-19所示。表2-19定时器T2模式寄存器T2MOD格式及位定义2.3.5T2的工作模式

T2是一个功能较强的定时/计数器,具有自动重装和捕获能力。在特殊功能寄存器中有5个与T2有关的寄存器:控制寄存器T2CON、捕获寄存器RCAP2H和RCAP2L、定时寄存器高低字节TH2和TL2。根据T2CON和T2MOD特殊功能寄存器的设置,T2有4种操作模式,如表2-20所示。表2-20定时/计数器T2工作模式

1.自动重装模式

当DCEN=0时,T2为自动向上计数,自动重装模式如图2-18所示。图2-18T2自动重装模式(DCEN=0)当DCEN=1时,允许T2向上或向下计数,由引脚T2EX的电平状态控制计数方向。其自动重装模式原理如图2-19所示。图2-19T2自动重装模式(DCEN=1)

2.捕捉模式

当CP/=1时,T2工作在捕捉模式。捕捉模式是指在一定条件下,自动将计数器TH2和TL2的数据分别读入RCAP2H和RCAP2L。其工作原理如图2-20所示。图2-20T2捕捉式原理图

3.波特率发生器模式

当设置RCLK和TCLK同时为1或其中一个为1时,T2便进入波特率发生器模式。波特率发生器模式原理如图2-21所示。

当用T2作为波特率发生器时,波特率的计算公式为

波特率=图2-21T2波特率发生器模式

4.可编程时钟输出模式

P1.0引脚除了作普通I/O外,还有两个替代功能,一是可以编程为T2的外部计数脉冲输入端;二是可以编程为50%占空比的时钟输出端,即可编程时钟输出模式,如图2-22所示。

输出频率取决于振荡器频率和存于捕捉寄存器RCAP2中的重装数值,其计算公式为

时钟输出频率=

图2-22T2时钟输出模式2.4.1中断的基本概念

中断响应过程示意图如图2-23所示。2.4AT89S52的中断系统图2-23中断响应示意图

2.4.2中断源

中断源和中断矢量地址如表2-21所示。图2-24所示为AT89S52单片机的中断功能示意图。AT89S52的中断源可分成外部中断源和内部中断源。表2-21中断源和中断矢量地址图2-24AT89S52单片机的中断功能示意图2.4.3AT89S52的中断标志与控制

1.定时/计数器0、1控制寄存器TCON

TCON是定时/计数器和外部中断两者合用的一个特殊功能寄存器,复位时为00H,可位寻址。TCON的字节地址为88H,其格式如下:

2.定时器2控制寄存器T2CON

定时器2控制寄存器T2CON字节地址为C8H,其格式如下:

3.串行口控制寄存器SCON

串行口控制寄存器SCON字节地址为98H,其格式如下:

4.中断允许控制寄存器IE

AT89S52的中断均属于可屏蔽中断,即通过软件对特殊功能寄存器IE的设置,实现对各中断源的中断请求允许(开放)或屏蔽(禁止)的控制。中断控制寄存器IE的格式及各位含义如下:

5.中断优先级控制寄存器IP

中断优先级控制寄存器IP的字节地址为B8H,具有位寻址功能,可通过软件设置各个中断源的中断优先级。IP控制寄存器的格式如下:当同时有两个或两个以上相同优先级的中断请求时,则由内部按查询顺序决定优先响应的中断请求,排在顺序后面的、未被响应的中断请求将被挂起。其优先顺序由高到低顺序排列。优先顺序排列如表2-22所示。表2-22中断优先顺序2.4.4中断响应的条件、过程与时间

1.中断响应的条件

2.中断响应过程

3.中断响应时间

2.5.1串行通信概述

1.串行通信的通信方式

1)同步通信

面向字符型的数据格式又有单同步、双同步和外同步之分。

①单同步:发送方先传送一个同步字符,再传送数据块,接收方检测到同步字符后接收数据。

②双同步:发送方先传送两个同步字符,再传送数据块,接收方检测到同步字符就接收数据,如图2-25所示。2.5AT89S52的串行通信图2-25面向字符双同步数据帧格式

③外同步:用一条专用线来传送同步字符,以实现收发双方同步操作。

3种同步方式,均以两个字节的冗余检验码CRC作为一帧信息的结束。

面向位型的数据格式如下:

根据IBM的同步数据链路控制规程SDLC,SDLC数据帧格式如图2-26所示。图2-26SDLC数据帧格式

2)异步通信

异步通信的帧格式如图2-27所示。图2-27异步通信数据的帧格式

2.串行通信的传输方式

串行通信的传输方式可以分为单工、半双工及全双工3种。

2.5.2RS232C标准总线及通信设计

1.RS232C接口的引脚描述

RS232C标准规定接口有25根连线、D型插头和插座,采用25芯引脚或9芯引脚的连接器,RS232C标准接口如图2-28所示。

虽然RS232C标准规定接口定义了25条连线,但通常只有以下9个信号经常使用,其对应关系如表2-23所示。

2.RS232C接口的具体规定图2-28RS232C标准接口图表2-239针连接器和25针连接器的对应关系2.5.3AT89S52串行通信接口

1.串行口的控制

1)串行数据缓冲器SBUF

2)串行口控制寄存器SCON

串行口的工作模式设定和基本控制操作通过设定串行口控制寄存器SCON完成,串行口控制寄存器SCON除可进行字节寻址外,还可以进行位寻址,其各位定义及格式如下:

(1)SM0,SM1:串行口工作模式选择位。对应着串行口的4种工作模式,如表2-24所示。

(2)SM2:多极通信控制位。表2-24串行口工作模式

3)电源控制寄存器PCON

电源控制寄存器PCON中只有SMOD(PCON.7)位与串行口的工作有关。

需要注意的是,PCON寄存器不能位寻址,对于SMOD位的修改只能采用字节操作方式,如MOVPCON,#80H。其位定义及格式如下:

2.串行口的工作模式及串行通信波特率

1)模式0

2)模式1

波特率可以用下式表示:

串行口方式1的波特率=

式中,n=32或16,由PCON的SMOD1位决定。SMOD1=0,n=32;SMOD1=1,n=16。因此,串行口模式1的波特率也可以用下式表示:

串行口方式1的波特率=

×(定时器T1或T2的溢出率)

串行口接收/发送波特率发生器使用的定时器如表2-25所列。表2-25串行口接收/发送波特率发生器使用的定时器为了实现定时器计数初值重装,通常选择模式2。在模式2中,TL1作计数用,TH1用于保存计数初值,当TL1计满溢出时,TH1的值自动重装到TL1中。因此一般选用T1工作于方式2作波特率发生器。设T1的计数初值为X,C/

=0时,那么每过256-X个机器周期,定时器T1就会产生一次溢出。

则T1的溢出周期为

溢出周期=

×(256-X)溢出率为溢出周期的倒数,所以

波特率=

定时器T1模式2的计数初值X由上式可得:

定时器T1可以通过中断方式实现非常低的波特率,将TMOD的高半字节设为0001B。T1配置为16位定时器,并使用中断进行16位软件重装,如表2-26所列。表2-26T1在常用波特率下重装值的设定定时器T2工作在波特率发生器方式时,内部结构如图

2-29所示,其操作与自动重装载方式类似。图2-29T2作波特率发生器时内部逻辑结构当外部时钟信号由T2引脚引入时,

波特率=

当时钟信号由内部产生时,

波特率=

自动重装的计数初值为

RCAP2H、RCAP2L=65536-

表2-27列出了常用的波特率及在RCAP2中存入的T2的重装值。表2-27常用波特率对应的T2计数初值

1.AT89S52单片机存储器的组织结构是怎样的?

2.AT89S52单片机的存储器可划分为几个空间?各自的地址范围和容量是多少?在使用上有什么不同?

3.AT89S52单片机如何确定和改变当前的工作寄存器组?

4.AT89S52单片机的程序ROM中0000H、0003H、000BH、0013H、001BH和0023H这几个地址具有什么特殊的功能?习题二

5.AT89S52单片机有哪几个特殊功能寄存器?可按位寻址的SFR有几个?

6.程序状态字PSW的作用是什么?常用标志位有哪些?其作用是什么?

7.AT89S52单片机的信号有什么功能?如何正确地使用?

8.内部RAM的低128B划分为几个区域?各有什么功能及特点?

9.ALE信号有何功用?一般情况下它与机器周期的关系如何?在什么条件下ALE信号可用作外部设备的定时信号?

10.堆栈的作用是什么?堆栈指示器的作用又是什么?

11.AT89S52单片机的P0、P1、P2和P3口各有什么特点?

12.什么是I/O接口?I/O接口的作用是什么?

13.AT89S52片内设有4个I/O端口(并行),使用时有哪些特点和分工?简述各个并行

I/O口的结构特点。

14.何谓准双向I/O口?在使用中如何正确处理?

15.何谓分时复用?在什么情况下出现复用?在硬件应作何处理?

16.AT89S52的并行I/O端口信息有几种读取方法?读修改写操作是针对I/O口的哪一部分进行的?有什么优点?

17.何谓总线?采用总线结构有何突出优点?AT89S52的4组并I/O口,在什么情况下作三总线用?

18.AT89S52内部设有几个定时/计数器?其核心部件是什么?简述定时/计数器0和1的工作方式,为什么只有定时/计数器0有工作方式3?

19.何谓可编程的?如何选择和设定定时、计数和工作方式?设某系统选择定时/计数器。以定时模式工作于方式1;定时/计数器1以外部计数模式工作于方式0,请写出其控制字。

20.设定时/计数器0以定时模式工作于方式1,主频fosc=6MHZ,要求定时时间T=10ms,请计算出定时计数初值,并写出初始化程序段。

21.AT89S52的定时/计数器2有何特点?它有哪几种工作方式?

22.AT89S52的定时/计数器2与0或1的自动再装入工作方式有什么不同,定时/计数器2的自动再装入工作方式有什么特点?如何使用?

23.异步通信和同步通信的主要区别是什么?AT89S52有没有同步通信功能,是方式几?

24.通信波特率的定义是什么?采用定时/计数器1的方式2作为波特率发生器,它所产生的波特率范围是多少?采用定时/计数器2作波特率发生器又如何?同步通信的波特率如何计算?

25.AT89S52如何实现主从式多机通信?简述其操作过程。

26.如何应用AT89S52片内定时监视器(WDT)?

27.AUXR辅助功能寄存器的作用是什么?

28.中断的含义是什么?为什么要采用中断技术?

29.何谓查询中断?何谓矢量中断?何谓中断入口地址?

30.AT89S52提供哪几种中断?什么是中断优先级?什么是中断嵌套?什么是同级内的优先权管理?

31.外部中断请求有哪两种触发方式?对触发信号有什么要求?如何选择和设置?

32.何谓可屏蔽中断?AT89S52中断系统设有几级屏蔽?如何进行程序控制?

33.何谓断点?为什么要进行断点现场保护?有哪些信息应考虑进栈保护?

34.主机响应中断是有条件的,为什么要有这些条件?这些条件与主机响应中断的速度有什么关系?

35.编制中断服务程序时应注意哪些问题?

36.在AT89S52中,哪些中断请求标志可以随着主机响应而自动撤除?哪些中断请求标志需由用户通过程序来撤除?

37.请编写为跳变触发方式的中断初始化程序段。3.1单片机指令系统概述

3.2寻址方式

3.3数据传送类指令

3.4算术运算类指令

3.5逻辑运算及移位指令

3.6控制转移类指令

3.7子程序调用和返回指令

3.8位操作类指令

3.9汇编程序格式与伪指令

习题三第三章AT89S52单片机指令系统3.1.1指令、指令系统的概念

指令是计算机内部具有特殊功能的操作命令。

3.1.2单片机指令系统及其指令格式

AT89S52单片机指令系统具有功能强、指令短、执行快等特点,其与MCS-51指令集兼容,共有111条指令。

汇编语言指令有如下格式:

[标号:]操作码助记符[目的操作数][,源操作数][;注释]3.1单片机指令系统概述3.2.1立即寻址

操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找,故称为立即寻址。

3.2寻址方式3.2.2寄存器寻址

在指令选定的某寄存器中存放或读取操作数,以完成指令规定的操作,称为寄存器寻址。

3.2.3寄存器间接寻址

由指令指出某一寄存器的内容作为操作数地址的寻址方法,称为寄存器间接寻址。

寄存器间接寻址示意图如图3-1所示。图3-1寄存器间接寻址示意图3.2.4直接寻址

指令中直接给出操作数所在的存储器地址,以供取数或存数的寻址方式称为直接寻址。

3.2.5基址寄存器加变址寄存器间接寻址

基址寄存器加变址寄存器间接寻址,简称变址寻址。例如:MOVCA,@A+DPTR指令中的源操作数就是这种寻址方式。该指令寻址及操作功能如图3-2所示。图3-2寄存器间接寻址示意图3.2.6相对寻址

相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel,而构成实际操作数地址的寻址方法。

使用相对寻址时要注意以下两点:

(1)当前PC值是指相对转移指令的存储地址加上该指令的字节数。

(2)偏移rel是有符号的单字节数。以补码表示,其值的范围是-128~+127(00H~FFH),负数表示从当前地址向前转移,正数表示从前地址向后转移。所以,相对转移指令满足条件后,转移的地址(目的地址)为

目的地址=当前PC值+rel=指令存储地址+指令字节数+rel3.2.7位寻址

位寻址是在位操作指令中直接给出位操作数的地址,可以对片内RAM中的128位和特殊功能寄存器SFR中的93位进行寻址。数据传送类指令有29条,这类指令是将源操作数传送到指定的目的地址,传送后源操作数保持不变。分类如下:3.3数据传送类指令3.3.1访问片内数据存储器的一般数据传送指令

所有指令具有统一的格式,其格式如下:

MOV〈目的操作数〉,〈源操作〉;目的操作数单元←源操作数(或单元)

操作码助记符都是“MOV”,目的操作数和源操作数不同寻址方式的组合就派生出该类的全部指令。因此,记忆这类指令的关键在于掌握两个操作数的各种寻址方式的组合关系。

图3-3给出了该类指令的操作关系图。图3-3访问片内RAM的一般传送指令操作关系图根据图3-3可以推出访问片内数据存储器的一般数据传送类的16条指令。表3-1给出了这些指令及相关说明。表3-1访问片内RAM的一般传送指令表【例3-1】设内部RAM(30H)=40H,(40H)=10H,(10H)=00H,(P1)=CAH,分析以下程序执行后各单元及寄存器、P2口的内容。

MOVR0,#30H;(R0)←30H

MOVA,@R0

;(A)←((R0))

MOVR1,A;(R1)←(A)

MOVB,@R1;(B)←((R1))

MOV@R1,P1;((R1))←(P1)

MOV

P2,P1;(P2)←(P1)

MOV

10H,#20H;(10H)←20H

执行上述指令后的结果为:(R0)=30H,(R1)=(A)=40H,(B)=10H,(40H)=(P1)=(P2)=CAH,(10H)=20H。3.3.2片内特殊传送指令

1.堆栈操作指令

堆栈操作指令共有如下两条:

这两条指令都是双字节指令,机器码分别为:C0

direct和D0

direct。【例3-2】若在外部程序存储器中2000H单元开始依次存放0~9的平方值,数据指针(DPTR)=3A00H,用查表指令取得2003H单元的数据后,要求保持DPTR中的内容不变。

完成上述功能的程序如下:

MOV

A,#03H;(A)←03H

PUSHDPH

;保护DPTR高8位入栈

PUSH

DPL;保护DPTR低8位入栈

MOVDPTR,#2000H;(DPTR)←2000H

MOVC

A,@A+DPTR;(A)←(2000H+03H)

POPDPL;弹出DPTR低8位

POP

DPH

;弹出DPTR高8位

执行结果:(A)=09H,(DPTR)=3A00H。由此可见,虽然在程序中改变了DPTR的内容,但利用PUSH和POP指令可对其进行保护和恢复。需要注意的是堆栈先进后出的原则,否则DPL和DPH弹出时互换。

2.数据交换指令

数据交换指令共有如下5条:

指令助记符操作功能注释机器码(H)

XCHA,direct

;(A)←→(direct)

C5direct

XCHA,@Ri

;(A)←→((Ri))C6~C7

XCHA,Rn

;(A)←→(Rn)C8~CF

XCHDA,@Ri;(A3~0)←→((Ri))3~0

D6、D7

SWAPA;(A7~4)←→(A3~0)C5direct

【例3-3】设(R0)=30H,(30)=4AH,(A)=28H,则

执行XCHA,@R0后,结果为(A)=4AH,(30H)=28H。执行XCHDA,@R0后,结果为(A)=2AH,(30H)=48H。执行SWAPA后,结果为(A)=82H。3.3.3片外数据存储器数据传送指令

MCS-51系列单片机CPU对片外扩展的数据存储器RAM或I/O口进行数据传送,必须采用寄存器间接寻址的方法,通过累加器A来完成。这类指令共有以下4条单字节指令,指令操作码助记符都为MOVX。

指令助记符操作功能注释机器码(H)

MOVXA,@DPTR

;(A)←((DPTR))E6

MOVXA,@Ri

;(A)←((DPTR))E2、E3

MOVX@DPTR,A

;((DPTR))←(A)F0

MOVX@Ri,A;((Ri))←(A)F2、F3【例3-4】设外部RAM(0203H)=FFH,分析以下指令执行后的结果。

MOVDPTR,#0203H

;(DPTR)←0203H

MOVX

A,@DPTR

;(A)←((DPTR))

MOV30H,A

;(30H)←(A)

MOV

A,#0FH;(A)←0FH

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

执行结果为:(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH。3.3.4访问程序存储器的数据传送指令

有如下两条单字节指令,指令操作码助记符为MOVC。

指令助记符操作功能注释机器码MOVC

A,@A+DPTR;(A)←((A)+(DPTR))

93

MOVCA,@A+PC;(PC)←(PC)+1,(A)←((A)+(PC))83

偏移量计算公式为

偏移量=表首地址-(MOVC指令所在地址+1)【例3-5】从片外程序存储器2000H单元开始存放0~9的平方值,以PC作为基址寄存器进行查表得9的平方值。设MOVC址所在地址(PC)=1FF0H,则偏移量=2000H-(1FF0H+1)=0FH。

相应的程序如下:

MOVC

A,#09H;(A)←09H

ADD

A,#0FH;用加法指令进行地址调整

MOVC

A,@A+PC;(A)←((A)+(PC)+1)

执行结果为:(PC)=1FF1H,(A)=51H。如果用以DPTR为基址寄存器的查表指令,其程序如下:

MOVDPTR,2000H;置表首地址

MOVA,09H

MOVCA,@A+DPTR

3.4.1加、减法指令

加、减法指令包括不带进位加法、带进位加法、带借位减法、加1和减1指令。其中前三种指令除操作码助记符不同外,它们的两个操作数的寻址方式组合完全相同,后两种指令的操作数的寻址方式也基本相同。为了抓住这些特点来记忆指令,我们将以图3-4所示的形式进行说明,并将在表3.2中集中地列出这些指令。3.4算术运算类指令图3-4加减法指令形式结构图(a)加、减法指令关系图;(b)加1、减1指令关系图表3-2加、减法指令表【例3-6】设(A)=49H,(R0)=6BH,分析执行指令ADDA,R0后的结果。

结果为:(A)=B4H,OV=1,CY=0,AC=1,P=0

【例3-7】设(A)=C3H,数据指针地位(DPL)=ABH,CY=1,分析执行指令ADDC

A,DPL后的结果。

结果为:(A)=6FH,CY=1,AC=0,P=0【例3-8】设(A)=52H,(R0)=B4H,分析执行如下指令后的结果。

CLRC;是位操作指令,是进位位清0

SUBBA,R

0

结果为:(A)=9EH,CY=1,AC=1,OV=1,P=1【例3-9】设(R0)=7EH,(7EH)=FFH,(7FH)=38H,(DPTR)=10FEH,分析逐条执行下列指令后各单元的内容。

INC@R0 ;使7EH单元内容FFH变为00H

INC@R0 ;使R0的内容由7EH变为7FH

INC@R0 ;使7FH单元内容由38H变为39H

INCDPTR ;使DPL为FFH,DPH不变

INCDPTR ;使DPL为00H,DPH为11H

INCDPTR ;使DPL为01H,DPH不变3.4.2十进制调整指令

十进制调整指令是一条对二—十进制的加法进行调整的指令,它是一条单字节指令,机器码为D4H,两个压缩BCD码按二进制相加,必须在加法指令ADD、ADDC后,经过本指令调整后才能得到正确的压缩BCD码和数,实现十进制的加法运算。

【例3-10】对BCD码加法65+58→DBH进行十进制调整。

参考程序如下:

MOVA,#65H ;(A)←65

ADDA,#58H ;(A)←(A)+58

DAA ;十进制调整

执行结果:(A)=(23)BCD,(CY)=1,即65+58=123。使用时应注意:DA指令不能对减法进行十进制调整。做减法运算时,可采用十进制补码相加,然后用DAA指令进行调整。例如:

70-20=70+[20]补=70+(100-20)=70+80=150

机内十进制补码可采用:[X]补=9AH-|X|。【例3-11】设片内RAM30H,31H单元中分别存放着两位BCD码标志的被减数和减数,两数相减的差仍以BCD码的形式存放在32H单元中。可用下面的程序实现:

CLRC

MOVA,#9AH

SUBBA,31H;求减数的十进制补码

ADDA,30H ;作十进制补码加法

DAA ;进行BCD调整

MOV32H,A ;将BCD码的差存放在32H单元3.4.3乘、除法指令

乘、除法指令为单字节4周期指令,在指令执行周期中是最长的两条指令。

1.乘法指令

乘法指令的指令格式为:

2.除法指令

除法指令的指令格式为:

逻辑运算及移位指令共有24条,其中逻辑运算指令有“与”、“或”、“异或”、累加器A清0和求反等20条,移位指令有4条。该类指令中,累加器A清0和取反、移位指令都是针对累加器A进行操作的单操作数指令。逻辑“与”、“或”、“异或”操作指令除操作码助记符不同以外,后跟的两个操作数的寻址方式组合完全相同,且有一部分寻址方式组合与加、减法指令相同。为突出这些特点,我们以图3-5所示形式进行说明。在表3-3中已列出逻辑操作的全部指令。3.5逻辑运算及移位指令图3-5逻辑指令形式结构图表3-3逻辑操作指令类【例3-12】(P1)=C5H=11000101B,屏蔽P1口高4位而保留低4位。

执行指令:

ANLP1,#0FH

结果为:

(P1)=05H=00000101B

逻辑“或”指令常用来使字节中某些位置“1”,其他位保持不变。则欲置的位用“1”与该位相或,保留不变的位用“0”与该位相或。【例3-13】若(A)=C0H,(R0)=3FH,(3FH)=0FH

执行指令:

ORLA,@R0

结果为:

(A)=CFH=11001111B

逻辑“异或”指令常用来使字节中某些位进行取反操作,其他位保持不变。欲某位取反则该位与“1”相异或;欲某位保留则该位与“0”相异或。还可利用异或指令对某单元自身异或,以实现清0操作。【例3-14】若(A)=B5H=10110101B,执行下列操作:

XRLA,#0F0H

;A的高4位取反,低4位保留,(A)=01000101R=45H

MOV30H,A

;(30H)=45H

XRLA,30H;自身异或使A清0

【例3-15】设(A)=5AH=90,且CY=0,则

执行指令RLA后,(A)=B4H=180。

执行指令RRA后,(A)=2DH=45。

执行指令RLCA后,(A)=B4H=180。

执行指令RRCA后,(A)=2DH=45。3.6.1无条件转移指令

无条件转移指令有4条,如表3-4所示。3.6控制转移类指令表3-4无条件转移指令

1.LJMP(长转移指令)

LJMP指令执行后,程序无条件地转向16位目标地址(addr16)处执行,且不影响标志位。

2.AJMP(绝对转移指令)

AJMP的机器码是由11位直接地址addr11和指令操作码00001按下列分布组成的:该指令执行后,程序转移的目的地址是由AJMP指令所在位置的地址PC值加上该指令字节数2,构成当前PC值。取当前PC值的高5位与指令中提供的11位直接地址形成转移

的目的地址,即

3.SJMP(相对短转移指令)

SJMP指令的操作数rel用8位带符号数补码表示,占指令的一个字节。因为8位补码的取值范围为-128~+127,所以该指令的转移范围是:相对PC当前值向前转128字节,向后转127字节,即

转移目的地址=SJMP指令所在地址+2+rel用汇编语言编程时,指令中的相对地址rel往往用欲转移至地址的标号(符号地址)表示。机器汇编时,能自动算出相对地址值;但手工汇编时,则需自己计算相对地址值rel。rel的计算公式如下:

向前转移:

rel=FEH-(SJMP指令地址与目的地址差的绝对值)

向后转移:

rel=FEH-(SJMP指令地址与目的地址差的绝对值)-2

4.JMP@A+DPTR(相对长转移指令)

相对长转移指令是以数据指针DPTR的内容为基址,以累加器A的内容为相对偏移量,在64KB范围内无条件转移。

【例3-16】根据累加器A的值,转移到不同处理程序的入口。

MOVDPTR,#TABLE ;表首地址送DPTR

JMP

@A+DPTR ;根据A值转移

TABLE:AJMPTAB1 ;当(A)=0时转TAB1执行

AJMPTAB2 ;当(A)=2时转TAB2执行

AJMPTAB3 ;当(A)=4时转TAB3执行

3.6.2条件转移指令

表3-5中列出了这些指令。表3-5条件转移指令

1.判零条件转移指令

【例3-17】将片外RAM首地址为DATA1的一个数据块转送到片内RAM首地址为DATA2的存储区中。

外部RAM向内部RAM的数据转送一定要经过累加器A,利用判零条件转移正好可以判别是否要继续传送或者终止。

完成数据传送的参考程序如下:

MOV R0,#DATA1 ;R0作为外部数据块的地址指针

MOV R1,#DATA2 ;R1作为内部数据块的地址指针

LOOP: MOVX A,@R0 ;取外部RAM数据送入A

HERE: JZ HERE ;数据为0终止传送

MOV @R1,A ;数据传送至内部RAM单元

INC R0 ;修改指针,指向下一数据地址

INC R1

SJMP LOOP ;循环取数

2.比较转移指令

【例3-18】当从P1口输入数据为01H时,程序继续执行,否则等待,直到P1口出现01H。

参考程序如下:

MOVA,#01H;立即数01H送A

WAIT: CJNEA,P1,WAIT;(P1)≠01H,则等待

3.减1条件转移指令

【例3-19】将内部RAM从DATA单元开始的10个无符号数相加,相加结果送入SUM单元保存。设相加结果不超过8位二进制数,则相应的程序如下:

MOVR0,#0AH ;设置循环次数

MOVR1,#DATA ;R1作地址指针,指向数据块首地址

CLRA ;A清0

LOOP:

ADDA,@R1 ;加一个数

INCR1 ;修改指针,指向下一个数

DJNZR0,LOOP ;R0减1,不为0循环

MOVSUM,A ;存10个数相加的和3.7.1子程序调用指令

子程序调用指令有长调用和绝对调用两条,它们都是双周期指令。3.7子程序调用和返回指令长调用子指令:绝对调用子指令:

ACALL与AJMP一样提供11位地址,只能调用与PC在同一2KB范围内的子程序。由于该指令为2字节指令,所以执行该指令时应执行(PC)←(PC)+2以获得下一条指令地址,并把该地址压入堆栈作为返回地址。该指令机器码的构成也与AJMP类似,只不过操作码第一字节其高半字节的最后一位是1,机器码的组成如下:3.7.2返回指令

返回指令共有两条:一条是对应两条调用指令的子程序返回指令RET,另一条是对应从中断服务程序的返回指令RETI。3.7.3空操作指令

空操作指令的指令格式为:

NOP;(PC)←(PC)+1

空操作指令是一条单字节单周期指令。位操作也称布尔变量操作,它是以位(bit)作为单位来进行运算和操作的。

位处理指令列于表3-6中。3.8位操作类指令表3-6位处理指令【例3-20】利用位操作指令,模拟图3-6所示硬件逻辑电路的功能。参考程序如下:

PR2:MOVC,P1.1 ;(CY)←(P1.1)

ORLC,P1.2

温馨提示

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

最新文档

评论

0/150

提交评论