单片机技术实验指导书_第1页
单片机技术实验指导书_第2页
单片机技术实验指导书_第3页
单片机技术实验指导书_第4页
单片机技术实验指导书_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

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

文档简介

单片机技术实验指导书

目录

第1章单片机的硬件基础2

第2章C51单片机的内部资源12

第3章C51单片机的系统扩展30

第4章串行通信接口35

第5章51单片机系统开发基础48

第6章MCS51系列单片机实验56

实验•扩展存储器读写实验56

实验二P1口输入、输出实验58

实验三P3口输出控制继电器实验60

实验四光电隔离实验61

实验五简单I/O实验(交通灯控制)62

实验六外部中断实验(急救车与交通灯)64

实验七定时器实验66

实验八计数器实验68

实验九8255输入、输出实验70

实验十8255扫描键盘、显示实验72

实验H••一8155输入、输出实验74

实验十二8155扫描键盘、显示实验76

实验十三8279显示实验78

实验十四8279显示电子钟实验80

实验十五8279键盘显示实验(电子秒表)83

实验十六串并转换实验86

实验十七单片机串行口与PC机通讯实验88

实验十九D/A转换实验90

实验二十A/D转换实验91

实验二十二电子音调实验93

实验二十三语音芯片实验96

实验二十四LCD显示实验99

实验二十五LED点阵显示实验101

实验二十六直流电机转速测量实验104

实验二十七步进电机控制实验107

实验二十八温度测量与显示实验109

实验二十九X25045读写及看门狗溢出实验112

实验三十时钟显示(HT1380)实验118

实验三H-—D/A(TLC5615)转换实验123

实验三十二A/D(TLC1543)转换实验126

实验三十三A/D/A综合运用实验130

实验三十四CAT93c46读写实验131

实验三十六单片机系统中的红外通信实验134

实验三十七PS2键盘扫描码读取显示实验142

EAT59851实验指导W

第1章单片机的硬件基础

重点内容:

•单片机的内部结构

•单片机引脚功能

•单片机的工作时序

•单片机的工作方式

•单片机的最小系统

•本章小结

一、单片机的内部结构

1、中央处理器

51单片机内部有一个8位的面向控制、功能强大的微处理器,其主要功能是运算和控制整个系统协

调工作。它由运算器和控制器两部分组成。

1.运算器

运算器主要实现对操作数的算术运算、逻辑运算和位操作。主要包括算术逻辑运算部件(ALU)、

累加器A、寄存器B、程序状态字PSW、暂存器、布尔外理器以及十进制调整电路等部件。

(1)算术与逻辑部件ALU(ArithmeticalLogicUnit)

算术逻辑单元ALU是计算机中必不可少的数据处理单元之一,主要对数据进行算术逻辑运算。从

结构上看,该单元实质是一个全加器,它的运算结果将对程序状态字PSW产生影响。该单元主要

完成以下操作:

•力口、减、乘、除运算;

•增量(加1)减量(减1)运算;

•十进制数调整;

•位操作中的置位、复位和取反操作;

•与、或、异或等运算操作;

•数据传送操作。

②累加器A

累加器A是CPU中最繁忙、使用频度最高的一个特殊功能寄存器,简称为ACC或A寄存器,其作

用为:

•累加器A作为ALU的输入数据源之一,也是ALU的输出;

•CPU中的数据传送大多数都通过累加器,累加器A是一个非常重要的数据中转站。

③寄存器B

寄存器B是一个8位寄存器,是为ALU进行乘、除运算而设置的。在执行乘法运算指令的时候,

寄存器B用于存放其中的一个乘数和乘积的高8位数。在执行出发运算的时候,寄存器B用于存放

除数和余数。在其他情况下,B寄存器可以作为一个普通的寄存器使用。

④程序状态字

程序状态字PSW(ProgramStatusWords)是一个8位的专用寄存器,用于存储程序运行中的各种状

态信息。它被逐位定义,可以位寻址,

⑤暂存器

用以暂存进入运算器之前的数据。

⑥布尔处理器

2

MCS-51单片机技术实验基础

