C51单片微机的中断系统原理及应用.ppt

上传人:牧羊曲112 文档编号:5416998 上传时间:2023-07-05 格式:PPT 页数:54 大小:720.50KB
返回 下载 相关 举报
C51单片微机的中断系统原理及应用.ppt_第1页
第1页 / 共54页
C51单片微机的中断系统原理及应用.ppt_第2页
第2页 / 共54页
C51单片微机的中断系统原理及应用.ppt_第3页
第3页 / 共54页
C51单片微机的中断系统原理及应用.ppt_第4页
第4页 / 共54页
C51单片微机的中断系统原理及应用.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《C51单片微机的中断系统原理及应用.ppt》由会员分享,可在线阅读,更多相关《C51单片微机的中断系统原理及应用.ppt(54页珍藏版)》请在三一办公上搜索。

1、51单片机IO端口操作的一个有趣现象:我想实现P1.1端口跟随P1.4端口同步输出,都是驱动LED,P1.4端口使用定时器定时翻转,主循环程序随时判断P1.4状态,同步驱动P1.1。程序如下:,看来没问题,可是下载到单片机中,只见OUT闪烁,LED根本不动,奇怪?,FLAG BIT 00H,CPL FLAGMOV C,FLAGMOV OUT,C,MOV C,FLAG,第五章 80C51单片微机的中断系统原理及应用,中断系统概述 80C51的中断系统 中断的控制 中断的响应过程和响应时间 外部中断源的扩展 中断服务程序的设计,中断的基本概念 80C51中断源 中断控制寄存器 中断处理过程 中断优

2、先控制和中断嵌套 中断系统的应用,要点:,中断系统的几个概念:中断如图51所示。中断源:能产生中断的外部和内部事件。中断优先级 中断嵌套,5.1 中断系统概述 单片微机的中断系统需要解决的问题,单片微机的中断系统需要解决的问题 CPU能及时响应中断(S5P2查询),处理完后能返回 多个中断源同时申请时,能实现中断优先级的控制 实现中断嵌套,并能逐级正确返回原断点处,5.1 中断系统概述 单片微机的中断系统需要解决的问题,实现CPU与外部设备的速度配合通过中断的方法来协调快速CPU与慢速外部设备之间的工作。实现实时控制依靠中断技术能实现实时控制。实现故障的及时发现及处理中断技术使单片微机就能及时

3、发现故障并自动处理 实现人机联系如通过键盘向单片微机发出中断请求,5.1.2 中断的主要功能,80C51的中断系统包括:中断源中断允许寄存器IE中断优先级寄存器IP中断矢量等。,5.2 80C51 的中断系统,在80C51中,有两级中断优先级。图52,80C51有5个中断源,80C52有6个(增加一个定时器计数器T2)2个外部中断源INT0和INT1:外部设备的中断请求信号、掉电等故障信号都可以从INT0或INT1引脚输入。3个内部中断源:T0、T1、和串行口。,5.2.1 中断源,定时中断(T0、T1)当定时器/计数器T0(T1)发生计数溢出时,标志位TF0(TF1)置1,可以向CPU申请中

4、断。,串行中断当串行口发送/接收完一帧串行数据时,产生一个中断请求。RXD,TXD:串行中断。,矢量中断:就是中断入口地址。矢量地址由硬件直接给出。,5.2.2 中断矢量,表5-1 中断矢量地址,5.3 中断的控制,中断标志,中断系统控制寄存器包括:TCON、IE、SCON、IP,定时器计数器控制寄存器TCON(88H),5.3 中断的控制,串行口控制寄存器SCON:(98H),中断允许寄存器IE:(A8H),5.3.2 中断允许控制,中断优先级寄存器IP(B8H),5.3.3 中断优先级,在同一优先级内有一个由内部查询序列确定的笫二个优先级结构。其排列如下:中断源中断优先级 外部中断0最高

5、定时器T0中断 外部中断1 定时器T1中断 串行口中断 定时器T2中断最低(80C52),IT1、IT00低电平触发 IT1、IT0l下跳变触发中断请求信号高、低电平应至少各保持一个机器周期,才能确保CPU采集到电平的跳变,5.3.4 外部中断触发方式,5.3.5 中断请求的撤除,硬件自动清除:T0、T1中断,INT0、INT1边沿触发方式中断,CPU响应中断后,自动清除中断标志TF0 TF1 IE0 IE1。软件清除:串行口中断,用户应在串行中断服务程序中用指令清除TI或RI。软硬结合的方法:外中断电平触发方式,内部自动清除中断标志,但外部低电平必须消失。,如图54 中断采样中断查询中断响应

