第五章 89C51的中断系统和定时器计数器_第1页
第五章 89C51的中断系统和定时器计数器_第2页
第五章 89C51的中断系统和定时器计数器_第3页
第五章 89C51的中断系统和定时器计数器_第4页
第五章 89C51的中断系统和定时器计数器_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

1、第第5 5章章 89C51 89C51单片机的单片机的 中断系统和定时器中断系统和定时器/ /计数器计数器 1 单片机与嵌入式系统单片机与嵌入式系统 2 内容概要内容概要 u 介绍片内功能部件中断系统的介绍片内功能部件中断系统的硬件结构硬件结构和和工作原理工作原理。 u 掌握与中断系统掌握与中断系统有关的特殊功能寄存器有关的特殊功能寄存器以及中断系统的以及中断系统的 应用特性。应用特性。 u 应能熟练地进行中断系统的应能熟练地进行中断系统的初始化编程初始化编程以及以及中断服务子中断服务子 程序的设计程序的设计。 介绍定时器介绍定时器/计数器的计数器的结构结构、功能功能和和工作方式工作方式。 掌

2、握定时器掌握定时器/计数器相关的计数器相关的特殊功能寄存器特殊功能寄存器的设置。的设置。 介绍定时器介绍定时器/计数器的计数器的应用应用及其及其编程编程。 单片机与嵌入式系统单片机与嵌入式系统 3 3 第第5章章 89C51单片机的中断系统和定时器单片机的中断系统和定时器/计数器计数器 5.1 5.1 中断的概念中断的概念 5.2 89C515.2 89C51的中断系统的中断系统 5.2.1 5.2.1 89C51中断系统的结构中断系统的结构 5.2.2 5.2.2 中断寄存器中断寄存器 5.2.3 5.2.3 中断处理的过程中断处理的过程 5.2.4 5.2.4 中断服务子程序的设计中断服务

3、子程序的设计 5.2.55.2.5 外部中断源的扩展外部中断源的扩展 5.3 89C51的定时器的定时器/计数器计数器 5.3.1 定时器定时器/计数器的结构计数器的结构 5.3.2 定时器定时器/计数器的工作方式计数器的工作方式 5.4 定时器定时器/计数器的编程和应用计数器的编程和应用 4 5.1 5.1 中断的概念中断的概念 1 1、中断、中断 CPU CPU正在执行程序时,单片机正在执行程序时,单片机外部外部或或内部内部发生的某一发生的某一事事 件件,请求,请求CPUCPU迅速去处理。迅速去处理。CPUCPU暂时中止暂时中止当前的工作,当前的工作,转转到到中中 断服务处理程序断服务处理

4、程序处理所发生的事件。处理完该事件后,再处理所发生的事件。处理完该事件后,再回回 到到原来被原来被中止的地方中止的地方,继续原来的工作。这一过程称为,继续原来的工作。这一过程称为中断中断。 中中 断断 响响 应应 和和 处处 理理 过过 程程 单片机与嵌入式系统单片机与嵌入式系统 5 2 2、中断服务程序、中断服务程序 处理中断事件的程序段称为处理中断事件的程序段称为中断服务程序中断服务程序。 不同类型的中断需要不同的中断服务程序。不同类型的中断需要不同的中断服务程序。 中断服务程序不同于一般的子程序:中断服务程序不同于一般的子程序: 子程序子程序由某个程序调用,它的调用是由程序设定的,它的执

5、由某个程序调用,它的调用是由程序设定的,它的执 行时间是确定的。行时间是确定的。 中断服务程序中断服务程序由某个事件引发,它的执行一般是随机的,不由某个事件引发,它的执行一般是随机的,不 确定的确定的。 3 3、中断源、中断源 引发中断的事件或产生中断请求的来源称为引发中断的事件或产生中断请求的来源称为中断源。中断源。 中断源向中断源向CPUCPU提出的处理请求称为提出的处理请求称为中断请求。中断请求。 引起中断的因素很多,可来自引起中断的因素很多,可来自CPUCPU内部和外部。内部和外部。 89C5189C51单片机的单片机的中断源来自中断源来自CPUCPU外部硬件。外部硬件。 单片机与嵌入

6、式系统单片机与嵌入式系统 6 4 4、 中断系统中断系统 为实现计算机的中断处理功能而配置的功能部件称为中断系统为实现计算机的中断处理功能而配置的功能部件称为中断系统 5 5、中断过程、中断过程 计算机处理这些随机发生的中断事件的过程。包括:计算机处理这些随机发生的中断事件的过程。包括: (1 1)中断源请求中断)中断源请求中断 (2 2)中断响应)中断响应 (3 3)中断服务)中断服务 单片机与嵌入式系统单片机与嵌入式系统 7 中断响应和服务中,要进行:中断响应和服务中,要进行: 断点保护:断点保护: 保护保护PC值值 现场保护:现场保护: 保护中断服务时要使用的寄存器保护中断服务时要使用的

7、寄存器(压栈压栈); 开中断:开中断:中断服务时能响应更高级的中断请求;中断服务时能响应更高级的中断请求; 中断处理:中断处理: 执行输入输出或非常事件的处理;执行输入输出或非常事件的处理; 关中断:关中断:恢复现场时不被新的中断打扰;恢复现场时不被新的中断打扰; 现场恢复:现场恢复: 将堆栈中保存的内容弹出;将堆栈中保存的内容弹出; 中断返回:中断返回: 通过中断返回指令通过中断返回指令,弹出弹出PC值值,程序回到被中断的地程序回到被中断的地 址,恢复中断前的状态。址,恢复中断前的状态。 单片机与嵌入式系统单片机与嵌入式系统 8 6 6、中断的优先权、中断的优先权 有多个中断源同时提出中断请

