您好,欢迎访问三七文档
单片机原理及接口技术15.中断、定时器、串行口6.1中断6.1.1概述中断矢量(入口地址)中断服务程序RETI主程序中断返回中断响应中断源提出中断请求CPU暂停现行程序的运行而转为意外事件或特殊请求服务的过程叫做中断。CPU中止当前程序的执行,而去执行相应的处理程序,待处理结束后,再回来继续执行被中止了的原程序。引发中断的原因或向CPU发出中断请求的来源称为中断源。①子程序通过调用指令调用,其调用时刻由程序员安排。中断系统调用中断服务程序是为了响应中断源发出的中断请求。中断请求的发生是随机的。②子程序入口地址(存放位置)是由程序员安排。中断服务程序入口地址是由中断系统规定,固定不变的。中断系统响应中断请求后,硬件自动转入中断矢量处执行中断服务程序。③子程序返回指令RET,中断服务程序返回指令RETI③子程序返回指令RET,中断服务程序返回指令RETI因此,中断系统响应中断请求相当于硬件调用为这个请求而服务的“子程序”。单片机原理及接口技术25.中断、定时器、串行口6.1.38051中断控制一、8051有3类共5个中断源外部中断源2个:外部中断0、外部中断1,它们的中断请求信号分别由引脚(P3.2)和(P3.3)从外部引入。外部中断请求有两种触发方式:电平方式(1机器周期低电平)和脉冲方式(1机器周期高电平1机器周期低电平)。定时/计数中断源2个:定时器T0和定时器T1的中断请求在计数器发生计数溢出时从内部产生。串行中断源1个:发送或接收中断请求TI(SCON.1)或RI(SCON.0)。当串行口发送或接收一帧数据时,内部产生中断请求。单片机原理及接口技术35.中断、定时器、串行口有中断请求信号时会使相应的中断请求标志位硬件置位,CPU会根据所有中断请求标志位状态决定是否响应中断。一旦某个中断请求得到响应,CPU必须把相应的中断请求标志位复位(清0);否则CPU就会因为中断请求标志位未能得到及时撤除而重复响应同一中断请求,这是绝对不能容许的。二、中断请求标志与请求方式控制外部中断请求标志位IE0,IE1:中断方式硬置硬清定时器溢出中断请求标志位TF0,TF1:中断方式硬置硬清单片机原理及接口技术45.中断、定时器、串行口定时器/计数器控制寄存器TCON(TimerControl)例、设置外部中断1为脉冲触发方式。解:通过对TCON中的外部中断1触发控制位IT1的操作实现,因为TCON可以位寻址,使用简单的位操作指令SETBIT1;外部中断1选择脉冲触发方式单片机原理及接口技术55.中断、定时器、串行口三、中断允许控制串联式两级中断允许控制来实现对5个中断源的开放或者屏蔽管理。源允许:分别对应5个中断源的开放或者屏蔽EX0、EX1、ET0、ET1、ES。总允许:对所有中断源的开放或者屏敝EA若允许CPU响应某一个中断源的中断请求,必须使CPU开放此中断源的源允许、同时还要开放总允许,实现两级开放;如果禁止CPU响应所有中断即屏蔽所有中断,控制总允许EA。单片机原理及接口技术65.中断、定时器、串行口EAESET1EX1ET0EX0AFHAEHADHACHABHAAHA9HA8HIE(0A8H)中断允许控制寄存器IE(InterruptEnable)相关各位是1:允许0:屏蔽(禁止);缺省状态为0,即禁止所有中断。例、设置中断系统开放T0定时中断和T1定时中断。解:1)位操作SETBET0;T0溢出中断源允许SETBET1;外部中断1源允许SETBEA;中断总允许2)字节操作MOVIE,#10001010B单片机原理及接口技术75.中断、定时器、串行口具有两个中断优先级:低优先级和高优先级设置PX0、PX1、PT0、PT1和PS,实现优先级设定。不同级的中断源同时申请中断时——先高后低处理低级中断又收到高级中断请求时——停低转高处理高级中断又收到低级中断请求时——高不理低同级的中断源同时申请中断时——自然优先级顺序RXTXTINTTINT/1100四、中断优先级控制单片机原理及接口技术85.中断、定时器、串行口PSPT1PX1PT0PX0BFHBEHBDHBCHBBHBAHB9HB8HIP(0B8H)中断优先级控制寄存器IP(InterruptPriority)相关各位是1:高优先级,0:低优先级;缺省状态为0,即均为低优先级中断。同级优先顺序:RXTXTINTTINT/1100例、试分析以下几种中断优先级能否实现?如能实现,应如何设置中断源的中断级别?否则,请简述不能实现的理由能够实现。只需要将T0和T1溢出中断提到高优先级中断SETBPT0;定时器T0溢出中断高优先级SETBPT1;定时器T1溢出中断高优先级1)定时器T0溢出中断,定时器T1溢出中断,外部中断INT0,外部中断INT12)外中断INT0,定时器T1溢出中断,外中断INT1,定时器T0溢出中断不能实现。即使将外中断INT0和T1溢出中断设置为高优先级,但其余3个中断源在低优先级中,同级优先顺序为T0溢出中断级别高于外中断INT1,故无法实现。单片机原理及接口技术95.中断、定时器、串行口8051中断响应CPU在执行完当前指令后,硬件执行一个调用程序,将程序计数器PC的内容压入堆栈,保护断点地址;根据不同的中断源,程序转向相应中断矢量(中断服务程序的入口地址),去执行中断服务程序,直到返回指令“RETI”为止;中断返回指令RETI从堆栈把断点地址弹出,送回到程序计数器PC中去,继续执行原来的程序。中断矢量(入口地址)中断服务程序RETI主程序中断返回中断响应中断源提出中断请求中断响应:响应条件:中断源发出中断请求;中断总允许,中断源允许;其他。单片机原理及接口技术105.中断、定时器、串行口6.1.48051中断程序的设计及应用一、中断初始化程序设计用户在使用中断前需要先通过程序设置相关特殊功能寄存器用来确定:外部中断触发方式、中断允许、中断优先级等,这被称为中断初始化。并设置堆栈指针SP的初值。二、中断服务程序设计1、中断矢量的第一句常为一跳转指令,转移到中断处理程序执行;2、现场保护在中断处理程序的前面,现场恢复必须在中断服务程序的最后阶段,常使用堆栈操作进行,注意先进后出的顺序。因为中断发生的时刻是随机的,中断处理程序中使用到的寄存器或存储器都应尽量进行保护;3、中断处理程序最后一条指令必须是中断返回指令RETI。中断源中断矢量外部中断00003H定时器T0溢出中断000BH外部中断10013H定时器T1溢出中断001BH单片机原理及接口技术115.中断、定时器、串行口5.1.38051中断控制例5-1要使用外部中断0,脉冲触发,高优先级,初始化程序如下:ORG0000HAJMPMAIN;转至主程序执行ORG0003HAJMPEINT0;转至中断服务程序执行ORG0030HMAIN:MOVSP,#60H;建立堆栈指针SETBIT0;设外中断0为脉冲触发方式SETBPX0;设外中断0为高优先级SETBEA;开中断SETBEX0;允许外中断0中断……ORG0100HEINT0:…………RETIEND单片机原理及接口技术125.中断、定时器、串行口6.2定时器/计数器6.2.1概述一、定时器/计数器的基本功能脉冲信号计数。+1+1+1+1脉冲信号源具有固定周期,用作定时器。定时时间=脉冲个数×脉冲周期检测脉冲个数,用作计数器。51单片机的定时/计数器2个16位的加1计数器:TL0(8AH)TL1(8BH)TH0(8CH)TH1(8DH)SFR区T1=TH1+TL1T0=TH0+TL0①计数器:外部脉冲信号状态采样(每1机器周期1次)计数。②定时器:时钟脉冲的12分频。脉冲周期=foscfosc12121/=机器周期T0(P3.4)T1(P3.5)注意:外部信号频率24fosc引脚:单片机原理及接口技术135.中断、定时器、串行口工作方式和计数器溢出计数器计数位数不同,即不同的工作方式。0000000000000000TH0TL016位计数器000000008位计数器TL0计数初值;计数器起始计数值0000000000000001000000011;启动计数0000000000000010000000102000000001111111111111111255000000010000000000000000256计数器溢出,TF0=1000000010000000100000001257111111111111111165535000000000000000065536计数器溢出,TF0=1计数器溢出:计数器由全1向全0变化时(达到计数最大值)称为溢出,同时溢出标志位(TFi)置位。最大计数个数=2n最长定时时间=2n×机器周期单片机原理及接口技术145.中断、定时器、串行口计数器初值和重装①为实现不同定时/计数要求,在启动计数前,计数器必须装载不同的初值。计数个数xn2设X为计数器初值定时时间foscxn122)(②完成连续的定时/计数要求时,每次计数前都要重装满足此次计数要求的初值。500us定时500us定时500us初值启动重装500us初值溢出500us定时重装500us初值溢出500us定时250us500us初值启动重装250us初值溢出500us定时重装500us初值溢出250us重装250us初值溢出500us定时重装500us初值溢出单片机原理及接口技术155.中断、定时器、串行口5.2.2定时/计数器硬件结构1、定时\计数器选择2、启动控制3、工作方式设定T/C=0定时器,信号源时钟脉冲的12分频。对机器周期进行计数。T/C=1计数器,由引脚T0、T1输入的片外脉冲信号源=)(TR0P3.2GATE01停止T0计数启动T0计数门控位GATE=0时,TR0直接控制计数器启停,内部(软件)启动。门控位GATE=1时,计数器启停受引脚P3.2TR0控制,外部(软硬件协同)启动。·M1M000:方式001:方式110:方式211:方式3单片机原理及接口技术165.中断、定时器、串行口GATE=0,=0,M1M0=01T/C5.2.3定时/计数器的SFR1、计数器T0、T1TL0(8AH)TL1(8BH)TH0(8CH)TH1(8DH)SFR区T1=TH1+TL1T0=TH0+TL0例、给16位计数器T0赋计数初值785。解:785=0311H,使用数据传送指令把高字节03H装入TH0,低字节11H装入TL0MOVTH0,#03HMOVTL0,#11H2、定时/计数器工作方式控制寄存器TMOD(TimerMode)GATEC/TM1M0GATEC/TM1M0TMOD(89H)T1T0例、设定T0为定时器工作方式1工作,启动不受外部引脚控制。T1没有要求使用,采用缺省值0000MOVTMOD,#00000001B或者MOVTMOD,#01H例、设定T1为定时器工作方式2工作,启动受外部引脚控制。MOVTMOD,#10100000B或者MOVTMOD,#0A0H单片机原理及接口技术175.中断、定时器、串行口5.2.3定时/计数器的SFR3、定时/计数器控制寄存器TCON(TimerControl)TF1TR1TF0TR0IE1IT1IT0IE08FH8EH8DH8CH8BH8AH89H88HTCON(88H)例、已知TMOD=00H,如何启动和停止T0、T1计数?GATE=0,T0、T1启停不受外部引脚状态影响而是通过指令控制TR0、TR1的位状态来实现。SETBTR0;启动T0计数SETBTR1;启动T1计数CLRTR0;停止T0计数CLRTR1;停止T1计数定时器溢出中断请求标志位TF0,TF1:中断方式硬置硬清定时器运行控制位TR0,TR1=)(TR0P3.2GATE01停止T0计数启动T0计数=)(TR1P3.3GATE01停止T1计数启动T1计数单片机原理及接口技术185.中断、定时器、串行口方式1——手工重装初值的16位计数器5.2.2定时器/计数器的工作方式当M1M0为01时,计
本文标题:第五章中断
链接地址:https://www.777doc.com/doc-3124153 .html