最新单片机培训5-定时器计数器与中断系统.ppt_第1页
最新单片机培训5-定时器计数器与中断系统.ppt_第2页
最新单片机培训5-定时器计数器与中断系统.ppt_第3页
最新单片机培训5-定时器计数器与中断系统.ppt_第4页
最新单片机培训5-定时器计数器与中断系统.ppt_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

1,定时器/计数器与中断系统,周剑峰,2,MCS-51单片机的定时器/计数器,3,一、MCS-51单片机定时器计数器组成: 定时器/计数器0(T0):16位的加计数器 定时器/计数器1(T1):16位的加计数器 二、定时器/计数器的功能 对外部输入信号的计数功能。定时器/计数器0(T0)的外来脉冲输入端为P3.4;定时器/计数器1(T1)的外来脉冲输入端为P3.5。 定时功能。定时器/计数器的定时功能也是通过计数实现的,它的计数脉冲是由单片机的片内振荡器输出经12分频后产生的信号,即为对机器周期计数。,MCS-51单片机的定时器/计数器,4,MCS-51单片机定时器/计数器逻辑结构图,T1由TH1、TL1构成,字节地址为8DH、8BH,T0由TH0、TL0构成,字节地址为8CH、8AH,TCON则用于控制定时计数器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。,特殊功能寄存器TMOD控制定时计数器的工作方式,5,定时器/计数器的控制主要是通过以下几个寄存器实现的: TCON-定时器/计数器控制寄存器 TMOD-定时器/计数器工作方式控制寄存器 IE -中断允许控制寄存器,定时器/计数器的控制,6,TMOD 89H,GATE 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制,TCON的TR0或TR1置1,启动定时器工作; GATE = 1 , /INT0 或 /INT1 为高电平, 且TCON的TR0或TR1置1,启动定时器工作。,C/T 外部计数器 / 定时器方式选择位 C/T = 0 定时方式; C /T = 1 计数方式。,M1M0 工作方式选择位(编程可决定四种工作模式)。,7,方式寄存器TMOD,M1和M0 方式选择位,8,= 0 定时; = 1 对外计数。 定时:fosc / 12 = 1 /(12/fosc) = 1 / T,计数:脉冲不等间隔。,波形等间隔,次数已定,时间确定 即对机器周期进行计数。,左图定时时间为 N*T,每个下降沿计数一次 确认一次负跳变需两个机器周期, 所以,计数频率最高为fosc / 24。,9,TCON 88H,TF0、TF1 分别是定时、计数器T0、T1的溢出标志位。,10,(1)定时/计数器的工作方式,M1M0 工作模式选择位(编程可决定四种工作模式) 0 0 13位定时/计数器 模式0 0 1 16位定时/计数器 模式1 0 8 位定时/计数器(自动重装初值) 模式2 1 1 T0 8位定时/计数 模式3 1 1 T1 停止工作 模式3,11,1)工作方式0,T0的等效逻辑结构,12,在计数工作方式0下,计数器的计数值范围是: 18192(2的13方) 当为定时工作方式时,定时时间的计算公式为: ( 8192 -计数初值)晶振周期12 或 ( 8192 -计数初值)机器周期 其时间单位与晶振周期或机器周期相同。 16位寄存器只用13位,TL0/TL1的高3位未用。 如果单片机的晶振选为6.000MHz,则最小定时时间为: 8192(81921)1/610-612=210-6(s)=2(us) 最长定时时间为: (81920)1/610-612=1638410-6(s)=16384(us)。,13,2)工作方式1,T0的等效逻辑结构,14,在工作方式1下,计数器的计数值范围是: 165536(2的16方) 当为定时工作方式1时,定时时间的计算公式为: (65536计数初值) 晶振周期12 或 (65536计数初值) 机器周期 其时间单位与晶振周期或机器周期相同。 如果单片机的晶振选为6.000MHz,则最小定时时间为: 65536(655361)1/610-612=210-6(s)=2(us) 最长定时时间为: (655360)1/610-612=13107210-6(s)=131072(us)。,15,3)工作方式2,T0的等效逻辑结构,16,方式2与方式0、1的区别: 工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。 工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。 方式2在串口通讯时,常用作波特率发生器。,17,4)工作方式3,18,如果定时/计数器0工作于工作方式3,那么定时/计数器1的工作方式就因为自己的一些控制位已被定时/计数器0借用,只能工作在方式0、方式1或方式2下,T1等效电路参见下图:,19,2.怎样编制计数程序?,首先必须对定时计数器进行初始化,然后再开启定时或计数。简单的总结一下,定时计数器的初始化包括以下内容。,(1)确定工作方式对TMOD赋值; 如:任务中的MOV TMOD,#06H指令,设定T0为计数器工作方式。 (2)预置定时计数器中计数的初值直接写入TH和TL; 如:任务中的MOV TH0,#00H 两条指令,设定计数初值。 MOV TL0,#00H,20,(3)根据需要开放定时器/计数器的中断对IE位赋值; (4)启动定时器/计数器; 如:任务中的SETB TR0 指令 初值的计算方法 X=M-计数值 M是定时器的最大计数值。视工作方式不同而不同。 工作方式0: 13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。 工作方式1: 16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。 工作方式2和工作方式3:都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。,21,预置值计算: 用最大计数量减去需要的计数次数即可。 通过上面的任务,我们掌握了计数程序的编制方法,下面我们再看看定时程序怎样编制。 首先我们看一下下面的程序段。 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#4CH SETB TR0 以上程序是任务一中的定时程序段,它的初始化过程和计数方式类似。,22,MCS-51单片机的定时器/计数器应用举例: 利用定时器/计数器实现固定时间的定时 利用定时器/计数器实现对外来信号脉冲的计数 利用定时器/计数器实现对外来信号脉冲信号脉宽的测量,MCS-51单片机的定时器/计数器,23,实例一:定时器/计数器实现固定时间的定时 题目:利用T0,使用工作方式0,在单片机的P1.0输出一个周期为2ms,占空比为1:1的方波信号。 解:周期为2ms,占空比为1:1的方波信号,只需要利用T0产生定时,每隔1ms将P1.0取反即可。 编程步骤: 计算TMOD的值 由于GATE=0;M1M0=00;C/T=0; 所以 (TMOD)00H 计算初值(单片机振荡频率为12MHZ) 所需要的机器周期数: n=(1000us/1us)=1000 计数器的初始值: 8192-1000=7192 = 1 1100 0001 1000B=1C18H 所以:(TH0)=E0H,(TL0)=18H,24,主程序:,中断程序:,流程图,25,3:程序清单 ORG 0000H LJMP MAIN ORG 000BH ;T0中断入口地址 LJMP SER ;中断服务程序 MAIN:MOV SP,#50H ;开辟堆栈 MOV TMOD,#00H ;工作方式设置 MOV TH0,#E0H ;初始值设置 MOV TL0,#18H SETB EA ;开中断 SETB ET0 ;开T0中断 SETB TR0 ;运行T0 HERE:SJMP $ ;等待中断 SER:CPL P1.0 ;定时到,输出取反 MOV TH0,#E0H ;重新加载初战值 MOV TL0,#18H RETI ;中断返回 END,中断程序的主程序和中断服务程序的布局,定时器初始化,开定时器中断,主程序,中断服务程序,26,实例二:利用方式1定时 题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟、占空比为1:1的方波信号。 解:周期为2分钟,占空比为1:1的方波信号,只需要利用T1产生定时,每隔1分将P1.0取反即可。 由于定时器定时时间有限,设定T1的定时为50ms,软件计数1200次,可以实现1分钟定时。 编程步骤: 1、计算TMOD的值 由于:GATE=0;M1、M0=0、1;C/T=0; 所以:(TMOD)10 、计算初值(单片机的振荡频率为12MHZ) 所需要的机器周期数: n=(50000us/1us)=50000 计数器的初始值:65536-50000=15536 所以:(TH0)=3CH;(TL0)=0B0H,27,主程序:,中断程序:,流程图,28,程序清单 ORG 0000H LJMP MAIN ORG 001BH ; T1中断入口地址 LJMP SER ; 中断服务程序 MAIN:MOV SP,#50H ; 开辟堆栈 MOV TMOD,#10H ; 工作方式设置 MOV TH1,#3CH ; 初始值设置 MOV TL1,#0B0H SETB EA ; 开中断 SETB ET1 ; 开T1中断 SETB TR1 ; 运行T1 MOV 20H,#20 MOV 21H,#60 HERE:SJMP $ ; 等待中断,中断程序的主程序和中断服务程序的布局,定时器初始化,开定时器中断,主程序,计数单元赋初值,29,SER: MOV TH1,#3CH ;初始值重新设置 MOV TL1,#0B0H DJNZ 20H,NO MOV 20H,#20 DJNZ 21H,NO MOV 21H,#60 CPL P1.0 ;定时到,输出取反 NO:RETI ;中断返回 END,中断服务程序,判断中断的次数,思考:能否利用定时器来实现一个电子钟?,注意:此程序的#20和#60这两个立即数后面没有加H表示是十进制数。,30,要求: 每秒的次数用发光管显示出来 每秒钟按键的按下次数不超过255次,测量每1秒钟之内的按键按下次数,31,实现的方法:利用T0计数器对从T0输入的脉冲进行计数,利用T1工作于定时。每定时达到1秒钟,取出计数器的值进行显示。由于每秒钟按键的按下次数不超过255次,所以只需要显示TL0的内容即可。 步骤: 由于定时器的最大定时时间不能够达到1秒钟,我们设定T1定时100mS,每10次取一次计数值。 设定TMOD,TH1,TL1的内容,(fosc)=6MHz 所以:(TMOD)=51H (TH1)=3CH (TL1)=0B0H,工作原理,32,ORG 0000H LJMP MAIN ORG 001BH LJMP SER MAIN: MOV R1,#10 MOV TMOD,#51H MOV TH1,#3CH MOV TL1,#0B0H MOV TL0,#00H MOV TH0,#00H SETB EA SETB TR0 SETB TR1 SETB ET1 MOV P1,#00H SJMP $,T0和T1初始化 T1定时,T0计数,启动T0计数,T1定时,开T1中断,主程序,中断程序的主程序和中断服务程序的布局,程序清单,33,SER:CLR TR0 CLR TR1 MOV TH1,#3CH MOV TL1,#0B0H DJNZ R1, LL MOV A,TL0 MOV P1,A MOV TH0,#00H MOV TL0,#00H LL: SETB TR0 SETB TR1 RETI END,关T0和T1 重新对T1赋值,判断是否到10次,取值显示 清除T0的计数值,开T0和T1,返回,中断程序清单,34,P3.2,T,测量在(P3.2)端出现的正脉冲宽度,35,实质:利用门控制位GATE实现对定时器计数器的启/停控制,来测量脉冲宽度。 当GATE为1,TR1(TR0)为1时,只有INT1(INT0)引脚输入高电平时,T1(T0)才允许计数。 当GATE为0,只要TR1(TR0)为1时,T1(T0)就允许计数。 利用GATE=1时的这个功能,可测试INT1(P3.3)和INT0(P3.2)上正脉冲的宽度。,工作原理,36,流程图:,37,ORG 4000H MOV TMOD,#09H ;定时器T0模式1定时 MOV TH0, #00H ;设定初值 MOV TL0, #00H ; JB P3.2, $ ;等待INT0变低 SETB TR0 ;启动T0 JNB P3.2, $ ;等待INT0变高 JB P3.2, $ ;开始计数,等待变低 CLR TR0 ;停止计数 MOV 30H,TH0 ;取出T0中的高八位 MOV 31H,TL0 ;取出T0中的低八位 END,对T0进行初始化,T0计数过程,取计数值,程序如下:,38,MCS51单片机的中断系统,39,MCS51单片机的中断系统,中断的基本概念 MCS-51的中断系统 中断源和中断标志 中断的允许和优先权 中断的处理过程 外部中断源的扩展 中断的应用,40,中断的基本概念,日常生活中断的例子 单片机中的中断概念 中断技术的优点 什么是中断,我们从生活中的例子引入。 看书的例子:你正在看书,突然电话铃响了,。 中断就是正常的工作被外部事件打断了。,41,日常生活中的中断,仔细研究一下生活中的中断,对于我们学习计算机中的中断也很有好处。 1、什么可以引起中断?生活中有很多事件可以引起中断:有人按了门铃,电话铃响了,你的闹钟铃响了,你烧的水开了,你内急了等等诸如此类的事件,我们把可以引起中断的事件称之为中断源。计算机中也有一些可以引起中断的事件,像MCS51单片机就有5个中断源。,42,2、中断的嵌套与优先级处理: 设想一下,我们正在看书,电话铃突然响了,同时又有人按了门铃,你该先做那样呢?如果你正在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个很重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不等人上门)你可能会按你通常的习惯去处理。总之这里存在一个优先级问题。优先级问题不仅仅发生在两个或以上的中断同时产生的情况,也发生在一个中断已经产生,又有一个中断产生的情况。如你正在接电话,有人按门铃的情况,或你正在开门与人交谈,又有电话铃了的情况。考虑一下我们会怎么办吧。,43,3、中断的响应过程: (看书的例子)当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要来继续看书)。 (接电话的例子)电话铃响了我们要到放电话的地方去,门铃响了,我们要到门那边去,也就是说,不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的,这也和计算机中的中断类似,如51MCU 的5个中断源都有各自的中断入口地址,当某个中断源产生中断时,CPU响应中断便到相应的中断入口地址执行程序。,44,计算机中的中断 计算机执行正常程序时,系统出现某些急需处理的异常情况和特殊请求,CPU暂时中止现在正在执行的的指令,转去对随机发生的更紧迫事件处理;处理完后,CPU会自动返回原来的程序继续执行。 就如:你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。,计算机中的中断,45,计算机中的中断,中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。 将能引起中断的事件称为中断源。 CPU现行运行的程序称为主程序。 处理随机事件的程序称为中断服务子程序。,46,中断技术的优点,分时操作 CPU可以同多个外设“同时”工作 实时处理 CPU及时处理随机事件 故障处理 电源掉电、存储出错、运算溢出,47,MCS-51中断系统,中断源 中断标志 中断允许 中断优先级 MCS-51中断系统结构 中断寄存器,48,MCS-51的中断系统中断源,8051单片机有5个中断请求源:,单片机,49,MCS-51的中断系统中断标志,CPU,主程序,INT0,INT1,T0,T1,串口,IE0,TF0,IE1,TF1,中断源,中断标志位,每一个中断源都有相应的中断标志位; 某一个中断源申请中断,相应中断标志位置1。,50,MCS-51的中断系统中断允许,CPU,主程序,INT0,INT1,T0,T1,串口,IE0,TF0,IE1,TF1,中断源,中断标志位,EA总中断允许位,EA=1开放所有中断,EA=0,禁止所有中断; 某一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断。,中断允许,ES,ET0,EX0,EX1,ET1,EA,51,MCS-51的中断系统结构图,52,TCON,T1溢出中断标志(TCON.7): T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。,TCON寄存器:T0和T1控制寄存器,53,TCON 88H,外部中断INT1中断标志位(TCON.3) : IE11,外部中断1向CPU申请中断,外部中断INT1触发方式控制位(TCON.2): IT1=0,电平触发方式 IT1=1, 下降沿触发方式,TCON寄存器T0和T1控制寄存器,注意:该寄存器可以位寻址。,54,TF1:定时器1的溢出中断标志。T1被启动计数后,从初值做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断。 TF0:定时器0溢出中断标志。其操作功能同TF1。 IE1:外部中断1标志。IE1 = 1,外部中断1向CPU申请中断。 IT1:外中断1触发方式控制位。当IT1 = 0时,外部中断1控制为电平触发方式。当IT1 = 1时,外部中断1控制为电平触发方式。 IE0:外部中断0中断标志。其操作功能与IE1相同。 IT0:外中断0触发方式控制位。其操作功能与IT1相同。,55,TI (SCON.1)串行发送中断标志。 RI (SCON.0)串行接收中断标志。,SCON寄存器串行口控制寄存器,SCON 98H,注意:该寄存器可以位寻址。,56,TI:串行发送中断标志 CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。 注意:CPU响应中断时并不清除TI,必须由软件清除。 RI:串行接收中断标志 在串行口允许接收时,每接收完一个串行帧,硬件将使RI置位。 注意:CPU在响应中断时不会清除RI,必须由软件清除,57,IE A8H,例:允许定时器T0中断: SETB EA SETB ET0 或 MOV IE,#82H,注意:该寄存器可以位寻址。,IE寄存器中断允许寄存器,58,EA:总中断允许控制位。EA = 1,开放所有中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;EA = 0,禁止所有中断。 ES:串行口中断允许位。ES = 1,允许串行口中断;ES = 0,禁止串行口中断。 ET1:定时器1中断允许位。ET1 = 1,允许定时器1中断;ET1 = 0,禁止定时器1中断。 EX1:外部中断1中断允许位。EX1 = 1,允许外部中断1中断;EX1 = 0,禁止外部中断1中断。 ET0:定时器0中断允许位。ET0 = 1,允许定时器0中断;ET0 = 0,禁止定时器0中断。 EX0: 外部中断0中断允许位。EX0 = 1,允许外部中断0中断;EX0 = 0,禁止外部中断0中断。,59,51单片机有两个中断优先级高级和低级 专用寄存器IP为中断优先级寄存器,用户可用软件设定 相应位为1,对应的中断源被设置为高优先级,相应位为0,对应的中断源被设置为低优先级 系统复位时,均为低优先级 该寄存器可以位寻址,IP寄存器中断优先级寄存器,IP B8H,60,PS:串行口中断优先控制位 PS = 1,设定串行口为高优先级中断;PS = 0,设定串行口为低优先级中断。 PT1:定时器T1中断优先控制位 PT1 = 1,设定定时器T1中断为高优先级中断;PT1 = 0,设定定时器T1中断为低优先级中断。 PX1:外部中断1中断优先控制位 PX1 = 1,设定外部中断1为高优先级中断;PX1 = 0,设定外部中断1为低优先级中断。 PT0:定时器T0中断优先控制位 PT0 = 1,设定定时器T0中断为高优先级中断;PT0 = 0,设定定时器T0中断为低优先级中断。 PX0:外部中断0中断优先控制位 PX0 = 1,设定外部中断0为高优先级中断;PX0 = 0,设定外部中断0为低优先级中断。 当系统复位后,所有中断源均设定为低优先级中断。,61,中断的优先级,自然优先级: INT0 T0 INT1 T1 串行口中断,高,低,62,中断的处理过程,中断处理过程分为三个阶段:中断响应、中断处理和中断返回。 中断响应 中断处理(又称中断服务) 中断返回 中断请求的撤除,63,中断响应:在满足CPU的中断响应条件之后,CPU对中断源中断请求予以处理。 中断响应过程: 保护断点地址;,把程序转向中断服务程序的入口地址(通常称矢量地址)。,特别注意:这些工作是硬件自动完成的!,断点地址,中断服务子程序的入口地址,外部中断0入口地址,AJMP ZD0,ZD0,中断响应,64,中断服务子程序入口地址又称为中断矢量或中断向量。,单片机中5个中断源的矢量地址是固定的,不能改动。,断点地址,中断服务子程序的入口地址,中断响应,65,程序存储器ROM,0000H:复位后,程序的入口地址(PC=0000H),0023H:串行口中断入口,0003H:外部中断0入口,000BH:定时器0溢出中断入口,0013H:外部中断1入口,001BH:定时器1溢出中断入口,002AH,使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安排的中断服务程序起始地址上去!,66,程序存储器ROM,0000H:复位后,程序的 入口地址(PC=0000H),0023H:串行口中断入口,0003H:外部中断0入口,000BH:定时器0溢出中断入口,0013H:外部中断1入口,001BH:定时器1溢出中断入口,002AH,包含T0中断服务子程序的程序结构: ORG 0000H AJMP MAIN ORG 000BH AJMP INTT0 ORG 0100H MAIN: . . . INTT0:. . RETI END,AJMP MAIN,AJMP INTT0,67,中断处理,中断服务程序从中断子程序入口地址开始执行,直到返回指令RETI为止,这个过程称为中断处理(或中断服务)。 中断服务子程序一般包括两部分内容,一是保护和恢复现场,二是处理中断源的请求。,入口地址,RETI,68,中断处理,INTT0: PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中断源服务 POP PSW POP DPL POP DPH POP ACC RETI,保护现场,恢复现场,69,中断返回是指中断服务完后,计算机返回到原来暂停的位置(即断点),继续执行原来的程序。 中断返回由专门的中断返回指令RETI来实现。,中断返回,70,RETI指令功能:把断点地址取出,送回到程序计数器PC中去。另外,它还通知中断系统已完成中断处理,将清除优先级状态触发器。 特别注意:不能用RET指令代替RETI指令!,中断返回,71,中断源发中断请求,中断响应条件 是否满足?,中断是否受阻?,把PC断点地址压入堆栈,相应中断源的中断入口地址送入PC,转向中断服务程序,N,Y,Y,N,由硬件 自动完成,中断处理过程示意图,72,关中断,保护现场,中断服务,开中断,关中断,恢复现场,开中断,中断返回,断点地址由堆栈弹入PC,中断服务程序,73,CPU响应某中断请求后,在中断返回前,应该撤除该中断请求,否则会引起另一次中断。 定时器0或1溢出:CPU在响应中断后,硬件清除了有关的中断请求标志TFO或TF1,即中断请求是自动撤除的。 边沿激活的外部中断:CPU在响应中断后,也是用硬件自动清除有关的中断请求标志IE0或IE1。 串行口中断:CPU响应中断后,没有用硬件清除T1、R1,故这些中断不能自动撤除,而要靠软件来清除相应的标志。,中断请求的撤除,74,电平触发外部中断撤除方法较复杂。 因为在电平触发方式中,CPU响应中断时不会自动清除IE1或IE0标志,所以在响应中断后应立即撤除INT0或INT1引脚上的低电平。 在硬件上,CPU对INT0和INT1引脚的信号不能控制,所以这个问题要通过硬件,再配合软件来解决。,电平激活的外部中断源中断标志的撤除,75,单片机仅有两个外部中断输入端. 可用两种方法扩展: 1. 定时器T0,T1。(工作在计数方式下) 2. 中断和查询结合。,外部中断源的扩展,76,1用定时器作外部中断源 例 将定时器T0扩展为外部中断源。,解:将定时器T0设定为方式2(自动恢复计数初值),TH0和TF0的初值均设置为FFH,允许T0中断,CPU开放中断,源程序如下: MOV TMOD,#06H MOV TH0,#0FFH MOV TL0,#0FFH SETB TR0 SETB ET0 SETB EA T0引脚每输入一个负跳变,TF0都会置1,向CPU请求中断 T0脚相当于边沿触发的外部中断源输入线。,77,2中断和查询相结合,图: 一个外中断扩展成多个外中断的原理图,78,中断服务程序如下:,ORG 0003H ;外部中断0入口 AJMP INT0 ;转向中断服务程序入口 INT0: PUSH PSW ;保护现场 PUSH ACC JB P1.0,EXT0 ;中断源查询并转相应中断服务程序 JB P1.1,EXT1 JB P1.2,EXT2 JB P1.3,EXT3 EXIT: POP ACC ;恢复现场 POP PSW RETI,79, EXT0: ; EXINT0中断服务程序 AJMP EXIT EXT1: ; EXINT1中断服务程序 AJMP EXIT EXT2: ;EXINT2中断服务程序 AJMP EXIT EXT3: ;EXINT3中断服务程序 AJMP EXIT 同样,外部中断1也可作相应的扩展。,80,中断的处理即为用户根据自己的需要编写的中断服务程序,在编写时应该注意: 中断现场保护和恢复 中断的现场保护主要是在中断时刻单片机的存储单元中的数据和状态的存储。中断的恢复是恢复单片机在被中断前存储单元中的数据和状态。 开中断和关中断 对于一个不允许在执行中断服务程序时被打扰的重要中断,可以在进入中断时关闭中断系统,在执行完后,再开放中断系统。,中断的处理,81,中断返回是在中断服务程序的最后一句指令“RETI”执行时进行的。它的主要功能是:中断响应时压入堆栈的程序计数器“PC”的值从堆栈中取出,重新赋予“PC”,使程序重新执行被中断前的程序。,中断返回,82,MCS-51单片机具有两个外中断源: INT0:外中断0 中断入口地址:0003H 中断允许控制位:EX0 中断请求标志:IE0 中断触发方式选择位:IT0 优先级设置位:PX0 INT1:外中断1 中断入口地址:0013H 中断允许控制位:EX1 中断请求标志:IE1 中断触发方式选择位:IT1 优先级设置位:PX1,初始化时设置,初始化时设置,MCS-51单片机的外中断,83,外中断的初始化内容 设定中断的优先级(在大部分情况下,可以使用默认方式) 设定中断的触发方式 开中断允许 开总中断允许,外中断的初始化,84,方法1 CLR PX0 ;设定外中断0为低优先级 SETB IT0 ;设定外中断0为边沿触发方式 SETB EX0 ;开放外中断0允许 SETB EA ;开CPU中断允许 方法2 MOV IP, #00H ;设定外中断0为低优先级 MOV TCON,#01H ;设定外中断0为边沿触发方式 MOV IE, #81H ;开外中断0和CPU中断允许,外中断的初始化,85,在如图所示的电路中,用P1口输出控制的8只发光二极管,实现8位二进制计数器,对INT0上出现的脉冲进行计数。,脉冲产生电路,显示电路,外中断应用举例1,86,在该电路中,有两个与非门构成硬件去抖动电路,开关S每动作一次,在单片机的INT0引脚上就会收到一个脉冲信号。 如果把外中断0设定为脉冲触发方式,则每当S动作一次,则外中断触发一次 在外中断的中断服务程序中计数,并把计数的结果从P1口输出。,问题分析,87,ORG 0000H AJMP MAIN ;转主程序 ORG 0003H ;外中断入口地址 AJMP SER ;中断服务程序 ORG 0500H MAIN:SETB IT0 ;设定外中断0为边沿触发 SETB EX0 ;开外中断0允许 SETB EA ;开CPU中断允许 CLR A ;计数单元清0 MOV P1, A ;清显示 HERE:SJMP HERE ;等待中断 SER:INC A ;计数单元加1 MO

温馨提示

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

评论

0/150

提交评论