C51单片机应用设计与技能训练(第2版)课件 任务4 设计花样流水灯_第1页
C51单片机应用设计与技能训练(第2版)课件 任务4 设计花样流水灯_第2页
C51单片机应用设计与技能训练(第2版)课件 任务4 设计花样流水灯_第3页
C51单片机应用设计与技能训练(第2版)课件 任务4 设计花样流水灯_第4页
C51单片机应用设计与技能训练(第2版)课件 任务4 设计花样流水灯_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

模块四

中断系统中断系统结构4.1.1

中断的概述外部设备是微机的重要组成部分,而微机和外部设备之间不是直接相连的,而是通过不同的接

口电路来达到彼此间的信息传送的。>

CPU与外部交换信息的方式:(1)程序控制传送方式(2)中断传送方式(3)直接存储器存取

(DMA)

方式你正在专心看书,

突然电话铃响,于是

你记下正在看的书的

页数,去接电话,接

完电话后再回来接着

。1.中断的定义日常中断的例子看

书接

话电话铲响什么是中断?中断是指计算机在执行某段程序的过程中,由于计算机系统内、外的某种原因,暂时中止原

程序的执行,转去执行相应的处理程序,并中断

服务程序执行完后,再回来继续执行被中断的原

程序的过程。2.

中断的作用1)CPU

与外设并行工作。解决CPU

速度快、外设速度

慢的矛盾。2)实时处理。控制系统往往有许多数据需要采集或输

出。实时控制中有的数据难以估计何时需要交换。3)故障处理。计算机系统的故障往往随机发生,如电

源断电、运算溢出、存储器出错等。采用中断技术,系统

故障一旦出现,就能及时处理。4)实现人机交互:人和单片机交互一般采用键盘和

按键,可以采用中断的方式实现,中断方式时CPU执行效

率高,而且可以保证人机交互的实时性,故中断方式在人

机交互中得到广泛应用。3.1.2

MCS-51

中断系统■中断系统是指能实现中断功能的那部分硬件电路

和软件程序。■对于M

CS-51

单片机,大部分中断电路都是集成

在芯片内部的,只有和中断输入线上的中断请求

信号产生电路才分散在各中断源电路或接口芯片

电路里。TCONIE0EX0TF0

ETOIE1EX1TF1

ET1TIRI

ESSCON中断源

允许高级中断请求

低级中断请求自然优先级

矢量地址

自然优先级

矢量地址TOINIT-1T1

—TXDRXD中断标

志位IPPXOJPT0JPX16PSEA总允许

EA3.1.2

MCS-51中断系统中断优

先级1.MCS-51

的中断源和中断标志中断源是指引起中断的事件。在单片机中,中断源是指引起中断原因的设备或事件,或发出中断请求信号的源泉。通常有I/0

设备、实时控制系统中的随机参数和信息故障源

等。(1)中断源1)外部中断源:MCS-51

系列单片机有2个外中

断源,称为外中断0和1,经由单片机上的P3.2

、P3.3

这两个外部引脚引入,为

INTO、INT1。2)内部中断源·

定时器溢出中断源。定时器溢出中断源由内

部定时器/计数器产生,属于内部中断。·

串行口中断源。串行口中断是由内部串行口

中断源产生。(2)中断请求标志1)TCON中的中断标志位(MSB)8FH

8EH

8DH

8CH

8BH

8AH

89H

88H(LSB)D7D6D5D4D3D2D1DOTF1TR1TF0TROIE1IT1IEOITO外部中断INTO触发方式

控制位(TCON.0):■

IT0=0,电平触发方式■IT0=1,

下降沿触发方

式外部中断INT0

中断标志

位(TCON.1):IEO=1,

外部中断1向CPU

申请中断■注意:该寄存器可以位寻址。TO溢出中断标志(TCON.5):TO

启动计数后,计满溢出由硬件

置位TF0=1,

CPU请求中断,此标志

一直保持到CPU响应中断后,才由硬

件自动清0。也可用软件查询该标志,并由软件清0。1)TCON

的中断标志位8FH8EH

8DH8CH8BH

8AH

88HD7D6D5D4D3D2D1DOTF1TR1TFOTROIE1IT1IEOITOTCON2)SCON

的中断标志位(MSB)9FH9EH9DH

9CH

9BH

9AH

98H(LSB)D7

D6

D5

D4D3

D2

D1

DOSMOSM1SM2RENTB8RB8

TI

RITI(SCON.1)—串行发送中断标

。■注意:该寄存器可以位寻址!|RI(SCON.O)——

串行接收中断标志

。中断允许寄存器IE对中断的开放和关闭实行两级控制。所谓两级控制,就是有一个总开、关中断控制位EA,

EA=0

时,则屏蔽所有的中断申请,即任何中断申请都不接受;当EA=1

,CPU

开放中断,但五个中断源还要由IE的低5位的各对应控制位的状态进行中断允许控制。2.中断控制(1)中断允许控制

中断允许寄存器IE(M

SB)AFH

AEH

ADH

ACH

ABH

AAH

