《定时中断系统.ppt》由会员分享,可在线阅读,更多相关《定时中断系统.ppt(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、w定时器及其应用中断源和中断标志w单片机的中断系统定定时时器器/中中断断系系统统 本章内容本章内容定时器定时器/计数器计数器返回 本章内容:5.1 定时/计数器的结构与工作原理 5.2 定时/计数器的方式寄存器和控制寄存器 5.3 定时/计数器的4种工作方式 5.4 定时器应用举例CPU TCON(88H)TMOD(89H)TH1TL17700(8DH)(8BH)定时器T1TH0TL07700(8CH)(8AH)定时器T0内部总线溢出溢出启动启动工作方式工作方式T0(P3.4)T0(P3.5)中断返回INT1(P3.3)INT0(P3.2)指令周期指令周期机器周期机器周期1 1机器周期机器周期
2、2 2取取指令、译码指令、译码取操作数、执行取操作数、执行三个周期的关系图三个周期的关系图返回(状态周期状态周期)S1S2S3S4S5S6 S1S2S3S4S5S6时钟周期时钟周期定时器的定时器的CLKCLK脉冲脉冲返回S1机器周期机器周期1 1机器周期机器周期2 2状态周期状态周期 S1S2S3S4S5S6S2S3S4S5S6机器周期机器周期1 1机器周期机器周期2 2机器周期机器周期3 3 T0(T1)振荡脉冲检测到高电平检测到低电平新的计数值装回计数器返回(状态周期状态周期)S1S2S3S4S5S6 S1S2S3S4S5S6 S1S2S3S4S5S6时钟周期时钟周期定时定时/计数器的方式
3、寄存器和控制寄存器计数器的方式寄存器和控制寄存器 由于定时/计数器是可编程部件,所以在它工作之前,需要将一些命令(控制字)写入其中,也就是要将工作方式控制字写入方式寄存器(TMOD)中,将工作状态控制字写入控制寄存器(TCON)中,这一过程称为定时/计数器的初始化。下面作具体介绍:定时/计数器方式寄存器TMOD 定时器控制寄存器TCON 定时/计数器的初始化 返回定时定时/计数器方式寄存器计数器方式寄存器TMODTMODCPU TCON(88H)TMOD(89H)TH1TL17700(8DH)(8BH)定时器T1TH0TL07700(8CH)(8AH)定时器T0内部总线溢出溢出启动启动工作方式
4、工作方式T0(P3.4)T1(P3.5)中断INT1(P3.3)INT0(P3.2)GATE C/TM1 M0 GATE C/TM1 M0D7D6D5D4D3D2D1D0定时器1定时器0(89H)定时器控制寄存器定时器控制寄存器TCONTCONCPU TCON(88H)TMOD(89H)TH1TL17700(8DH)(8BH)定时器T1TH0TL07700(8CH)(8AH)定时器T0内部总线溢出溢出启动启动工作方式工作方式T0(P3.4)T0(P3.5)中断INT1(P3.3)INT0(P3.2)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT08FH8EH 8DH 8CH 8B
5、H 8AH 89H88H(88H)具体方法:对于不同的工作方式,计数器位数不同,故最大计数值M也不同:方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定时器0分为2个8位计数器,每个M均为256。因为定时/计数器是作加1计数,并在计满溢出时产生中 断,因此初值X的计算如下:X=M 计数值 TF1 TH1 TL1 12分频OSC中断控制+T1(P3.5)TR1GATEINT1(P3.3)C/T=0C/T=1返回oscillation返回 0 TH0 TL0 12分频OSC中断8位8位控制+T0(P3.4)TR0GATEINT0(P3.2)C/T=0
6、C/T=1 溢出 1TF0返回TF0 TL0 12分频OSC中断8位控制+T0(P3.4)TR0GATEINT0(P3.2)C/T=0C/T=11/12foscTF1 TH0中断8位控制TR1T0T0方式方式3 3结构结构定时定时/计数器的初始化计数器的初始化 定时/计数器初始化就是它运行前的一些准备工作。具体如下:(1)确定工作方式对TMOD赋值。(2)预置定时或计数的初值将初值直接写入 TH0、TL0或TH1、TL1。(3)根据需要开放定时/计数器的中断对IE位赋 值。(4)启动定时/计数器工作若用软件启动,则可 将TR0或TR1置1;若用外中断引脚电平启动,则需给外中断引脚启动电平。在满
7、足了启动要 求后,就可按规定的工作方式和初值条件开始 计数和定时。定时器应用举例返回6 定时器是单片机应用系统中的重要部件,利用它可简化程序设计、简化外围电路和减轻CPU负担。以下是应用举例:方式0、方式1的应用 方式2的应用方式方式2 2的应用的应用 例1:用定时器1方式2计数,要求每计满100次,P1.0端取反。解:外部计数信号由T1(P3.5)脚引入,每下跳变一次计数器加1,由程序查询TF1。方式2具有自动重装功能,初始化后不需再置初值。初值x=28100=156=9CH TH1=TL1=9CH,TMOD=60HGATE C/TM1 M0 GATE C/TM1 M0 0 1 1 0 0
8、0 0 0源程序:MOV TMOD,#60H ;设置T1为方式2计数 MOV TH1,#9CH ;赋初值 MOV TL1,#9CH SETB TR1 ;启动 DEL:JBC TF1,REP ;查询计数溢出 AJMP DEL REP:CPL P1.0 ;输出 AJMP DEL 例2:用定时器T1定时,使P1.2端电平每隔1min变反一次,晶振为12MHZ。解:在方式1下,最大的定时时间为 Tmax=65536 S=65.536ms 显然,这不能满足题意要求,因而需要另设两个软件计数器,为此我们用片内50H、51H单元分别用于进行秒、分的 计数。这里,我们只要求T1定时50ms,此时T1的初始值x
9、为:(Mx)1=50103 S 即 (216x)=50103 S x=65536 50000=15536=3CB0H 可知:TH1=3CH,TL1=0B0H方式方式1 1的应用的应用返回源程序:MOV 50H,#20 ;计50ms共20次 MOV 51H,#60 ;计秒60次 MOV TMOD,#10H ;设定时器1为方式1 MOV TH1,#3CH ;给T1赋初值 MOV TL1,#0B0H SETB TR1 ;启动T1 L2:JBC TF1,L1 ;查询计数溢出 SJMP L2 L1:MOV TH1,#3CH MOV TL1,#0B0H DJNZ 50H,L2 ;未到1s,继续循环 MOV
10、 50H,#20 DJNZ 51H,L2 ;未到1min继续循环 MOV 51H,#60 CPL P1.2 ;1min到P1.2端取反 SJMP L2 ;反复循环 例3:选用T1方式0用于定时,在P1.1输出周期为1ms的方波,晶振fosc=6MHZ。解:根据题意,只要使P1.1每隔500 S取反一次即可得周期为1ms的方波输出,因而T1的定时时间为500 S,显然取方式0即可,故可取M1M0=00;因是定时器方式,所以C/T=0;用软件启动T1工作,所以GATE=0。T0不用,故可任意(但不能为方式3),一般取0。故TMOD=00H。系统复位后TMOD为00H。T1初值的计算:机器周期T=1
11、2/6106 S=2 S方式方式0 0的应用的应用 设初始值为x,则:(213x)2=500即 (8192x)2=500 x=8192250=7942=1111100000110B =1F06H 因为方式0采用的是13位计数器,其中TL1的高3位未用,可任意填写(必须填写),这里填写000,所以,x可写为:x=1111100000000110B=F806H 得:TH1=F8H,TL1=06H源程序:ORG 2000H MOV TL1,#06H ;给TL1置初值 MOV TH1,#0F8H ;给TH1置初值 SETB TR1 ;启动T1 LP1:JBC TF1,LP2 ;查询计数溢出否 AJMP
12、 LP1 ;LP2:MOV TL1,#06H ;重新设置计数初值 MOV TH1,#0F8H ;CPL P1.1 ;输出取反 AJMP LP1 ;重复循环 例4:GATE的应用-测量脉冲宽度P3.2(INT0)输入脉冲T=计数值 X 机器周期程序:MOV TMOD,#09H MOV TH0,#00H MOV TL0,#00H SETB TR0 JNB P3.2,$JB P3.2,$CLR TR0 MOV R0,TH0 MOV R1,TL0 例5:由P3.4引脚(T0)输入一低频脉冲信号(其频率0.5kHZ),要求P3.4每发生一次负跳变,P1.0输出一个500 S的同步负脉冲,同时P1.1输出
13、一个1ms的同步正脉冲。已知晶振频率为6MHZ。解:按题意,有以下几种波形:P3.4P1.1 1ms定时方式 1ms定时方式计数方式计数方式初值FFHP1.0500 S 500 S 初态P1.0输出高电平(系统复位时实现),P1.1输出低电平(由程序实现),T0选方式2计数器工作方式(初值为FFH)。当加在P3.4上的外部脉冲负跳变,则使T0加1计数器溢出,程序查询到TF0为1时,改变T0为500 S 定时器工作方式,并且P1.0输出0,P1.1输出1。T0第一次计数溢出后,P1.0恢复0,T0第二次计数溢出后,P1.1恢复0,T0恢复外部计数。设定时500 S 的初值为x,则 (256x)2
14、=500 x=6对于6MHZ的晶振频率,每次加一操作需2 S 源程序:BEGIN:MOV TMOD,#06H ;设T0为方式2,外部计数 MOV TH0,#0FFH ;计数值为01即溢出 MOV TL0,#0FFH ;CLR P1.1 ;P1.1初值为0 SETB TR0 ;启动计数器 DEL1:JBC TF0,RESP1 ;检测外跳变信号 AJMP DEL1 ;RESP1:CLR TR0 MOV TMOD,#02H ;重置T0为500 S定时 MOV TH0,#06H ;重置定时初值 MOV TL0,#06H SETB P1.1 ;P1.1置1返回 CLR P1.0 ;清P1.0 SETB
15、TR0 ;启动定时器 DEL2:JBC TF0,RESP2 ;检测第一次500 S到否 AJMP DEL2 RESP2:SETB P1.0 ;P1.0恢复1 DEL3:JBC TF0,RESP3 ;检测第二次500 S到否 AJMP DEL3 PESP3:CLR P1.1 ;P1.1取反 CLR TR0 AJMP BEGIN ;循环 5.1.3 定时定时/计数器的编程和应用计数器的编程和应用 定时/计数器是单片机应用系统中的重要部件,通过下面实例可以看出,灵活应用定时/计数器可提高编程技巧,减轻CPU的负担,简化外围电路。例5.4 用单片机定时器/计数器设计一个秒表,由P1口连接的LED采用B
16、CD码显示,发光二极管亮表示0,暗表示1。计满60 s后从头开始,依次循环。解:定时器0工作于定时方式1,产生1 s的定时,程序类似于实训5步骤1),这里不再重复。定时器1工作在方式2,当1 s时间到时,由软件复位T1(P3.5)脚,产生负跳变,再由定时器1进行计数,计满60次(1分种)溢出,再重新开始计数。按上述设计思路可知:方式寄存器TMOD的控制字应为61H;定时器1的初值应为:256 60=196=C4H 其源程序可设计如下:ORG0000HMOV TMOD,#61H;定时器0以方式1定时,定时器T1以方式2计数MOV TH1,#0C4H ;定时器1置初值MOV TL1,#0C4HSE
17、TB TR1;启动定时器1DISP:MOV A,#00H ;计数显示初始化 MOV P1,A CONT:ACALLDELAY CLR P3.5 ;T1引脚产生负跳变 NOP NOP SETB P3.5 ;T1引脚恢复高电平 INCA ;累加器加1 DA A ;将16进制数转换成BCD数 MOVP1,A ;点亮发光二极管 JBCTF1,DISP;查询定时器1计数溢出 SJMPCONT ;60 s不到继续计数 DELAY:MOV R3,#14H ;置50 ms计数循环初值 MOV TH0,#3CH ;置定时器初值 MOV TL0,#0B0H SETB TR0;启动定时器0 LP1:JBC TF0,
18、LP2 ;查询计数溢出 SJMPLP1;未到50 ms继续计数 LP2:MOV TH0,#3CH ;重新置定时器初值 MOV TL0,#0B0H DJNZ R3,LP1;未到1 s继续循环 RET;返回主程序 END 1.中断的基本概念2.MCS-51的中断系统3.中断源和中断标志4.中断的允许和优先权5.中断的处理过程6.外部中断源的扩展7.中断的应用中中断断系系统统 本章内容本章内容中断的基本概念日常生活中断的例子单片机中的中断概念中断技术的优点 日常中断的例子日常中断的例子返回 你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。计算机中的中断概
19、念计算机中的中断概念返回中断中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。将能引起中断的事件称为中断源中断源。CPU现行运行的程序称为主程序主程序。处理随机事件的程序称为中断服务中断服务子程序子程序。中断过程动画演示 中断技术的优点中断技术的优点分时操作分时操作 CPU可以同多个外设“同时”工作实时处理实时处理 CPU及时处理随机事件故障处理故障处理 电源掉电、存储出错、运算溢出 MCS-51中断系统中断源中断源中断标志中断标志中断允许中断允许中断优先级中断优先级MCS-51MCS-51中断系统结构中断系统
20、结构中断寄存器中断寄存器 MCS-51MCS-51的中断系统的中断系统中断源中断源8051单片机有5个个中断请求源:单片机单片机INT0或 外部输入中断源INT0(P3.2)INT1或 外部输入中断源INT1(P3.3)T0 片内定时器T0的溢出T1 片内定时器T1的溢出串行口 片内串行口发送或接收中断源 MCS-51MCS-51的中断系统的中断系统中断标志中断标志CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断源中断标志位中断标志位 每一个中断源都有相应的中断标志位;某一个中断源申请中断,相应中断标志位置1。MCS-51MCS-51的中断系统的中断系统中断允
21、许中断允许CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断源中断标志位中断标志位 EA总中断允许位,总中断允许位,EA=1开放所有中断,开放所有中断,EA=0,禁止所有中断;禁止所有中断;某一个中断源还有相应的中断允许位,某一个中断源还有相应的中断允许位,1允许相应中断源的中断,允许相应中断源的中断,0禁禁止相应中断源的中断。止相应中断源的中断。中断允许中断允许ESET0EX0EX1ET1EA MCS-51MCS-51的中断系统的中断系统中断优先级中断优先级CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TISI中断源中断源中断标志位中断标志位
22、 单片机中有两个中断优先级,即高高优先级中断和低低优先级中断,前者优先权高于后者(在程序中设置,相应位在程序中设置,相应位=1=1,为高优先级,为高优先级);同一优先级别的中断源按照自然优先级自然优先级顺序确定优先级别(硬件硬件形成,无法改变形成,无法改变)。中断允许中断允许ESET0EX0EX1ET1EA自然优先级自然优先级高低优先控制优先控制PSPT0PX0PX1PT1 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自自然然优优先先级级矢量地址高高级级中中断断请请求求自自
23、然然优优先先级级矢量地址低低级级中中断断请请求求PX0PT0PX1PT1PSIEIP MCS-51 MCS-51的中断系统结构图的中断系统结构图中断标志位中断源允许总允许中断优先级TCON寄存器T0和T1控制寄存器 TF1 TF0 IE1 IT1 IE0 IT0TCONT1溢出中断标志溢出中断标志(TCON.7):T1启动计数后,计满溢出由硬件置位TF1=1,向CPU请求中断,此标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。76543210 TF1 TF0 IE1 IT1 IE0 IT0TCON 88H外部中断外部中断INT1中断标志中断标志位位(TCO
24、N.3):IE11,外部中断1向CPU申请中断 外部中断外部中断INT1触发方触发方式控制位式控制位(TCON.2):IT1=0,电平触发方式 IT1=1,下降沿触发方式76543210TCON寄存器T0和T1控制寄存器注意:该寄存器可以位寻址。返回 TI(SCON.1)串行发送中断标志。RI(SCON.0)串行接收中断标志。TI RISCON寄存器串行口控制寄存器SCON 98H76543210注意:该寄存器可以位寻址。IE寄存器中断允许寄存器 IE A8H EA ESET1EX1 ET0EX0例:允许定时器T0中断:SETB EA SETB ET0 或 MOV IE,#82H7654321
25、0注意:该寄存器可以位寻址。51单片机有两个中断优先级单片机有两个中断优先级高级和低级高级和低级 专用寄存器专用寄存器IP为中断优先级寄存器,用户可用软件设定为中断优先级寄存器,用户可用软件设定 相应位为相应位为1,对应的中断源被设置为,对应的中断源被设置为高优先级高优先级,相应位为,相应位为0,对应,对应的中断源被设置为低优先级的中断源被设置为低优先级 系统复位时,均为低优先级系统复位时,均为低优先级 该寄存器可以位寻址该寄存器可以位寻址 PSPT1PX1PT0PX0IP寄存器中断优先级寄存器 IP B8H 76543210中断处理过程 中断处理过程分为三个阶段:中断响应、中断处理和中断返回
26、。中断响应 中断处理(又称中断服务)中断返回 中断请求的撤除中断请求的撤除 中断响应中断返回中断响应中断响应:在满足CPU的中断响应条件之后,CPU对中断源中断请求予以处理。中断响应过程:保护断点地址;中断响应 把程序转向中断服务程序的入口地址(通常称矢量地址)。特别注意:这些工作是硬件自动完成的!断点地址中断服务子程序的入口地址中断响应中断服务子程序入口地址又称为中断矢量或中断向量。中断响应单片机中5个中断源的矢量地址是固定固定的,不能改动。断点地址中断服务子程序的入口地址程序存储器程序存储器ROMROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003
27、H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口002AH使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安排的中断服务程序起始地址上去!程序存储器程序存储器ROMROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口002AH包含T0中断服务子程序的程序结构:ORG 0000HORG 0000HAJMP MAINORG 000BHORG 000BHAJMP INTT0ORG
28、 0100HORG 0100HMAIN:.INTT0:.RETI ENDAJMP MAINAJMP INTT0中断处理中断处理中断服务程序从入口地址入口地址开始执行,直到返回指令RETI为止,这个过程称为中断处理(或中断服务)。中断服务子程序一般包括两部分内容,一是保护和恢复现场,二是处理中断源的请求。中断响应入口地址入口地址RETI中断处理中断处理INTT0:PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中断源服务 POP PSW POP DPL POP DPH POP ACC RETI保护现场恢复现场中断返回 中断返回是指中断服务完后,计算机返回到原来暂停的位置(
29、即断点),继续执行原来的程序。中断返回由专门的中断返回指令RETI来实现。中断响应中断返回中断返回 RETI指令功能:把断点地断点地址取出,送回到程序计数器址取出,送回到程序计数器PC中去。另外,它还通知中断系统已完成中断处理,将清除优先级状态触发器。特别注意:不能用RET指令代替RETI指令!中断响应中断返回中断处理过程示意图中断源发中断请求中断源发中断请求中断响应条件中断响应条件 是否满足?是否满足?中断是否受阻?中断是否受阻?把把PC断点地址压入堆栈断点地址压入堆栈 相应中断源的中断入口地址相应中断源的中断入口地址送入送入PC,转向中断服务程序转向中断服务程序NYYN 由硬件自动完成 关
30、中断关中断保护现场保护现场中断服务中断服务 开中断开中断 关中断关中断恢复现场恢复现场 开中断开中断中断返回中断返回断点地址由堆栈弹入断点地址由堆栈弹入PC保护现场和恢复现场的过程中不允许中断,以免现场遭到破坏。保护和恢复现场之后的开中断是为了允许有更高级中断打断此中断服务程序。中断服务程序硬件自动完成中断应用实例设计一个交通灯模拟系统,正常通行情况下,两个方向轮流通过时间为1分钟,当紧急情况下,两个方向均为红灯,时间为2分钟,然后返回正常状态。示意图如下:P1.0P1.1P1.2P1.35V5V红红绿绿5V方向A方向BINT0程序结构ORG0000HAJMPMAINORG0003HAJMPJ
31、INJIMAIN:轮流点亮的程序轮流点亮的程序.SJMPMAINJINJI:两路都为红灯的程序两路都为红灯的程序RETI主程序主程序中断子程序中断子程序(按键按下后)按键按下后)交通灯主程序中断初始化中断初始化A向绿灯向绿灯B向红灯向红灯A向绿灯向绿灯B向红灯向红灯延时延时1分钟分钟延时延时1分钟分钟MAIN:MOV IE,#81HSTART:MOV P1,#0FAH MOV R1,#60AGREEN:ACALL DELAY1S DJNZ R1,AGREEN MOV P1,#0F5H MOV R1,#60BGREEN:ACALL DELAY1S DJNZ R1,AGREEN SJMPSTART
32、中断子程序保护现场保护现场A向红灯向红灯B向红灯向红灯恢复现场恢复现场延时延时2分钟分钟返回返回JINJI:CLREAPUSHP1PUSHR1PUSHTH1PUSHTL1SETBEA MOV P1,#0F9H MOV R1,#120ABRED:ACALL DELAY1S DJNZ R1,AGREEN CLREA POPP1 POPR1 POPTH1 POPTL1 SETBEA RETI想一想:程序想一想:程序有问题吗?有问题吗?交通灯中断应用总结本设计包括几断程序?主程序为正常状态的程序中断服务程序(中断子程序)为中断后的程序DELAY1S子程序为上述两段程序中反复调用的一段子程序。编写中断程
33、序应注意哪些?例:在例:在P1.0上产生周期为上产生周期为10ms的方波,设晶振频率的方波,设晶振频率12MHz.(要求分别以查询方式和中断方式设计程序)要求分别以查询方式和中断方式设计程序)查查询询方方式式:ORG 0000H MOV TMOD,#10H MOV TH1,#0CEH MOV TL1,#78H SETB TR1WAIT:JBC TF1,NX SJMP WAIT NX:CPL P1.0 MOV TH1,#0CEH MOV TL1,#78H SJMP WAIT END中中断断方方式式:ORG 0000H MOV TMOD,#10H MOV TH1,#0CEH MOV TL1,#78
34、H MOV IE,#88H SETB TR1WAIT:SJMP WAIT ORG 001BH CPL P1.0 MOV TH1,#0CEH MOV TL1,#78H RETI内内部部中中断断的的应应用用中断请求的撤除中断请求的撤除 CPU响应某中断请求后,在中断返回前,应该撤除该中断请求,否则会引起另一次中断。定时器0或1溢出:CPU在响应中断后,硬件清除了有关的中断请求标志TFO或TF1,即中断请求是自动撤除的中断请求是自动撤除的。边沿激活的外部中断:CPU在响应中断后,也是用硬件自动用硬件自动清除清除有关的中断请求标志IE0或IE1。串行口中断:CPU响应中断后,没有用硬件清除T1、R1,
35、故这些中断不能自动撤除,而要靠软件来清除相应的标志要靠软件来清除相应的标志。电平触发外部中断撤除方法较复杂。因为在电平触发方式中,CPU响应中断时不会自动清除IE1或IE0标志,所以在响应中断后应立即撤除INT0或INT1引脚上的低电平。在硬件上,CPU对INT0和INT1引脚的信号不能控制,所以这个问题要通过硬件,再配合软件来解决。电平激活的外部中断源中断标志的撤除电平激活的外部中断源中断标志的撤除外部中断源的扩展单片机仅有两个外部中断输入端.可用两种方法扩展:1.定时器T0,T1。(工作在计数方式下)2.中断和查询结合。1用定时器作外部中断源 例例5.5 将定时器T0扩展为外部中断源。解解
36、:将定时器T0设定为方式2(自动恢复计数初值),TH0和TF0的初值均设置为FFH,允许T0中断,CPU开放中断,源程序如下:MOVTMOD,#06H MOVTH0,#0FFHMOVTL0,#0FFHSETBTR0SETBET0SETBEA T0引脚每输入一个负跳变,TF0都会置1,向CPU请求中断 T0脚相当于边沿触发的外部中断源输入线。脚相当于边沿触发的外部中断源输入线。2中断和查询相结合图:一个外中断扩展成多个外中断的原理图中断服务程序如下:中断服务程序如下:ORG0003H;外部中断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 RETIEXT0:;EXINT0中断服务程序 AJMPEXITEXT1:;EXINT1中断服务程序 AJMPEXITEXT2:;EXINT2中断服务程序AJMPEXITEXT3:;EXINT3中断服务程序 AJMP EXIT 同样,外部中断同样,外部中断1也可作相应的扩展。也可作相应的扩展。中断系统的应用实例:交通信号等。使用技术:定时、中断、中断嵌套。