8、求时,有多个中断源同时提出中断请求时,CPUCPU响应中断的优先次序。响应中断的优先次序。 7 7、中断嵌套、中断嵌套 CPU CPU在处理中断过程中,如果出现了级别更高的中断请求,在处理中断过程中,如果出现了级别更高的中断请求, CPUCPU停止执行低级中断的处理程序而去优先处理高级中断。等停止执行低级中断的处理程序而去优先处理高级中断。等 高级中断处理完毕后,再接着执行低级的未处理完的程序。这高级中断处理完毕后,再接着执行低级的未处理完的程序。这 种中断处理方式称为种中断处理方式称为多重(级)中断多重(级)中断或或中断嵌套中断嵌套。 单片机与嵌入式系统单片机与嵌入式系统 9 主程序主程序

9、外设1中断服务程序外设1中断服务程序 外设2中断服务程序外设2中断服务程序 IRETIRET 外设1外设1 中断请求中断请求 外设2外设2 中断请求中断请求 响应中断1响应中断1响应中断2响应中断2 中断返回中断返回 中断返回中断返回 单片机与嵌入式系统单片机与嵌入式系统 10 5.2 89C515.2 89C51的中断系统的中断系统 89C5189C51单片机中断系统有单片机中断系统有5 5个个中断请求源,中断请求源,两个中断优先两个中断优先 级级,可实现,可实现两级中断服务程序嵌套两级中断服务程序嵌套。 每一中断源可用软件独立控制为每一中断源可用软件独立控制为允许中断允许中断或或关中断关中

10、断状态,状态, 中断优先级中断优先级均可用软件来设置。均可用软件来设置。 单片机与嵌入式系统单片机与嵌入式系统 1111 图图5-2 5-2 AT89S51AT89S51的中断系统结构示意图的中断系统结构示意图 外部中断请求0,由该引脚 输入,中断请求标志为IE0 外部中断请求1,由该引脚 输入,中断请求标志为IE1 定时器定时器/ /计数器计数器T0T0计数溢 出发出的中断请求,中 断请求标志为TF0TF0。 定时器定时器/ /计数器计数器T1T1计数溢 出发出的中断请求,中 断请求标志为TF1TF1。 串行口串行口中断请求,中 断请求标志为发送中 断TITI或接收中断RIRI。 5.2.1

11、 89C515.2.1 89C51中断系统中断系统的结构的结构 单片机与嵌入式系统单片机与嵌入式系统 12 图图5-35-3 特殊功能寄存器特殊功能寄存器TCONTCON的格式的格式 一、一、 中断请求标志寄存器:中断请求标志寄存器: 1 1、定时器、定时器/ /计数器的控制寄存器计数器的控制寄存器TCONTCON 字节地址为字节地址为8888H H,可位寻址。,可位寻址。包含:包含: u T0 T0和和T1T1的溢出中断请求标志位的溢出中断请求标志位TF1TF1和和TF0TF0 u 外部中断请求标志位外部中断请求标志位IE1IE1与与IE0IE0。 5.2.2 5.2.2 中断寄存器中断寄存

12、器 单片机与嵌入式系统单片机与嵌入式系统 13 TCON各各标志位标志位的功能:的功能: (1 1)IT0IT0选择外部中断选择外部中断0 0的触发方式:的触发方式: IT0=0 IT0=0,为为( (低低)电平触发电平触发方式;方式; IT0=1IT0=1,为为跳沿触发(跳沿触发(下降沿下降沿)方式。方式。 可由软件置可由软件置“1”“1”或清或清“0”“0”。 (2 2)IE0IE0 外部中断外部中断0 0的中断请求标志位。的中断请求标志位。 引脚引脚INT0INT0无中断请求,置无中断请求,置IE0=0IE0=0; 引脚引脚INT0INT0有中断请求,置有中断请求,置IE0=1IE0=1

13、。 (3 3)IT1IT1选择外部中断选择外部中断1 1的触发方式,意义与的触发方式,意义与IT0IT0类似。类似。 (4 4)IE1IE1 外部中断外部中断1 1的中断请求标志位,意义与的中断请求标志位,意义与IE0IE0类似。类似。 单片机与嵌入式系统单片机与嵌入式系统 14 (5 5)TF0TF0 T0T0溢出中断请求标志位。溢出中断请求标志位。 T0 T0计数后,溢出时,由硬件置计数后,溢出时,由硬件置“1”“1”,向向CPUCPU申请中断,申请中断, CPUCPU响应响应TF0TF0中断时,中断时,硬件自动清硬件自动清“0”“0”TF0TF0,TF0TF0也可由软件清也可由软件清 0

14、 0。 当当MCS-15MCS-15复位后复位后,TCONTCON被清被清0 0,所有中断请求被禁止。所有中断请求被禁止。 (6 6)TF1TF1T1T1的溢出中断请求标志位,功能和的溢出中断请求标志位,功能和TF0TF0类似。类似。 TR1TR1(D6D6位)、位)、TR0TR0(D4D4位)位)为计数器计数运行控制位,与中为计数器计数运行控制位,与中 断系统无关,将在定时器断系统无关,将在定时器/ /计数器中介绍。计数器中介绍。 单片机与嵌入式系统单片机与嵌入式系统 2 2、串行口控制寄存器、串行口控制寄存器SCONSCON 字节地址为字节地址为9898H,H,低二位锁存串行口的低二位锁存