A9H

A8H(LSB)D7D6D5D4D3D2D1D0EA××ESET1EX1ETOEX0(a)SFR

赋值

IE=0x8c(b)用位赋值EA=1;CPU开中断ET1=1;

定时/计数器1允许中断

EX1=1;

外中断T1

允许中断位D7D6D5D4D3D2D1D0符号EA××ESET1EX1ETOEXO值10001100例3-3

如果我们要设置外中断1、定时器1中断允许,其它不允许,请设置IE的相应值。(MSB)AFH

AEH

ADH

ACH

ABH

AAH

A9H

A8H(LSB)(2)中断优先级控制MCS-51

单片机有两个中断优先级:

高级中断和低级

断。■

每一个中断源都可以通过编程确定为高优先级中断或低优先级中断。若CPU当前正在为低优先级中断服务,在开中断的条件下,它能被另一个高优先级中断请求所中断,

转去为高级中断服务,再返回到被中断了的低级中

断的服务程序,这即为中断嵌套。CPU

在执行的主程序CPU

执行低级中断响应低级中断低级中断请求

响应高级中断高级中断请求中断嵌套过程CPU

执行高级中断服务返回低级中断程序返回主程序■专用寄存器IP为中断优先级寄存器,用户可用软件

设定■相应位为1,对应的中断源被设置为高优先级,相

应位为0,对应的中断源被设置为低优先级■

系统复位时,均为低优先级■

该寄存器可以位寻址中断优先级寄存器IP(MSB)BFHBEHBDHBCHBBHBAHB9HB8H(LSB)D7D6D5D4D3D2D1DO×××PSPT1PX1PTOPXO中

源同级内优先权排列外部中断0中断(IEO)定时器/计数器0中断(TFO)

外部中断1中断(IE1)定时器/计数器1中断(TF1)

串行接口中断(TI/RI)最

高最

低自然优先权顺序MCS-51

系列单片机中断响应原则:1)高级中断请求可以中断正在执行的低级中断。2)

同级或低级中断请求不能中断正在执行的中断。3)多个中断源同时向CPU申

请中断,首先响应优先

级别最高的中断请求;多个同级中断源同时向CPU

请中断,

CPU通过内部硬件查询,按自然优先级确定

优先响应哪一个中断请求。例设有如下要求,将TO、外中断1设为高优先级,其

它为低优先级,求IP的值。解:IP的首3位没用,可任意取值,设为000,后面

根据要求写就可以了。位D7D6D5D4D3D2D1DO符号XXXPSPT1PX1PTOPXO值00000110IP的值就是06H。位D7D6D5D4D3D2D1DO符号XXXPSPT1PX1PTOPXO值00000110■

解:响应次序为■定时器0

→外中断1

→外中断0

实时器1

串行

中断

。在上例中,如果5个中断请求同时发生,求中断响应的次序。3.

中断响应(1)中断响应的时序机器周期机器周期S1S2S3S4S5S6S1S2S3S4S5S6P1P2P1P2P1P2P1P2P1P2P1P2P1P2P1P2P1P2

P1P2P1P2P1P2查询标志转入处理采样置标志(2)

CPU响应中断的条件①没有同级或高优先级的中断正在处理;②正在执行指令必须执行完最后一个机器周期(换言之,正在执行的指令完成前,任何中断请求都得不到响应);③若正在RETI或读写IE或IP寄存器,则必须执行完当前指令的下一条其它指令之后才会响应。(3)CPU响应中断的过程单片机一旦响应中断请求,就由硬件完成以下功能:①自动清除相应的中断请求标志位(串行口中断

请求标志RI和TI除外);②保护断点和现场,把被响应的中断源所对应的

中断服务程序的入口地址(中断矢量)送入PC,

而转入相应的中断服务程序。③结束中断服务程序,恢复断点和现场,并返回

响应中断之前的程序继续执行。模块三

中断系统3.2

中断初始化程序与中断服务函数模块三中断系统1.中断服务函数的一般形式void

函数名(void)interruptm

[unsignedn]·代表中断号,是一

个常量,取值范围

是0-31。·C51编译器允许32

个中断,从8m+3

产生中断向量代表中断函数

将要选择使用

的寄存器组,

也是一个常量

,取值范围是

0~3。关于USING

的说明■

using

不仅可以用于中断服务函数的定义中,也可以

用于普通的内部函数,但不能用于外部函数。就中断服务函数而言●如果不使用using,

则在进入中断服务函数的时

候,中断函数中所用到的全部工作寄存器都要入

栈,函数返回之前所有的寄存器内容出栈;●如果使用using,

则在进入中断服务函数的时候

,只将当前工作寄存器组入栈,用using

指定的

工作寄存器组的内容不变也不入栈,函数返回之

前将被保护的工作寄存器组出栈。模块三中断系统提

示(

1

)

使

用using

可缩减中断服务函数的入栈操作时间,因

此可以使中断得到更及时的处理;但同时,使用using要十

分小心,要保证寄存器组切换在所控制的区域内,否则会

导致错误。■