6、中断采样:在机器周期的S5P2采样外中断源并置标志,5.4 中断响应过程和响应时间 中断的响应过程,中断查询:在S6时按优先级的顺序查询各中断标志。若有中断标志,则从下一个机器周期的S1状态开始进 行中断响应。,3.中断响应:由硬件自动产生一条LCALL指令,即:LCALL addr16;addr16:中断入口地址,中断结束:中断服务程序由中断矢量地址开始执行,直至遇到RETI为止,中断响应被封锁:,(1)CPU正在执行同级或高一级的中断服务程序,(2)查询中断请求的机器周期不是执行当前指令的最后一个周期,(3)当前正在执行RETI指令或对IE、IP进行操作,5.4.2 中断响应时间,响应时间

7、-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间-3个机器周期外部中断的电平触发为最快,从查询中断请求信号到中断服务程序需要3个机器周期:1个周期(查询)2个周期(长调用LCALL),5.4.2 中断响应时间,(2)最长时间若当前指令是RETI或访问IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,5.5 外部中断源的扩展,5.5.1 采用“OC门”经“线或”后实现,5.5.2 通过片内定时器/计数器来实现,5.5.1 采用“OC门”经“线或”后实现,PINT0:P

8、USH PSW;保护现场 PUSH ACC JB P1.0,LOOP1;转向中断服务程序1 JB P1.l,LOOP2;转向中断服务程序2 JB P1.2,LOOP3;转向中断服务程序3 JB P1.3,LOOP4;转向中断服务程序4INTFH:POP ACC;恢复现场 POP PSW RETI,LOOP1:;中断服务程序1 AJMP INTFHLOOP2:;中断服务程序2 AJMP INTFHLOOP3:;中断服务程序3 AJMP INTFHLOOP4:;中断服务程序4 AJMP INTFH,例 把外部中断请求信号2连到T1引脚上,T1设为方式2,即8位自动重装载方式,时间常数设为满刻度值F

9、FH。ORG0000HAJMPMAINORG001BH;T1中断矢量作外部中断2LJMPINT2ORG0030HMAIN:MOVTMOD,#60H;设T1计数器方式2MOVTL1,#0FFH;置T1计数常数MOVTH1,#0FFHSETBEA;开中断SETBET1;允许计数器1中断SETBTR1;启动计数SJMP$INT2:-;外部中断2服务程序RETI,5.5.2 通过片内定时器/计数器来实现,80C51中断结构有一个重要特性,即执行中断返回指令RETI后,必须至少执行一条其它指令后,才能响应新的中断。典型方法是使用外部中断,并将其设为电平触发方式。硬件上,把按键产生的脉冲连到 INT0,作

10、为外部中断0的中断请求信号,并把电路设计为不按键时为低电平,按一次键产生一个正脉冲。,5.6 80C51的单步操作,外部中断0的中断服务程序,在中断服务程序的末尾为JNB P3.2,$;INT0=0,则等待JB P3.2,$;INT0=1,则等待RETI;中断返回在没有按键时,INT0=0,中断请求有效,响应中断后执行中断服务程序,在执行到JNB P3.2,$指令时等待。当按下单步键后产生一个正脉冲,执行中断返回,再执行一条指令后,由于已为低电平,所以单片微机再次响应中断,并进入中断服务程序等待。,5个中断源,4个特殊功能寄存器TCON/SCON/IE/IP 中断 入口地址 中断请求的允许与禁

11、止。外中断触发方式。优先级别。开中断/关中断。,5.7 中断服务程序的设计,【例】,分析:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。初始化(B)=FEh,采用边沿触发。,要求:一个按钮开关控制8个LED,每按一下按钮灯就移位一次,依次点亮八盏灯中的一盏。,ORG 0000H LJMP MAIN ORG 0013H;中断矢量 LJMP INTMAIN:SETB EA;开总中断允许“开关”SETB EX1;开分中断允许“开关”SETB IT1;边沿触发 MOV B,#0FEH;给 B 寄存器赋初值HERE:SJMP HERE;原地等待中断申请,INT:MOV A,B;自B寄存器中取