布尔处理器(位处理器)是51单片机ALU所具有的一种功能。单片机指令系统的位处理指令集(17

条位操作指令),存储器中的位地址空间,以及借用程序状态寄存器PSW中的进位标志CY做为位

操作“累加器”,构成了51单片机内的布尔处理器。它可对直接寻址的位(bit)变量进行位处理,如

置位、清零、取反、测试转移以及逻辑“与"、"或”等位操作,使用户在编程时可以利用指令完成原

来单凭复杂的硬件逻辑锁完成的功能,并可方便地设置标志等。

⑦十进制调整电路

顾名思义,用来进行十进制调整的电路。

2.控制器

控制器是控制计算机系统各种操作的部件,其功能是控制指令的读取、译码和执行,对指令的执行

过程进行定时控制,并根据执行结果决定其后的操作。它包括时钟发生器、定时控制逻辑、复位电

路、指令寄存器IR、指令译码器ID、程序计数器PC、程序地址寄存器、数据指针DPTR、堆栈指

针SP等。

2、存储器结构

51系列单片机的存储组织采用的是哈佛(Harvard)结构,即将程序存储器和数据存储器截然分开,

程序存储器和数据存储器具有各自独立的寻址方式、寻址空间和控制系统。这种结构对于单片机“面

向控制”的实际应用极为方便。

在物理结构上,51系统单片机有4个存储器空间:

•程序存储器:片内程序存储器和片外程序存储器;

•数据存储器:片内数据存储器和片外数据存储器。

51单片机内部有一个8位的面向控制、功能强大的微处理器,其主要功能是运算和控制整个系统协

调工作。它由运算器和控制器两部分组成。

1.运算器

运算器主要实现对操作数的算术运算、逻辑运算和位操作。主要包括算术逻辑运算部件(ALU)、

累加器A、寄存器B、程序状态字PSW、暂存器、布尔外理器以及十进制调整电路等部件。

2、存储器结构

1.存储原理

为了探讨计算机的存储原理,先让我们做一个实验:这里有两盏灯,我们知道灯只有亮和灭两种状

态,我们能用'0'和来代替这两种状态,规定亮为'1',灭为'0'。现在这两盏灯总共有儿种状态呢?

我们列表来看一下,如图所示:

存储器是利用电平的高低来存放数据的。它是由大量寄存器组成的,其中每一个寄存器就称为个

存储单元。它可存放一个有独立意义的二进制代码。一个代码由若干位(bit)组成,代码的位数称

为位长,习惯上也称为字长。

2.内部程序存储器

51单片机程序存储器是用来存放经过调试正确的应用程序和表格之类的固定数据的。

3.内部数据存储器

数据存储器由随机存储器RAM组成,这种存储器又叫读写存储器。它不仅能读取存放在存储单元

中的数据,还能随时写入新的数据,写入后原来的数据就丢失了。断电后RAM中的信息全部丢失。

因此,RAM用来存放运算中的数据、中间结果及最终结果。

4.特殊功能寄存器

在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,有程序存储器,有数据存储器,

此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。对并行I/O口的读写只

要将数据送入到相应I/O口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在

单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

3

EAT59851实验指导W

5.存储器结构特点

单片机的存储器结构与微型计算机有很大的不同。它的两个重要的特点是:一是把数据存储器和程

序存储器截然分开,二是存储器有内外之分。对于面向控制应用且又不可能具有磁盘的单片机系统

来说,程序存储器是至关重要的,但数据存储器也不可少。为此单片机的存储器分为数据存储器和

程序存储器,其地址空间、存取指令和控制信号各有一套。

3、I/O端口结构

51系列单片机有1个8位双向并行I/O端口P0和3个8位准双向并行I/O端口P1〜P3。每一位端口

都由口锁存器、输出锁存器和输入缓冲器组成。它们已被归入专用寄存器之列,并且具有字节寻址

和位寻址功能。

1.P0端口

图表示了P0端口中某一位的电路结构。由图可见,电路中包含有一个数据输出锁存器、两个

三态数据输入缓冲器、一个数据输出的驱动电路和一个输出控制电路。当对P0口进行写操作时,

由锁存器和驱动电路构成数据输出通路。由于通路中已有输出锁存器,因此数据输出时可以与外设