15、串行口的发送中断发送中断和和接收中接收中 断断的中断请求标志的中断请求标志TITI和和RIRI。格式如格式如图图。 (1 1)TITI串口发送中断请求标志位。串口每发送完一帧串行数串口发送中断请求标志位。串口每发送完一帧串行数 据后,硬件自动置据后,硬件自动置TITI为为“1”“1” 。 (2)RI串行口接收中断请求标志位。串行口接收完一个串串行口接收中断请求标志位。串行口接收完一个串 行数据帧,硬件自动使行数据帧,硬件自动使RI中断请求标志置中断请求标志置“1”。 必须在中断服务程序中用必须在中断服务程序中用指令指令对对TI、RI标志清标志清“0”。 单片机与嵌入式系统单片机与嵌入式系统 1

16、6 二、二、 中断控制寄存器中断控制寄存器 中断允许中断允许控制由中断允许寄存器控制由中断允许寄存器IEIE控制。控制。 中断优先级中断优先级控制由中断优先级寄存器控制由中断优先级寄存器IPIP控制。控制。 CPU对中断源的开放或屏蔽,由片内的对中断源的开放或屏蔽,由片内的中断允许寄存器中断允许寄存器IE控控 制。制。字节地址字节地址A8H,可位寻址。可位寻址。 1 1、 中断允许寄存器中断允许寄存器IEIE IE对中断的开放和关闭实现对中断的开放和关闭实现两级控制两级控制。 有一个总的开关中断控制位有一个总的开关中断控制位EA(IE.7位),当位),当EA=1,开放,开放 中断,中断,5个中

17、断源的中断请求是否允许,还要由个中断源的中断请求是否允许,还要由IE中的低中的低5 位位所所对应的对应的5个中断请求允许控制位个中断请求允许控制位的状态来决定。的状态来决定。 单片机与嵌入式系统单片机与嵌入式系统 17 图图5-5 5-5 中断允许寄存器中断允许寄存器IEIE的格式的格式 EAEA中断允许总控位中断允许总控位 EA=0EA=0,屏蔽所有中断请求。,屏蔽所有中断请求。 EA=1EA=1,开放所有中断请求。,开放所有中断请求。 ET1/ET0ET1/ET0定时器定时器/ /计数器的溢出中计数器的溢出中 断允许位。断允许位。 ET0/ET1=0ET0/ET1=0,禁止,禁止T0/T1

18、T0/T1溢出中断。溢出中断。 ET0/ET1=1ET0/ET1=1,允许,允许T0/T1T0/T1溢出中断。溢出中断。 EX0/EX1=0EX0/EX1=0,禁止外部中断,禁止外部中断0/10/1中断。中断。 EX0/EX1=1EX0/EX1=1,允许外部中断,允许外部中断1 1中断。中断。 ESES串行口中断允许位。串行口中断允许位。 ES=0ES=0,禁止串行口中断。,禁止串行口中断。 ES=1ES=1,允许串行口中断。,允许串行口中断。 单片机与嵌入式系统单片机与嵌入式系统 几点说明:几点说明: uAT89C51复位以后,复位以后,IE被清被清“0”,所有中断请求被禁止。,所有中断请求

19、被禁止。 uIE中与各个中断源相应的位可用指令置中与各个中断源相应的位可用指令置“1”或清或清“0” (即(即SETB bit;CLR bit),也可用),也可用字节操作指令字节操作指令实现。实现。 u若使某一个中断源被允许中断若使某一个中断源被允许中断,除了,除了IE相应的位被置相应的位被置“1” 外,还必须使外,还必须使EA位置位置“1”。 18 单片机与嵌入式系统单片机与嵌入式系统 (1 1)用位操作指令)用位操作指令 CLRCLRESES;禁止串行口中断;禁止串行口中断 CLRCLREX0EX0;禁止外部中断;禁止外部中断0 0中断中断 CLRCLREX1EX1;禁止外部中断;禁止外部

20、中断1 1中断中断 SETBSETB ET0ET0;允许定时器;允许定时器/ /计数器计数器T0T0中断中断 SETBSETB ET1ET1;允许定时器;允许定时器/ /计数器计数器T1T1中断中断 SETBSETB EA EA ;总中断开关位开放;总中断开关位开放 19 【例例5-15-1】 若允许片内若允许片内2 2个定时器个定时器/ /计数器中断,并禁止其他计数器中断,并禁止其他 中断源的中断请求,请编写设置中断源的中断请求,请编写设置IEIE的相应程序段。的相应程序段。 (2 2)用字节操作指令)用字节操作指令 MOV IE MOV IE,#8AH#8AH 单片机与嵌入式系统单片机与嵌

21、入式系统 20 2 2、 中断优先级寄存器中断优先级寄存器IPIP 两个中断优先级(两个中断优先级(1高优先级高优先级,0低优先级低优先级),可实现两级中),可实现两级中 断嵌套,字节地址为断嵌套,字节地址为B8H。 图5-7 IP寄存器的格式 PSPS串行口中断 优先级控制 定时器定时器T0/T1T0/T1中断中断 优先级控制位优先级控制位 PX0/PX1PX0/PX1外部中断外部中断 0/10/1中断优先级控制中断优先级控制 位位 单片机与嵌入式系统单片机与嵌入式系统 21 MCS-51单片机复位后单片机复位后,IP清清0,各中断源被设置为低优先级。,各中断源被设置为低优先级。 可由软件改