(2)中断函数的编写包括两部分:中断源的初始化函数和

中断服务函数。概括地说,中断源初始化函数就是对中断源所需要的一些变量进行设置,其形式与其他普通函数一

样——一般在主函数里实现;而中断服务函数就是规定系统

在发生相应的中断的时候要执行哪些操作。■

(3)中断函数的调用过程与一般函数调用相似,但一般函

数是程序中事先安排好的;而何时调用中断函数事先无法

确定,调用中断函数的过程是由硬件自动完成的。模块三中断系统中断函数的类型及参数都为void类型■中断函数既不能进行参数传递,也没有返回值,因

此,中断函数的形式参数列表和函数类型标识符名

均为void。定时器O的定义方式:void

intr

time0(void)interrupt1{}模块三中断系统2.中断函数的编写(1)中断的初始化●所谓初始化,是对将要用到的MCS-51系列单

片机内部部件或扩展芯片进行初始工作状态设

定。针对中断来说,就是对IE,IP

进行初始化

编程,实现如下要求:●1)

CPU开中断与关中断。●2)某个中断源中断请求的允许和禁止(屏

)

。●3)各中断源优先级别的设定。●4)外部中断请求的触发方式。模块三中断系统(2)中断服务函数■

中断服务函数就是规定系统在发生相应的中断的

时候要执行哪些操作。模块三中断系统void

isr

int0(interrupt

0printf("Externalinterrupt0responded\n");}void

serial

init()SCON=0X52;MOD=(TMOD&0X0F)|OX20;

TH1=221;TR1=1;#include<reg51.h>#include<stdio.h>voidserial_init();void

isr_int0();main(){serial_init();ITO=0;EA=1;EX0=1;

while(1);}模块三中断系统实例3-4:电平触发与跳变触发的比较)电平触发的输出情况Serial#1inte'ins:

DxFBinteinterruptUrespondedinterrupt

0

respondedinterrupt

0

respondedinterrupt

0

responded

in模块三中断系统ExternalExternalExternalExternalExternalExternalExternalExternalExternalExternalExternalExternalParallelPort3Port

3P3:|

OxFFinterrupt

0

respondedinte

inteinteintemain(){serial_init();IT0=1;EA=1;EX0=1;

while(1);}Serial

#1External

interrupt

0

respondedParallelPort3Port

3-P3:|0xFF'ins:|

OxFB模块三中断系统跳变触发输出情况|【例3-5】P1.3

外接一个扬声器,当与P3.3

(外部中断1输入引脚)变为低电平时,扬声器发声。模块三

中断系统实例#include<reg51.h>sbit

p13=P1^3;void

main(){ITO=0;EA=1;EX1=1;p13=1;while(1);}voidisr

int1()interrupt2

{int

i;p13=~p13;for(i=1000;i>0;i--);}模块三

中断系统实例3-5XTAL1xTAL2RSTPSENP1□P1.1P12P13P1.4P15P16P1.7PD几ADD

PD.1AD1PD20.D2

PO3.D3

PD.4D4PD5R.D5

PD6RD6

PO.7RD7P2几8P2.1889

P220,10

P23011

P2.4812P25813

P26A14

P2.7815P3DRXDP3.1/TXD

P3.2ANTUP3.3ANT1

P3.4/TDP35/T1P3600RP3.7RD332325Z281但1112131415167R2

R3

广

R4

R5221工④液位下限报警STU6AND

可AT89C51二液位上、下限SL1、SL2开关取自“色带指示报警

仪”,分别接P1.3,P1.2。蒸汽压力下限SP

开关接P1.1。炉堂温度上限ST开关接P1.0。P1.7~P1.4输出接发光二极管,与4个参数对应,越限时则相应的LED

。模块三中断系统案例示范:参数越限的直接报警案例C1X1R1SL1SL2STU2NOT被位上隔被位下隔汽

力中脑锡度蒸汽压力下限报

炉腔温度上限报警D1D41918296液位上限报U1#include<reg51.h>void

isr

int0(void);main(){IT0=0;EXO=1;EA=1;while(1){}}void

isr

int0(void)interrupt

O{char

temp1;P1=0xOff;temp1=P1;temp1=temp1<<4;P1=temp1;for(i=10;i>0;i--):厂模块三

中断系统主函数(初始化)3、

完成任务作业3-1。实训内容模块三中断系统单片机的引脚功能123456789101112131415161718192080318051875189C514039383736353433323130292827262524242221P1.0CP1.1P1.2P1.3P1.4

1P1.5

1P1.6

P1.7RST/VPDLRXD/P3.0

TXD/P3.1

INTO/P3.2

INT1/P3.3WR/P3.6RD/P3.7XTAL2XTAL1

VSSVCCP0.0P0.1P0.2

P0.3P0.4P0.5

P0.6P0.7EAALEPSENP2.7P2.6

P2.5P2.4

P2.3

P2.2

P2.1

P2.08、P3

口的第二功能XTAL1P0803180518751XTAL2RESETVcc

温馨提示

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

评论

0/150

提交评论