直接连接,而不需再加数据锁存电路。

地址/数据VCC

P1端口某一位的电路结构如图2.7所示。因为P1口通常是作为通用I/O口使用的,所以在电路

结构上与P0口有一些不同之处,主要表现为2点:首先它不再需要多路转接电路MUX;其次是电

路的内部有上拉电阻,与场效应管共4同组成输出驱动电路。为此,P1口作为输出口使用时,已经

能向外提供推拉电流负载,无需再外接上拉电阻。当P1口作为输入口使用时,同样也需先向其锁

存器写“1”,使输出驱动电路的FET截止。

4

MCS-51单片机技术实验基础

P2端口的电路如图2.8所示。P2口电路比Pl口电路多了一个多路转接电路MUX,这又正好与

P0口一样。P2口可以作为通用I/O口使用,这时多路转接电路开关倒向锁存器Q端。通常情况下,

P2口是作为高位地址线使用而不作为数据线使用,此时多路转接电路开关应倒向相反方向。

VCC

P3端口某一位的电路如图2.9所示。P3口的特点在于,为适应引脚信号第二功能的需要,增加

了第二功能控制逻辑。对于于第二功能信号有输入和输出两类。

第二输出功能VCC

第:输入功能

4、定时器/计数器结构

8051有两个16位定时器/计数器T0和T1,分别与2个8位寄存器TOL、T0H及TIL、T1H对应。

8051的定时器/计数器可以工作在定时方式或计数方式。

1.定时方式

定时方式实现对单片机内部的时钟脉冲或分频后的脉冲进行计数。

2.计数方式

实现对外部脉冲的计数,读者将对定时器/计数器将在后续章节中进行具体学习。

5、中断系统

在单片机系统设计设计中,中断是一个必不可少的概念。

在程序的执行过程中,有时候需要停下手头的工作转而执行其他的一些重要工作,并在执行完后返

回到原来的执行的程序中,然后继续执行未完成的任务。这就是中断的•般过程。

8051有5个中断源,两个中断优先级控制,可以实现两个中断服务嵌套。两个外部中断INTO、INT1,

5

EAT59851实验指导W

两个定时器中断TO、T1,还有一个串行口中断。

中断的控制由中断允许寄存器IE和中断优先级寄存器IP实现。关于中断的设置和实现将在后续章

节进行具体讲解学习。

二、单片机引脚功能

2、引脚及功能

1.供电引脚

供电引脚接入AT89s51的工作电源。

•VCC:电源正级,一般为+5V。

•GND:电源地。

2.I/O引脚

顾名思义,就是输入/输出引脚。

•P0:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位

地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;

在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

•Pl:P1口是一个具有内部上拉电阻的8位双向I/O口,pl输出缓冲器能驱动4个TTL逻辑

电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,

被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和PL2分别作定时器/计数