22、变各中断源的中断优先级。可由软件改变各中断源的中断优先级。可实现可实现两级中断嵌套:两级中断嵌套: 图图5-65-6 两级中断嵌套的过程两级中断嵌套的过程 单片机与嵌入式系统单片机与嵌入式系统 22 uCPUCPU同时接收到几个中断请求,首先响应优先级高的中断请求;同时接收到几个中断请求,首先响应优先级高的中断请求; u低优先级的中断服务可被高优先级中断,反之则不能;低优先级的中断服务可被高优先级中断,反之则不能; u同级中断不会被它的同级中断源所中断;同级中断不会被它的同级中断源所中断; u在同时收到在同时收到几个同优先级的中断请求几个同优先级的中断请求时时,优先响应哪一个中优先响应哪一个中

23、 断,取决于断,取决于内部的查询顺序内部的查询顺序。查询顺序查询顺序次序为:次序为: 中断源中断源 中断级别中断级别 外部中断外部中断0 0最高最高 T0T0溢出中断溢出中断 外部中断外部中断1 1 T1T1溢出中断溢出中断 串行口中断串行口中断最低最低 MCS-51单片机响应各中断源遵守单片机响应各中断源遵守基本规则基本规则: 即:各中断源在同一即:各中断源在同一 个优先级的条件下,个优先级的条件下, 外部中断外部中断0 0的中断优先的中断优先 权权最高最高,串行口中断串行口中断 优先权优先权最低最低。 单片机与嵌入式系统单片机与嵌入式系统 23 分为三个阶段:分为三个阶段: 中断请求、中断

24、查询和响应、中断处理和中断返回中断请求、中断查询和响应、中断处理和中断返回 5.2.3 中断处理的过程中断处理的过程 1、响应中断的条件、响应中断的条件 (1 1)总中断允许总中断允许开关接通,即开关接通,即IEIE寄存器中的中断总允许位寄存器中的中断总允许位EA=1EA=1 (2 2)该中断源)该中断源发出中断请求发出中断请求,即,即对应的中断请求标志为对应的中断请求标志为“1 1” (3 3)该中断源的)该中断源的中断允许位中断允许位E E=1=1,即该中断被允许,即该中断被允许 (4 4)无同级无同级或或更高级中断更高级中断正在被服务。正在被服务。 单片机与嵌入式系统单片机与嵌入式系统

25、24 5.2.3 中断处理的过程中断处理的过程 满足以上条件,若满足以上条件,若遇到下列情况之一时,遇到下列情况之一时,CPU不立即响应中断:不立即响应中断: 所查询的机器周期所查询的机器周期不是当前正在执行指令的最后一个机器不是当前正在执行指令的最后一个机器 周期周期。只有在当前指令执行完毕后,才能进行中断响应。只有在当前指令执行完毕后,才能进行中断响应。 当当正在执行的指令是正在执行的指令是RETIRETI或是或是访问访问IEIE或或IPIP的指令。的指令。需要再需要再 去执行完一条指令,才能响应新的中断请求。去执行完一条指令,才能响应新的中断请求。 单片机与嵌入式系统单片机与嵌入式系统

26、2 2、中断响应的过程:中断响应的过程: 由硬件自动生成一条长调用指令由硬件自动生成一条长调用指令: LCALL addr16 ; addr16为相应中断源的入口地址为相应中断源的入口地址 MCS-51各中断源服务程序的各中断源服务程序的入口地址是入口地址是固定固定的的。 由由CPU执行该指令执行该指令 将将PC的内容压入堆栈以保护断点的内容压入堆栈以保护断点,再将,再将中断入口地址装入中断入口地址装入PC。 一般中断入口地址处存放一条一般中断入口地址处存放一条LJMP(或或AJMP)指令,使指令,使CPU转向执转向执 行中断服务程序。行中断服务程序。 例如:例如:对于外部中断对于外部中断1的

27、响应,硬件自动生成的长调用指令为的响应,硬件自动生成的长调用指令为 LCALL 0013H 单片机与嵌入式系统单片机与嵌入式系统 26 3、 外部中断的响应时间外部中断的响应时间 指中断响应有效到转向中断服务程序入口地址所需时间。指中断响应有效到转向中断服务程序入口地址所需时间。 多中断源时,中断响应时间无法估算;多中断源时,中断响应时间无法估算; 单中断源时,单中断源时,中断响应时间中断响应时间最短最短为为3 3个机器周期,个机器周期,最长最长为为 8个机器周期。个机器周期。 单片机与嵌入式系统单片机与嵌入式系统 27 4、 外部中断的触发方式选择外部中断的触发方式选择 (1) 电平触发方式

28、电平触发方式 CPU CPU在每个机器周期采样到的外部中断输入线的电平为低电在每个机器周期采样到的外部中断输入线的电平为低电 平,平,置中断请求标志。置中断请求标志。 在中断服务程序返回之前,在中断服务程序返回之前,须清除外部中断请求须清除外部中断请求,否则否则CPUCPU 返回主程序后会再次响应中断。返回主程序后会再次响应中断。 (2 2) 跳沿触发方式跳沿触发方式 连续两次采样,一个机器周期采样到外部中断输入为高,连续两次采样,一个机器周期采样到外部中断输入为高, 下一个机器周期采样为低,则置下一个机器周期采样为低,则置“1”“1”中断请求标志,直到中断请求标志,直到CPUCPU 响响 应

29、此中断时,该标志才清应此中断时,该标志才清0 0。这样不会丢失中断,但。这样不会丢失中断,但输输 入的负冲宽度至少保持入的负冲宽度至少保持1 1个机器周期个机器周期。 单片机与嵌入式系统单片机与嵌入式系统 28 5、 中断请求的撤销中断请求的撤销 (1 1)定时器)定时器/ /计数器中断请求的撤消计数器中断请求的撤消 中断请求被响应后。硬件会中断请求被响应后。硬件会自动清自动清TF0TF0或或TF1TF1。 (2 2)外部中断请求的撤消外部中断请求的撤消 跳沿触发跳沿触发方式时,外部中断请求的撤消是方式时,外部中断请求的撤消是自动撤消自动撤消的:的: 硬件硬件自动清自动清IE0IE0或或IE1