12、数 RL A;左环移一次 MOV B,A;存回B,备下次取用 MOV P1,A;输出到P1口 RETI;中断返回,中断服 务程序,【例】出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断INT0(P3.2)引脚输入,行驶里程为轮胎周长运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位米),数据存32H、31H、30H。,解:编程如下:ORG 0000H;复位地址 LJMP STAT;转初始化 ORG 0003H;中断入口地址 LJMP INT;转中断服务程序,ORG 0100H;初始化程序首地址STAT:MOV SP,#60H;置堆栈指针 SETB IT0;置边沿触发方式 M

13、OV IP,#01H;置高优先级 MOV IE,#81H;开中 MOV 30H,#0;里程计数器清0 MOV 31H,#0;MOV 32H,#0;LJMP MAIN;转主程序,并等待中断 ORG 0200H;中断服务子程序首地址INT:PUSH Acc;保护现场 PUSH PSW;MOV A,30H;读低8位计数器 ADD A,#2;低8位计数器加2m MOV 30H,A;回存 CLR A;ADDC A,31H;中8位计数器加进位 MOV 31H,A;回存 CLR A;ADDC A,32H;高8位计数器加进位 MOV 32H,A;回存 PUSH PSW;恢复现场 PUSH Acc;RETI;中

14、断返回,MAIN主程序可以处理循环显示等任务。,MAIN:ACALL DISP NOP NOP SJMP MAIN,【例5-3】现有5个外中断源EX1、EX20、EX21、EX22和EX23,高电平时表示请求中断,EX1级别最高,要求画硬件图,试编制程序。,解:ORG0000H;复位地址LJMPMAIN;转主程序ORG0003H;中断入口地址LJMPPINT0;转中断服务程序ORG0013H;中断入口地址LJMPPINT1;转中断服务程序,ORG0100H;主程序首地址MAIN:MOVSP,#60H;置堆栈指针 ORLTCON,#05H;置INT0、INT1为边沿触发方式 SETBPX0;置为

15、高优先级 MOVIE,#0FFH;全部开中;主程序内容 ORG 1000H;中断服务程序首地址 PINT0:PUSHAcc;中断,保护现场 LCALL WORK1;调用EX1服务子程序 POPAcc;恢复现场 RETI;中断返回 ORG 2000H;中断服务程序首地址PINT1:CLR EA;CPU禁中 PUSH Acc;中断保护现场 PUSH DPH;PUSH DPL;SETB EA;CPU开中,SETB IT0SETB IT1SETB PX0SETB EX0SETB EX1SETB EA,JB P1.0,LWK20;P1.0=1,EX20请求中断 JB P1.1,LWK21;P1.1=1,

16、EX21请求中断 JB P1.2,LWK22;P1.2=1,EX22请求中断 LCALL WORK23;P1.3=1,调用EX23服务子LRET:CLR EA;CPU禁中 POP DPL;恢复现场 POP DPH;POP Acc;SETB EA;CPU开中 RETI;中断返回LWK20:LCALL WORK20;P1.0=1,调用EX20服务子程序 SJMP LRET;转中断返回LWK21:LCALL WORK21;P1.1=1,调用EX21服务子程序 SJMP LRET;转中断返回LWK22:LCALL WORK22;P1.2=1,调用EX22服务子程序 SJMP LRET;转中断返回,在单

17、片机系统中设置+、四个运算命令键,它们的键号分别为0、1、2、3。当其中一个键按下时,进行相应的运算。操作数由P1口和P3口输入,运算结果仍由P1口和P3口输出。具体如下:P1口输入被加数、被减数、被乘数和被除数,输出运算结果的低8位或商;P3口输入加数、减数、乘数和除数,输出进位(借位)、运算结果的高8位或余数。键盘号已存放在30H中。,单片机四则运算系统,解:程序如下:PRGM:MOV P1,#0FFH;P1口置输入态 MOV P3,#0FFH;P3口置输入态 MOV DPTR,#TBJ;置“”表首地址 MOV A,30H;读键号 RL A;键号2A ADD A,30H;键号3A JMP