器T2的外部计数输入(P1.0/T2)和时器/计数器T2的触发输入(P1.1"2EX),具体功能见表2.7。

在flash编程和校验时,P1口接收低8位地址字节。

•P2:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑

电平。对P2端口写力”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,

被外部拉低的引脚由于内部电阻的原因,将输出电流(HL)。在访问外部程序存储器或用16位地址

读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口

使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输

出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

•P3:P3口是一个具有内部上拉电阻的8位双向I/OU,p2输出缓冲器能驱动4个TTL逻辑

电平。对P3端口写T时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,

被外部拉低的引脚由于内部电阻的原因,将输出电流(HL)。P3口亦作为AT89s52特殊功能(第二

功能)使用,见表2.8。在flash编程和校验时,P3口也接收一些控制信号。

3.控制引脚

控制引脚包括RST、ALE、、,此类引脚提供控制信号,有些引脚具有复用功能。

•RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时

完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以

使此功能无效。DISRTO默认状态下,复位高电平有效。

•ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出

脉冲。在flash编程时,此引脚也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定

频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器

时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。

这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个

ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

6

MCS-51单片机技术实验基础

•PSEN:外部程序存储器选通信号。当AT89s52从外部程序存储器执行外部代码时,PSEN在

每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。

•EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取

指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收

12伏VPP电压。

外接晶振引脚

外接晶振引脚与片内的反相放大器构成一个振荡器,他提供了单片机的时钟控制信号,也可采用外

部晶体振荡器。

•XTAL1:接外部晶体的一个引脚,在单片机内部,它是一个反相放大器的输入端。若采用外部

振荡器,该引脚接收振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。

•XTAL2:借外部晶体的另一端,在单片机内部接到反相放大器的输出端,当采用外接晶体振荡

器时,此引脚可以不接。

三、单片机工作时序

1、时钟电路

时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路产生时钟信号;另一种

为外部方式,时钟信号由外部引入。

51单片机有一个用于构成内部振荡器的反相放大器,引脚XTAL1和XTAL2分别是放大器的输入、

输出端。外接石英晶体和陶瓷电容构成自激振荡器。这种方式称为内部时钟方式。如果振荡器已起

振,则在XTAL2引脚上输出3V左右的正弦波。振荡器的频率取决于晶振的频率。电容C1和C2

主要作用是帮助起振(谐振),其值的大小对振荡频率也有影响。因此常用调节C1或C2的容量大

小对频率进行微调,电容容量在通常在20pF~100pF之间选择,当时钟频率为12MHz时典型值为

30Pf«

2、时序定时单位

(1)拍节与状态

把振荡脉冲的周期定义为拍节(用P表示)。振荡脉冲经过二分频后,就是单片机的时钟信号的周

期,其定义为状态(用S表示)。这样,•个状态就包含两个拍节,具前半周期对应的拍节叫拍节1

(P1),后半周期对应的拍节叫拍节2(P2)。

(2)机器周期

51单片机采用定时控制方式,因此它有固定的机器周期。规定一个机器周期的宽度为6个状态,并

依次表示为S1〜S6。由于一个状态又包括两个拍节,因此一个机器周期总共有12个拍节,分别记

作S1P1、S1P2S6P2。由于一个机器周期共有12个振荡脉冲周期,因此机器周期就是振荡脉

冲的十二分频。当振荡脉冲频率为12MHz时,一个机器周期为ips;当振荡脉冲频率为6MHz时,

一个机器周期为2pSo

(3)指令周期

指令周期是最大的时序定时单位,执行一条指令所需要的时间称为指令周期。它一般由若干个机器

周期组成。不同的指令,所需要的机器周期数也不相同。通常,包含一个机器周期的指令称为单周

期指令,包含两个机器周期的指令称为双周期指令,等等指令的运算速度与指令所包含的机器周期

有关,机器周期数越少的指令执行速度越快。MCS-51单片机通常可以分为单周期指令、双周期指

令和四周期指令等三种。四周期指令只有乘法和除法指令两条,其余均为单周期和双周期指令。

单片机执行任何一条指令时都可以分为取指令阶段和执行指令阶段,时序如图2.13所示,(a)为单字

节单周期指令;(b)为双字节单周期指令;(c)为单字节双周期指令。

7

EAT59851实验指导W

3、指令的执行时序

图(a),(b)所示分别给出了单字节单周期利双字节单周期指令的时序。单周期指令的执行始于

S1P2,这时操作码被锁存到指令寄存器内•若是双字节,则在同一机器周期的S4读第二字节.若

是单字节指令,则在S4仍有读操作,但被读入的字节无效,且程序计数器PC并不增量。图(c)

给出了单字节双周期指令的时序,两个机器周期内进行4次读操作码操作。因为是单字节指令,所

以,后三次读操作都是无效的。

f|T~

ALE」

????????(??)?7?7??

S1S2S3S4S5S6

(a)

7?7?7797??997?7

S1S2S3S4S5S6

(b)

7777?777(?7)

S1IS2IS3IS4IS5IS6IS1IS2IS3IS4IS5S6

(c)

四、单片机工作方式

1、复位方式

1.上电自动复位

上电复位电路只需在RST端接•个电容至VCC和•个电阻至VSS即可,如图2.14所示。加电瞬间,

RST端出现一段时间的高电平,只要高电平保持至少2个机器周期,51单片机就会执行复位操作,

然后把RST恢复为低电平•电路中,时间常数RC越大,上电时保持高电平的时间越长,当振荡频

率为12MHz时,典型值C=10|JF,R=8.2kC,当时钟频率选用6MHz时,C=22pF,R=1kC。上述

参数比实际要求的值大很多,但通常设计人员并不关心多出的复位时间。

8

MCS-51单片机技术实验基础

+5

T

MCS-51

图2.14上电复位电路,

2人工复位

除了上电复位外,有时还需要人工复位。将一个按钮开关并联于上电自动复位电路,就是人工复位

电路,如图2.15»

图2.15人工复位电路,

2、程序执行方式

程序的执行方式是单片机的基本工作方式。由于复位后PC=OOOOH,因此程序执行总是从地址0000H

开始。

1.连续执行方式

连续执行方式是单片机执行的基本工作方式,所要执行的代码放在程序存储器ROM中(可以是片内

或片外),CPU不断地从程序存储器中取指令、分析并执行。

2.单步执行方式

程序的执行处于外加脉冲(通常用一个按键产生)的控制下,一般利用中断来实现程序的单步执行。

9

EAT59851实验指导W

3、低功耗方式

对于51单片机来说,有待机方式和掉电保护方式两种低功耗方式。通过设置电源控制寄存器PCON

的相关位,可以指定当前的工作方式为低功耗方式。PCON寄存器格式如表2.10所示。

表2.1。PCON寄存器格式"

to序。B7KB6+B5PB4,B3。B2。日B5

位符号QSMO加仲23GF1-GF0-PD小IDL-

1.待机方式

如果使用指令使PCON寄存器IDL位置“1”,则进入待机方式。这时振荡器仍然工作,并向逻辑中

断、串行口和定时器/计数器电路提供时钟,但向CPU提供时钟的电路被阻,因此CPU不能工作,

与CPU相关的如SP、PC、PWS、ACC以及全部通用寄存器也被“冻结”在原状态。

在待机方式下,中断功能应继续保留,一便采用中断方法退出待机方式。为此,应该引入一个外中

断请求信号,在单片机响应中断的同时,IDL位被硬件自动清“0”,单片机就退出待机模式而进入正

常工作方式。

2.掉电保护方式

PCON寄存器的PD位控制单片机进入掉电保护方式。因此对于51单片机,在检测到电源故障时,

除进行信息保护外,还应把PD位置“1”,使之进入掉电保护方式。此时单片机一切工作都停止,只

有内部RAM单元的内容被保存。

五、单片机最小系统

单片机最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机处于正常的运

行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部

分,通过对其进行存储器扩展、A/D扩展等,因此51单片机最小系统的功能主要如下:

•能够运行用户程序。

•用户可以复位单片机。

•具有相对强大的外部扩展功能。

最小系统的结构如图2.16所示。

图2.16单片机最小系统框图,

六、本章小结

本章主要介绍了单片机的内部结构和基本组成,详细介绍了MCS-51单片机的中央处理器、存储器

10

MCS-51单片机技术实验基础

结构、输入输出接口、弓I脚、中断系统、定时器/计数器以及单片机工作方式和最小系统等内容,为

以后的学习打下坚实的基础。

通过本章的学习,读者应该掌握以下几个知识点:

1.了解单片机单片机的基本结构和组成。

2.理解单片机的运行基本原理。

3.知道单片机最小系统的组成。

11

EAT59851实验指导W

第2章C51单片机的内部资源

重点内容:

•输入'输出控制

•中断系统

•定时/计数器

•本章小结

一、输入'输出控制

单片机I/O口即输入/输出接口,它可对开关量进行检测、判断、处理,从而去控制开关量设备。单

片机I/O口是单片机与外界发生联系的窗口,只有了解和掌握I/O口的特点、性能、原理,才能真

正发挥I/O口的功能,才能使单片机作为一种嵌入式微控制器,应用到各种领域,发挥单片机的功

能。

下面是reg51.h和reg52.h中并行I/O口的定义。使用I/O口时,不用关心I/O口的具体地址,直接

使用P0、Pl、P2、P3这些变量名就可以了。

sfrP0=0x80;/*8位I/O□P0*/

sfrPl=0x90;/*8位I/O口P1*/

sfrP2=OxAO;/*8位I/O口P2*/

sfrP3=OxBO;/*8位I/O口P3*/

在I/O口直接用做输入/输出时,CPU既可以把它们看做数据口,也可以看做状态口,这是由用户决

定的。下面看是有关I/O应用的例子。

【例2-1】I/O应用

设计一电路,监视某开关K,用发光二极管LED显示开关状态,如果开关合上,LED灯亮;否则,

LED等灭。

分析:设计电路图如图7.1所示。开关接在P1.4口,LED灯接在P1.0口,当开关断开时,P1.4为

Vcc,对应数字量为“1”,开关合上时,P1.1电平为0,对应数字量为"0"。根据LED的解法,当P1.0

输出为“0”时,LED灯亮,反之输出为“1”时,灯则熄灭。

程序清单如下:

用C语言编程如下:

#include<reg51.h>

sbitpl_O=PlAO;

sbitpl」=P『l;/*定义位变量*/

voidmain()

{

pl_0=0;/*使发光二极管灭*/

for(;;)

{

P1J=1;

if(pl_l=O)

pl_0=l;

elsepl0=0;}

12

MCS-51单片机技术实验基础

P1.0(ADO)PO.O

Pl.l(ADl)PO.l

Pl.2(AD2)P0.2

Pl.3(AD3)P0.3

Pl.4(AD4)P0.4

P1.5(M0SI)(AD5)P0.5

P1.6(MISO)(AD6)P0.6

P1.7(SCK)(AD7)P0.7

P3.3(INT1)(A8)P2.0

P3.2(INT0)(A9)P2.1

(A10)P2.2

P3.5(T1)(AU)P23

P3.4(T0)(A12)P2.4

(A13)P2J

EATVPP(A14)P2.6

8

(A15)P2.7vcc

XTAL1

1840T

XTAL2VCC

20_________

GND

9Io

RST(RXD)P3.0-辛

(TXD)P3.150-

P3.7(RD)ALEyPROG

/P3.6(WR)PSEN

RI

rAT89s51

\c=tl_

F

10K—

图71例7」图

二、中断系统

1、中断的基本概念

首先有关中断的几个基本概念。

1.中断

所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU

中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再

返回去执行波暂时中断的程序。

2.中断源

中断源即引起中断的原因,中断申请的来源,中断源可以是I/O设备、故障、时钟、调试中人为设

置。

3.中断优先级和中断的嵌套

当有多个中断源同时向CPU申请中断时,CPU优先响应最需紧急处理的中断请求,处理完毕再响

应优先级别较低的,这种预先安排的响应次序就叫做中断优先级。值得一提的是,在中断系统中,

高优先级的中断请求能中断正在进行的较低级的中断源处理,我们把这叫做中断的嵌套。

4.中断系统

能实现中断功能并能对中断进行管理的硬件和软件称为中断系统。

中断请求是在执行程序的过程中随机发生的,中断系统要解决的问题是:

13

EAT59851实验指导W

(1)CPU在不断地执行指令中,是如何检测到随机发生的中断请求的?

(2)如何使中断的双方(CPU方和中断源方)均能人为控制——允许中断或禁止中断?

(3)由于中断产生的随机性,因此不可能在程序中使用调用子程序指令或转移指令,那么如何在实

现正确的转移,从而更好地为该中断源服务呢?

(4)中断源有多个,而CPU只有一个,当有多个中断源同时有中断请求时,用户怎么控制CPU按

照自己的需要安排响应次序?

(5)中断服务完毕,如何正确地返回到原断点处?

2、中断源及其中断的入口地址

51单片机有5个中断源,3个在片内,2个在月•外,它们在程序存贮器中有固定的中断入口地址,当

CPU响应中断时,硬件自动形成这些地址,由此进入中断服务程序;5个中断源有两级中断优先级,

可形成中断嵌套;这6个中断源的符号、名称、产生条件及中断服务程序的入口地址如表7-1。

表7-151单片机的中断源“

符号~名称2中断弓1起原因。中断服务程序入口Q

INTO-1外部>P3.2引脚的<0003HQ

中断。2低电平或下降沿信号2

INTlr外部,P3.3引脚的一0013H*3

中断2低电平或下降沿信号2

T(P定时器。中断•定时计数器0让数早雪溢出“OOOBHP

T12定时器1中断«定时计数器1让教鼠零溢出OOIBH^

T2~定时器2中断•定时计数器2中断。002BHP

(TF2或T2EX信号)。

TI/RI丁串行口“串行通信完成一帧数据,0023HQ

中断。发送或接收引起中断。

3、中断控制相关的寄存器

1.中断允许控制寄存器IE(地址0A8H)

每个中断源都可以通过置位或清除中断允许寄存器IE中的相关中断允许控制位分别使得中断源有

效或无效。1E还包括一个中断允许总控制位EA,它能一次禁止所有中断。中断允许寄存器格式如

下表72

14

MCS-51单片机技术实验基础

表7-2中断允许寄存器IE〉

符bi功能2

号。

•JT中断鼠熊狂提皴EA=O,中断总禁止;EA=1,各中断由各

EAP7V自的控制值设定“

—6Q未定义。

ET2<5~定时褐2中断允许控制值。

ESC串行口中断允许控制值“

ETb3,,定时器1中断允许控制位

EX1+2W外部中断1允许控制位。

ETO+IQ定时器0中断允许控制值。

EXCkOP外部中断1允许控制值•

2.定时器/计数器控制寄存器(TCON)(地址88H)

该寄存器用于保存外部中断请求以及定时器的计数溢出。寄存器的内容及位地址表7-3如下:

表7-3定时/计数器控制寄存器TCON中与中断有关的位,,

符号2bit*,功能Q

du定时/计数器1溢出中断请求标志位.当定时器1计数溢出时,由硬件置位

TF27"(TF1=1),并且申语中断.当CPU响应中断时,由硬件自动清零(TF1=Q).,

26Q♦J

TF0<5d定时/计数器。溢出中断请求标志位.其功能及操作情况同TF1.

*33

3外部中断1请求标志位.当外部中断1侬据触发方式满足条件产生中断请求时,

IE1P3P由硬件置位(IE1=1),当CPU响应中断时,由硬件自动清零(IE1=O).Q

•J外部中断1触发方式选择位.由软件设置.为“1”时,中断采用下降沿触发方

u式,INT1引脚上高到低的嬲舞可引起中断.为“0”时,中断采用电平触发

27方式,INT1引脚上低电平可引起中断.•

IE0「1P外部中断。请求标志位.其功能及操作情况同IE1.。

rroc外部中断。触发方式选择位.其功能及操作情况同IT1.Q

3.串行口控制寄存器(SCON)(98H)

串行口控制寄存器与中断有关的控制位共2位,如表7-4所示

15

EAT59851实验指导W

表7-4串行口控制寄存器SCON中与中断有关的位,

符号“bitQ功能,

♦2-7^串口的其他位,见233串口寄存器.

TIP2串行口发送中断谙求标志位.当串行口发送完一帧数据后请求中断时,由硬件

置位(TI=1).必须由软件清零.2

RI/g串行口接收中断请求标志位.当串行口接收完一帧数据后谙求中断时,由硬件

置位(RI=1)。必须由软件清零.♦

4.中断优先级寄存器IP(地址8BH)

单片机采用了自然优先级和人工设置高、低优先级的策略,即可以由程序员设定那些中断是高优先

级、哪些中断是低优先级。AT89s52可设置两个中断优先级,必有一些中断处于同一级别,处于同

一级别的,就由自然优先级确定。六个中断源的自然优先级(由高到低排列)为:

外部中断0一〉定时器0中断一>外部中断1一>定时器1中断一》串口中断一〉定时器2中断。中

断优先级由中断优先级寄存器IP(见表7-5)来设置的,IP中某位设为1,相应的中断就是高优先

级,否则就是低优先级。

表7-5中断优先级寄存器IP-'

符号2bit3功能”

―7.6r未定义。

PT2c5-T2中断优先皴控制位.PT2=1设定定时器T2为高优先级中断;PT2=0

为低优先级中断.♦

PSd42串行口中断优先级控制位.PS=1设定串行口为高优先级中断;PS=O

为低优先级中断.。

PT1^3PT1中断优先皴控制位.PT1=1设定定时器T1为高优先级中断;PT1=0

为低优先级中断."

PX1*2P外部中断1优先级控制位.PX1=1设定定时器外部中断1为高优先级

中断;PX1=。为低优先级中断.2

PTO'P12T0中断优先级控制位.PTO=1设定定时器T0为高优先级中断;PTO=O

为低优先皴中断.。

PXO^0~外部中断0优先级控制位.PXO=1设定定时器外部中断0为高优先级

中断;FXO=O为低优先级中断.」

4、中断响应过程

单片机在每个机器周期的S5P2期间,顺序采样每个中断源,CPU在下一个机器周期S6期间按优先

级顺序查询中断标志,如查询到某个中断标志为1,将在再下一个机器周期S1期间按优先级进行中

断处理。中断得到响应后自动清除中断标志,由硬件将程序计数器PC内容压入堆栈保护,然后将

对应的中断矢量装入程序计数器PC,使程序转向中断矢量地址单元中去执行相应的中断服务程序。

在下列三种情况之一时,CPU将封锁对中断的响应:

(1)CPU正在处理一个同级或更高级别的中断请求。

(2)现行的机器周期不是当前正执行指令的最后个周期。我们知道,单片机有单周期、双周期、

三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行

16

MCS-51单片机技术实验基础

完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。

(3)当前正执行的指令是返回指令(RETD或访问IP、IE寄存器的指令,则CPU至少再执行一条

指令才应中断。这些都是与中断有关的,如果正访问IP、正则可能会开、关中断或改变中断的优先

级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令

才可以响应中断。

具体地说,CPU响应中断的过程分为以下几个步骤:

(1)保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。

(2)寻找中断入口,根据6个不一样的中断源所产生的中断,查找6个不一样的入口地址。这6个

中断源的编号和入口地址如表7-6所示各中断服务程序入口地址仅间隔8字节,编译器在这些地址

放入无条件转移指令,跳转到服务程序的实际地址。。以上工作是由计算机自动完成的,与编程者无

关。

(3)执行中断处理程序。

(4)中断返回:执行完中断指令后,

就从中断处返回到主程序,继续执行。

表7-6中断源鼐号及程序入口地址,

编号”中断源,入口地址2

外部中断0-0003H^

1P定时器/计数器0QOOOBH^

2"外部中断"0。13H口

3r定时器/计数器U001BHP

串行口中断二0U23HQ

定时器/计数器2-002BH<

5、C51中断的程序设计

C51使用户能编写高效的中断服务程序,编译器在规定的中断源的矢量地址中放入无条件转移指令,

使CPU响应中断后自动地从矢量地址跳转到中断服务程序的实际地址,而无需用户去安排。中断服

务程序定义为函数,函数的完整定义如下:

返回值函数名([参数])[模式][BA]interruptn[usingm]

下面分别介绍后面3个参数:

再入:通过属性关键字reentrant将函数定义为再入函数,这样函数才能才能递归调用。这是因为在

C51中,普通函数(非再入的)不能递归调用,只有再入函数才可被递归调用。

interruptn:表示将函数声明为中断服务函数,n为中断源编号,它可以是0〜31间的整数,不允

许为带运算符的表达式。n通常取以下值:

0外部中断0;

1定时器/计数器。溢出中断

2外部中断1;

3定时器/计数器1溢出中断

4串行口发送与接收中断

Usingm:定义函数所使用的工作寄存器组,m的取值范围为0〜3,可缺省,它对目标代码有如下

作用:函数入口处将当前寄存器保存,使用m指定的寄存器组,函数退出时原寄存器组恢复。选不

同的工作寄存器组,可方便实现寄存器组的现场保护。

值得注意的是,中断服务函数不允许用于外部函数,因为它对目标代码有下面这些影响:

17

EAT59851实验指导W

①当调用函数时,SFR中的ACC、B、DPH、DPL和PSW实际需要时应该入栈。

②如果不使用寄存器组切换,中断函数所需的所有工作寄存器Rn都入栈。

③函数退出前,所有工作寄存器出栈。

温馨提示

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

评论

0/150

提交评论