30、IE1,外部中断请求信号自动消失;外部中断请求信号自动消失; 电平触发电平触发方式时,硬件方式时,硬件自动清自动清IE0IE0或或IE1IE1,通过软硬件相结通过软硬件相结 合合的方法来的方法来清除清除外部中断请求信号。外部中断请求信号。 SETB P1.0 CLR P1.0 NOP NOP SETB P1.0 单片机与嵌入式系统单片机与嵌入式系统 29 (3 3)串行口中断请求的撤消)串行口中断请求的撤消 响应串行口的中断后,响应串行口的中断后,CPUCPU无法知道是接收中断还是发送无法知道是接收中断还是发送 中断,还需测试这两个中断标志位,以中断,还需测试这两个中断标志位,以判定是接收操作

31、还是判定是接收操作还是 发送操作发送操作,然后才清除。所以串行口中断请求的撤销,然后才清除。所以串行口中断请求的撤销只能使只能使 用用软件软件的方法的方法,在中断服务程序中进行,即用如下指令在中,在中断服务程序中进行,即用如下指令在中 断服务程序中对串行口中断标志位进行清除:断服务程序中对串行口中断标志位进行清除: CLR TI CLR TI ;清;清TITI标志位标志位 CLR RI CLR RI ;清;清RIRI标志位标志位 单片机与嵌入式系统单片机与嵌入式系统 5.2.4 5.2.4 中断服务子程序的中断服务子程序的设计设计 30 1 1、初始化程序,需实现:、初始化程序,需实现: u

32、设置中断允许控制寄存器设置中断允许控制寄存器IEIE,包括,包括EAEA及其它中断允许位;及其它中断允许位; u 设置中断优先级寄存器设置中断优先级寄存器IPIP(不设也(不设也OKOK);); u 若外部中断源时,设定采用电平触发还是跳沿触发方式;若外部中断源时,设定采用电平触发还是跳沿触发方式; 一般初始化程序段包含在主程序中。一般初始化程序段包含在主程序中。 例:例:假设允许外部中断假设允许外部中断0 0中断,并设定它为高级中断,其它中中断,并设定它为高级中断,其它中 断源为低级中断,采用电平触发方式。断源为低级中断,采用电平触发方式。编写初始化程序段。编写初始化程序段。 SETB EA

33、 SETB EA ;CPUCPU开中断开中断 SETB EX0 SETB EX0 ;允许外中断允许外中断0 0产生中断产生中断 SETB PX0 SETB PX0 ;外中断外中断0 0为高级中断为高级中断 ORL IP, #01H CLR IT0 CLR IT0 ;外中断外中断0 0为电平触发方式为电平触发方式 ANL TCON,#0FEH MOV IE, #81H, #81H 单片机与嵌入式系统单片机与嵌入式系统 31 2 2、中断服务程序、中断服务程序 (1 1)常用的主程序结构)常用的主程序结构 ORG 0000H ORG 0000H LJMP MAINLJMP MAIN ORG ORG

34、 中断向量地址;中断向量地址; 例如例如03H,0BH,13H,1BH,23H03H,0BH,13H,1BH,23H LJMP INTLJMP INT ORG ORG 主程序入口主程序入口 MAINMAIN:主主 程程 序序 INTINT:中断服务程序中断服务程序 注意:注意:如果有多个中断源,就有多个如果有多个中断源,就有多个“ORG X4X3X2X1HORG X4X3X2X1H”的入的入 口地址,多个口地址,多个“中断入口地址中断入口地址”必须依次由小到大排列必须依次由小到大排列。主程。主程 序序MAINMAIN的起始的起始根据具体情况来安排根据具体情况来安排 单片机与嵌入式系统单片机与嵌

35、入式系统 (2)(2)中断服务程序的流程中断服务程序的流程 32 例例: :根据中断服务程序流程,编写中断根据中断服务程序流程,编写中断 服务程序。服务程序。假设现场保护只需将假设现场保护只需将PSWPSW和和 A A的内容压入堆栈中保护。的内容压入堆栈中保护。 INTINT: CLR EACLR EA;CPUCPU关中断关中断 PUSH PSWPUSH PSW;现场保护现场保护 PUSH ACCPUSH ACC SETB EASETB EA;CPUCPU开中断开中断 ;中断处理程序段中断处理程序段 CLR EACLR EA;CPUCPU关中断关中断 POP ACCPOP ACC;现场恢复现场

36、恢复 POP PSWPOP PSW SETB EA ; CPU SETB EA ; CPU开中断开中断 RETIRETI 单片机与嵌入式系统单片机与嵌入式系统 33 上述程序上述程序几点说明几点说明: (1)本例的)本例的现场保护假设仅仅涉及现场保护假设仅仅涉及PSW和和A的内容,如有的内容,如有 其他需要保护的内容,只需在相应位置再加几条其他需要保护的内容,只需在相应位置再加几条PUSH和和 POP指令即可。注意,堆栈的操作是先进后出。指令即可。注意,堆栈的操作是先进后出。 (2) “中断处理程序段中断处理程序段”,设计者应根据中断任务的具,设计者应根据中断任务的具 体要求编写中断处理程序。