18、A+DPTR;散转TBJ:LJMP PRGM0;转PRGM0(加法)LJMP PRGM1;转PRGM1(减法)LJMP PRGM3;转PRGM3(除法)LJMP PRGM2;转PRGM2(乘法)PRGM0:MOV A,P1;读加数 ADD A,P3;P1+P3 MOV P1,A;和P1 CLR A;ADDC A,#00H;进位A MOV P3,A;进位P3 AJMPPRGM(RET);,PRGM1:MOV A,P1;读被减数 CLR C;SUBB A,P3;P1-P3 MOV P1,A;差P1 CLR A;RLC A;借位A MOV P3,A;借位P3 AJMPPRGM(RET);PRGM2:

19、MOV A,P1;读被乘数MOV B,P3;置乘数 MUL AB;P1P3 MOV P1,A;积低8位P1 MOV P3,B;积高8位P3 AJMPPRGM(RET);PRGM3:MOV A,P1;读被除数 MOV B,P3;置除数 DIV AB;P1P3 MOV P1,A;商P1 MOV P3,B;余数P3 AJMPPRGM(RET);说明:由于LJMP为3字节指令,因此键号需先乘3,以便转到正确的位置。,在单片机系统中设置+、四个运算命令键,当其中一个键按下时,进行相应的运算。操作数由P1口和P3口输入,运算结果仍由P1口和P3口输出。具体如下:P1口输入被加数、被减数、被乘数和被除数,输

20、出运算结果的低8位或商;P3口输入加数、减数、乘数和除数,输出进位(借位)、运算结果的高8位或余数。,加,减,除,乘,ORG 0000HAJMP MAINORG 0003HAJMP P_ADD;+ORG 000BHAJMP P_SUB;-ORG 0013HAJMP P_MUL;*ORG 001BHAJMP P_DIV;/MAIN:MOV SP,#60HSETB IT0SETB IT1MOV TMOD,#66H;T0、T1都为计数且为方式2MOV TH0,#0FFHMOV TL0,#0FFHMOV TH1,#0FFHMOV TL1,#0FFHSETB EX0SETB EX1SETB ET0SET

21、B ET1SETB EASJMP$,P_ADD:MOV P1,#0FFH;P1口置输入态 MOV P3,#0FFH;P3口置输入态 MOV A,P1;读加数 ADD A,P3;P1+P3 MOV P1,A;和P1 CLR A;ADDC A,#00H;进位A MOV P3,A;进位P3 RETI;P_SUB:MOV P1,#0FFH;P1口置输入态 MOV P3,#0FFH;P3口置输入态MOV A,P1;读被减数 CLR C;SUBB A,P3;P1-P3 MOV P1,A;差P1 CLR A;RLC A;借位A MOV P3,A;借位P3 RETI,P_MUL:MOV P1,#0FFH;P1

22、口置输入态 MOV P3,#0FFH;P3口置输入态MOV A,P1;读被乘数MOV B,P3;置乘数 MUL AB;P1P3 MOV P1,A;积低8位P1 MOV P3,B;积高8位P3 RETI;P_DIV:MOV P1,#0FFH;P1口置输入态 MOV P3,#0FFH;P3口置输入态 MOV A,P1;读被除数 MOV B,P3;置除数 DIV AB;P1P3 MOV P1,A;商P1 MOV P3,B;余数P3 RETI,END,执行主程序,主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,返 回,图52 80C51的中断系统结构示意图,图53 电平方

23、式外部中断请求的撤消电路,图54 中断响应过程的时序,图55 外部中断源的扩展电路,图56 外部中断源查询流程图,表5-1 中断矢量地址,实验一 清0、移数,将片内50H5FH及片外0010H004FH单元清0;然后将片内30H3FH的数据移到片外0000H000FH中;判断:若(30H)15,则求其平方存到40H中,并将位00H置1若(30H)=15,则加15存到40H中,并位01H置1若(30H)15,则减15存到40H中,并位02H置1,实验二 加法、排序,有两个长度为10的无符号数分别放在片内30H和40H为首的存储单元中(低位),求其对应项之和(带进位位),放在50H为首的单元中,然后按升序排列放在60H为首的单元中。,实验三 查表、散转,设有一表格,表中数为:00H、11H、22H、33H、44H、55H、66H、77H、88H、99H、AAH、BBH、CCH、DDH、EEH、FFH。根据片外0000H单元的低4位的数,取出表中相应的值存到片内30H中;根据片外0000H单元的高4位的数,将片内RAM区中可位寻址的相应的位置1(从位00H位0FH,只可有一个位地址为1),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号