37、体要求编写中断处理程序。 (3)如果不允许被其他的中断所中断,可将)如果不允许被其他的中断所中断,可将“中断处理程中断处理程 序段序段”前后的前后的“SETB EA”和和“CLR EA”两条指令去掉。两条指令去掉。 (4)最后一条指令必须是返回指令最后一条指令必须是返回指令RETI,不可缺少,不可缺少, CPU执行完这条指令后,返回断点处,重新执行被中断的主执行完这条指令后,返回断点处,重新执行被中断的主 程序。程序。 33 单片机与嵌入式系统单片机与嵌入式系统 34 3 3、中断服务程序的设计实例、中断服务程序的设计实例 例例1 1:单片机系统硬件如图,当上电后,单片机系统硬件如图,当上电后

38、,P0.0P0.0连接的连接的LEDLED灯灯 点亮点亮,当,当按下按键按下按键S S,通过,通过INT0INT0向向CPUCPU申请中断,申请中断,LEDLED灯灯闪烁闪烁 点亮点亮1010次次。 分析:分析: uP0.0P0.0为为0 0,LEDLED灯亮,灯亮,P0.0P0.0 为为1 1,LEDLED灯灭。灯灭。 uS S键断开为高电平,闭合为键断开为高电平,闭合为 低电平,产生一次中断;低电平,产生一次中断; u设计设计主程序主程序:初始化设置、:初始化设置、 点亮点亮LEDLED灯;灯; uINT0INT0中断服务程序中断服务程序:控制:控制 LEDLED闪烁点亮闪烁点亮1010次

39、。次。 单片机与嵌入式系统单片机与嵌入式系统 35 ORGORG0000H0000H AJMPAJMPSTARTSTART ORG ORG0003H0003H AJMP AJMPINTLEDINTLED ORG ORG0030H0030H START: MOV START: MOVIE,#81HIE,#81H MOV MOVTCON,#01HTCON,#01H MOV MOVSP,#60HSP,#60H MAIN: SJMP MAIN: SJMP$ $ DELAY: MOV DELAY: MOVR3R3,#0FFH#0FFH DEL: MOV DEL: MOVR4R4,#0FFH#0FFH D

40、JNZ DJNZR4R4,$ $ DJNZ DJNZR3R3,DELDEL RET RET INTLED:INTLED: CLRCLREA EA PUSHPUSHPSWPSW PUSHPUSHACCACC SETBSETBRS0RS0 SETBSETBRS1RS1 MOVMOVR0R0,#0AH#0AH LOOP:LOOP:MOVMOVA,#0FEHA,#0FEH MOVMOVP0P0,A A ACALLACALLDELAYDELAY MOVMOVA,#0FFHA,#0FFH MOVMOVP0P0,A A ACALLACALLDELAYDELAY DJNZDJNZR0R0,LOOPLOOP P

41、OPPOPACCACC POPPOPPSWPSW SETBSETBEAEA RETIRETI ENDEND 初始化设置:开放外初始化设置:开放外 部中断部中断0,设置为边沿,设置为边沿 触发,设定栈顶触发,设定栈顶 主程序里什么都不干主程序里什么都不干 闪烁次数闪烁次数 熄灭熄灭LED灯灯 保护现场保护现场 单片机与嵌入式系统单片机与嵌入式系统 36 5.3 89C515.3 89C51的定时器的定时器/ /计数器计数器 提供两个可编程的定时器提供两个可编程的定时器/计数器计数器T1、T0。 5.3.1 5.3.1 定时器定时器/ /计数器的结构计数器的结构 由由SFRSFR的的TH0TH0、

42、TL0TL0和和TH1TH1、TL1TL1构成两个构成两个1616位加位加1 1计数器。计数器。 控制寄存器 工作方式寄存器 89C51定时器/计数器结构图 单片机与嵌入式系统单片机与嵌入式系统 37 2 2、定时器定时器工作模式工作模式 对系统时钟脉冲对系统时钟脉冲1212分频的脉冲进行计数,即对一个机器分频的脉冲进行计数,即对一个机器 周期的脉冲进行加周期的脉冲进行加1 1计数。计数。 有有2 2种种工作模式工作模式: 1 1、计数器计数器工作模式工作模式 对引脚对引脚T0T0(P3.4P3.4)或引脚)或引脚T1T1(P3.5P3.5)的外来脉冲进行计)的外来脉冲进行计 数,在脉冲的数,

43、在脉冲的下跳变下跳变进行加进行加1 1计数。计数。 外部计数脉冲的最高频率为系统振荡器频率的外部计数脉冲的最高频率为系统振荡器频率的1/241/24,输,输 入信号的高、低电平至少要保持一个机器周期。入信号的高、低电平至少要保持一个机器周期。 不管工作于不管工作于定时方式定时方式还是还是计数方式,计数方式,T0T0、T1T1计数器对脉冲加计数器对脉冲加1 1 计数,当计数器计数,当计数器TH0TL0TH0TL0、TH1TL1TH1TL1计数值为全计数值为全0 0,则置中断请求,则置中断请求 标志标志TF0TF0或或TF1TF1为为1 1。 单片机与嵌入式系统单片机与嵌入式系统 38 5.3.2

44、 5.3.2 定时器定时器/ /计数器控制寄存器计数器控制寄存器TCONTCON 字节地址为字节地址为88H88H,可位寻址,位地址为,可位寻址,位地址为88H88H8FH8FH。 格式:格式: 与外部中断有关与外部中断有关计数溢出计数溢出 标志位标志位 计数运行控制位计数运行控制位 1:启动定时器启动定时器/计数器工作计数器工作 0:停止定时器停止定时器/计数器工作计数器工作 单片机与嵌入式系统单片机与嵌入式系统 39 5.3.3 5.3.3 工作方式控制寄存器工作方式控制寄存器TMODTMOD 用于选择用于选择T0T0、T1T1的工作方式,字节地址为的工作方式,字节地址为89H89H。 格

45、式:格式: 门控位门控位 0 0:仅以:仅以TR0TR0(或或TR1TR1) 来控制来控制T0(T0(或或T1)T1)运行。运行。 1 1:用引脚用引脚INT0 INT0 ( (或或 INT1INT1) )上的高电平和上的高电平和TR0TR0 (或或TR1TR1)两个条件来)两个条件来 启动启动T0(T0(或或T1)T1)运行。运行。 工作方式选择位:工作方式选择位: 0000:方式:方式0 0,1313位定时器位定时器/ /计数器。计数器。 0 01 1:方式:方式1 1,1616位定时器位定时器/ /计数器。计数器。 1010:方式:方式2 2,8 8位常数自动重新装载。位常数自动重新装载

46、。 1111:方式:方式3 3,仅适用于,仅适用于T0T0,T0T0分成两个分成两个 8 8位计数器,位计数器,T1T1停止计数。停止计数。 计数器模式和定时器计数器模式和定时器模模 式选择位式选择位 单片机与嵌入式系统单片机与嵌入式系统 40 5.3.4 5.3.4 定时器定时器/ /计数器的计数器的4 4种工作方式种工作方式 1 1、工作方式、工作方式0 0 13 13位定时位定时/ /计数器的工作方式,其计数器由计数器的工作方式,其计数器由TH0TH0的的8 8位和位和TL0TL0 的低的低5 5位构成,位构成,TL0TL0高三位弃之不用。高三位弃之不用。 电路图:电路图: C/T=0,

47、计时方式C/T=1,计数方式 0 1 1 0 1 仅用TR1控制T1 外部中断引脚和 TR1控制T1 单片机与嵌入式系统单片机与嵌入式系统 41 例:如果晶振频率为例:如果晶振频率为6MHz 6MHz ,方式,方式0 0时最大定时时间为:时最大定时时间为: 2 213 13 12/6MHz 12/6MHz 2 214 14 s s 方式方式0 0时最小定时时间为:时最小定时时间为:12/fosc=2 12/fosc=2 s s 定时和计数的应用定时和计数的应用: : 计数范围计数范围:1 12 213 13 计数计算公式:计数值计数计算公式:计数值2 213 13计数初值 计数初值 定时范围:

48、定时范围:1 1机器周期机器周期2 213 13机器周期 机器周期 (12/fosc 12/fosc 2 213 13 12/fosc )12/fosc ) 定时计算公式:定时时间定时计算公式:定时时间T T(2 213 13计数初值 计数初值) )机器周期机器周期 ( ( (2 213 13计数初值 计数初值) ) 12/fosc ) 12/fosc ) 单片机与嵌入式系统单片机与嵌入式系统 42 2 2、工作方式、工作方式1 1 方式方式1 1是是1616位定时位定时/ /计数器的工作方式计数器的工作方式 定时和计数的应用定时和计数的应用: : 计数范围:计数范围:1 12 216 16

49、计数计算公式:计数值计数计算公式:计数值2 216 16计数初值 计数初值 定时范围:定时范围:1 1机器周期机器周期2 216 16机器周期( 机器周期(12/fosc12/fosc2 216 16 12/fosc )12/fosc ) 定时计算公式:定时时间定时计算公式:定时时间T T(2 216 16计数初值 计数初值) )机器周期机器周期 ( ((2 216 16计数初值 计数初值) ) 12/fosc ) 12/fosc ) 单片机与嵌入式系统单片机与嵌入式系统 43 例:例:要求要求T0T0工作于方式工作于方式1 1定时,利用定时,利用P1.0P1.0控制控制LEDLED闪烁频率为

50、闪烁频率为 50Hz50Hz,设,设foscfosc=12MHz=12MHz,电路如图所示,试编写程序。,电路如图所示,试编写程序。 TH0TH0TL0TL0 分析:分析: TMODTMOD初始化应设置为初始化应设置为0001 0001 计数初值计算:计数初值计算: 50HZ50HZ方波的周期为方波的周期为1/50 =20 ms,1/50 =20 ms,脉脉 宽应为宽应为10ms10ms,因此,因此T1T1定时定时10ms10ms时:时: 计数初值计数初值X=2X=216 16 - T - Tfosc/12fosc/12 =65536-10 =65536-101010-3 -3 1212101

51、06 6/12/12 = 55536D = D8 F0H = 55536D = D8 F0H 单片机与嵌入式系统单片机与嵌入式系统 44 ORG 0000H ORG 0000H AJMP STARTAJMP START ORG 000BH ORG 000BH AJMP INTTIM0 AJMP INTTIM0 ORG 0100H ORG 0100H START: MOV TMOD,#01H START: MOV TMOD,#01H MOV TH0,#0D8H MOV TH0,#0D8H MOV TL0,#0F0H MOV TL0,#0F0H SETB EASETB EA SETB ET0 SE

52、TB ET0 SETB TR0 SETB TR0 MAIN: SJMP $ MAIN: SJMP $ INTTIM0:INTTIM0:CPL P1.0CPL P1.0 MOV TH0,#0D8HMOV TH0,#0D8H MOV TL0,#0F0HMOV TL0,#0F0H RETI RETI ENDEND T0计数初值初始化计数初值初始化 开放开放CPU、T0 中断中断 程序如下:程序如下: T0中断服务程序中断服务程序 单片机与嵌入式系统单片机与嵌入式系统 45 3 3、工作方式、工作方式2 2 自动恢复初值的自动恢复初值的8 8位定时位定时/ /计数器的工作方式,计数器的工作方式,计数满

53、后自动装计数满后自动装 入计数初值入计数初值。 初始化时,计数初值同时送初始化时,计数初值同时送THXTHX、TLXTLX。当。当TLXTLX计数溢出时,计数溢出时, 在置在置“1”“1”溢出标志溢出标志TFXTFX的同时,的同时,自动的将自动的将THXTHX中的初值送至中的初值送至 TLXTLX,使使TLXTLX从初值开始重新计数。从初值开始重新计数。 结构图为:结构图为: 单片机与嵌入式系统单片机与嵌入式系统 46 省去用户软件中重装初值的省去用户软件中重装初值的 程序,精确的定时。程序,精确的定时。 定时和计数的应用:定时和计数的应用: 计数范围:计数范围:1 12 28 8 计数计算公

54、式:计数值计数计算公式:计数值2 28 8计数初值计数初值 定时范围:定时范围:1 1机器周期机器周期2 28 8机器周期机器周期 (12/fosc 12/fosc 2 28 8 12/fosc )12/fosc ) 定时计算公式:定时时间定时计算公式:定时时间T T(2 28 8计数初值计数初值) )机器周期机器周期 ( ((2 28 8计数初值计数初值) ) 12/fosc ) 12/fosc ) 单片机与嵌入式系统单片机与嵌入式系统 47 例例6-46-4:利用利用T1T1工作于方式工作于方式2 2对外部信号进行计数,要求每计对外部信号进行计数,要求每计 满满100100个数将个数将P1

55、.0P1.0口取反操作,电路如图所示,试编写程序。口取反操作,电路如图所示,试编写程序。 P3.5 单片机与嵌入式系统单片机与嵌入式系统 48 分析:根据题意,分析:根据题意,TMODTMOD初始化应设置为初始化应设置为 01100110 ; 计数初值计算:要求计计数初值计算:要求计100100个脉冲,计数值为个脉冲,计数值为100100 计数初值计数初值X= 2X= 28 8 - 100 = 156D = 9CH - 100 = 156D = 9CH 程序如下程序如下: ORG 0000HORG 0000H AJMP STARTAJMP START ORG 001BH ORG 001BH A

56、JMP INTP1 AJMP INTP1 ORG ORG 0030H 0030H START: MOV TMOD,#60H START: MOV TMOD,#60H MOV TH1,#9CH MOV TH1,#9CH MOV TL1,#9CH MOV TL1,#9CH SETB EASETB EA SETB ET1 SETB ET1 SETB TR1 SETB TR1 MAIN: SJMP $ MAIN: SJMP $ INTP1 : CPL P1.0INTP1 : CPL P1.0 RETI RETI T1T1中断服务程序中断服务程序 入口地址入口地址 初初 始始 化化 程程 序序 T1T1

57、中断服务程序中断服务程序 单片机与嵌入式系统单片机与嵌入式系统 49 5.3.5 5.3.5 计数器模式对输入信号的要求计数器模式对输入信号的要求 u当定时器当定时器/ /计数器工作在计数器模式时,计数脉冲来自外计数器工作在计数器模式时,计数脉冲来自外 部输入引脚部输入引脚T0T0(P3.4P3.4)或)或T1T1(P3.5P3.5)。)。 u当输入信号产生负跳变时,计数器的值增当输入信号产生负跳变时,计数器的值增1 1。 u由于确认一次确认一次负跳变负跳变要花要花2 2个个机器周期机器周期,因此外部输入的外部输入的 计数脉冲的计数脉冲的最高频率最高频率为系统振荡器频率的为系统振荡器频率的1/

58、241/24。 例如:选用例如:选用6MHz6MHz频率的晶体,允许输入的脉冲频率最高为频率的晶体,允许输入的脉冲频率最高为 250kHz250kHz。如果选用。如果选用12MHz12MHz频率的晶体,则可输入最高频率为频率的晶体,则可输入最高频率为 500kHz500kHz的外部脉冲。的外部脉冲。 单片机与嵌入式系统单片机与嵌入式系统 50 分析:分析:2ms2ms周期的方波,脉宽为周期的方波,脉宽为1 ms1 ms,因此采用,因此采用T0T0定时定时1ms1ms, 当每当每1ms1ms定时到产生一次中断,定时到产生一次中断,CPUCPU响应中断,执行中断服务响应中断,执行中断服务 程序对程

59、序对P1.0P1.0取反。取反。 5.4 5.4 定时器定时器/ /计数器的编程和应用计数器的编程和应用 5.4.1 5.4.1 工作方式的应用工作方式的应用 例例6-1:假设系统时钟频率采用假设系统时钟频率采用6MHz,要在要在P1.0上输出一个上输出一个 周期为周期为2ms的方波,如的方波,如图图所示,试设计程序。所示,试设计程序。 单片机与嵌入式系统单片机与嵌入式系统 51 (1 1)初始化设置:)初始化设置:T0T0工作于方式工作于方式1 1,允许中断,设置,允许中断,设置TMODTMOD:01H,01H, 置置IEIE的的ET0ET0、EAEA,置,置TCONTCON的的TR0TR0

60、 (2 2)计数初值)计数初值X= 2X= 216 16 - T - Tfosc/12fosc/12 = 65536 - 1 = 65536 - 11010-3 -3 6 610106 6 /12 /12 = 65036D = FE 0CH = 65036D = FE 0CH TH0TH0TL0TL0 单片机与嵌入式系统单片机与嵌入式系统 52 (3 3) 程序设计程序设计 ORGORG 0000H 0000H RESET: AJMP STARTRESET: AJMP START ORG 000BHORG 000BH AJMPAJMP IT0P IT0P ORG 0100HORG 0100H

温馨提示

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

评论

0/150

提交评论