C51单片微机的中断系统原理及应用.ppt_第1页
C51单片微机的中断系统原理及应用.ppt_第2页
C51单片微机的中断系统原理及应用.ppt_第3页
C51单片微机的中断系统原理及应用.ppt_第4页
C51单片微机的中断系统原理及应用.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

51单片机IO端口操作的一个有趣现象:我想实现P1.1端 口跟随P1.4端口同步输出,都是驱动LED,P1.4端口使用 定时器定时翻转,主循环程序随时判断P1.4状态,同步驱 动P1.1。程序如下: 看来没问题,可是下载到单片机中 ,只见OUT闪烁,LED根本不动, 奇怪? FLAG BIT 00H CPL FLAG MOV C,FLAG MOV OUT,C MOV C,FLAG 第五章 80C51单片微机的 中断系统原理及应用 中断系统概述 80C51的中断系统 中断的控制 中断的响应过程和响应时间 外部中断源的扩展 中断服务程序的设计 中断的基本概念 80C51中断源 中断控制寄存器 中断处理过程 中断优先控制和中断嵌套 中断系统的应用 要点: 中断系统的几个概念: 中断如图51所示。 中断源:能产生中断的外部和内部事件。 中断优先级 中断嵌套 5.1 中断系统概述 5.1.1单片微机的中断系统需要解决的问题 单片微机的中断系统需要解决的问题 CPU能及时响应中断(S5P2查询),处理完后能返回 多个中断源同时申请时,能实现中断优先级的控制 实现中断嵌套,并能逐级正确返回原断点处 5.1 中断系统概述 5.1.1单片微机的中断系统需要解决的问题 实现CPU与外部设备的速度配合 通过中断的方法来协调快速CPU与慢速外部设备之间的工作 。 实现实时控制 依靠中断技术能实现实时控制。 实现故障的及时发现及处理 中断技术使单片微机就能及时发现故障并自动处理 实现人机联系 如通过键盘向单片微机发出中断请求 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 中断源 1. 外部中断 外部中断是从引脚INT0 和INT1上引入。 外部中断请求有两种信号触发方式:低电平、下跳沿 当IT00 时, INT0低电平有效; 当IT01时, INT0下降沿有效。 当IT10 时, INT1低电平有效; 当IT11时, INT1下降沿有效。 定时中断(T0、T1) 当定时器/计数器T0(T1)发生计数溢出时,标志位TF0( TF1)置1, 可以向CPU申请中断。 串行中断 当串行口发送/接收完一帧串行数据时,产生一个中断 请求。RXD,TXD:串行中断。 矢量中断:就是中断入口地址。 矢量地址由硬件直接给出。 5.2.2 中断矢量 中断源 中断矢量地址 外部中断0(INT0) 0003H 定时时器/计计数器0(T0 ) 000BH 外部中断1(INT1) 0013H 定时时器/计计数器1(T1 ) 001BH 串行口(RI、TI) 0023H 定时时器/计计数器2 002BH 表5-1 中断矢量地址 5.3 中断的控制 5.3.1中断标志 中断系统控制寄存器包括:TCON、IE、SCON、IP 定时器计数器控制寄存器TCON(88H) TCOND7D6D5D4D3D2D1D0 位名称TF1TR1TF0TR0IE1IT1IE0IT0 功能 T1 中断 标标志 启动动 T1 T0 中断 标标志 启动动 T0 中断 标标志 INT1 触发发 方式 中断 标标志 INT0 触发发 方式 5.3 中断的控制 SCON D7D6D5D4D3D2D1D0 位名称SM0SM1 SM2 REN TB8 RB8TIRI 功能 串行发发送 中断标标志 串行接收 中断标标志 串行口控制寄存器SCON:(98H) 中断允许寄存器IE:(A8H) 5.3.2 中断允许控制 IED7D6D5D4D3D2D1D0 位名称EAESET1EX1ET0EX0 中断源总总中 断 串行口 T1INT1T0INT0 中断优先级寄存器IP (B8H) 5.3.3 中断优先级 IPD7D6D5D4D3D2D1D0 位名称PSPT1PX1PET0PX0 中断源串行口 T1INT1T0INT0 在同一优先级内有一个由内部查询序列确定的笫二个 优先级结构。其排列如下: 中断源中断优先级 外部中断0最高 定时器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 中断采样中断查询中断响应 中断采样:在机器周期的S5P2采样外中断源并置标 志 5.4 中断响应过程和响应时间 5.4.1中断的响应过程 中断查询:在S6时按优先级的顺序查询各中断标志。 若有中断标志,则从下一个机器周期的S1状态开始进 行中断响应。 3.中断响应:由硬件自动产生一条LCALL指令,即: LCALL addr16 ;addr16:中断入口地址 中断结束:中断服务程序由中断矢量地址开始执行, 直至遇到RETI为止 中断响应被封锁: (1)CPU正在执行同级或高一级的中断服务程序 (2)查询中断请求的机器周期不是执行当前指令的最后 一个周期 (3)当前正在执行RETI指令或对IE、IP进行操作 5.4.2 中断响应时间 响应时间-从查询中断请求标志位到转向中断服务入 口地址所需的机器周期数。 (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:PUSH PSW ;保护现场 PUSH ACC JB P1.0, LOOP1 ;转向中断服务程序1 JB P1.l,LOOP2 ;转向中断服务程序2 JB P1.2,LOOP3 ;转向中断服务程序3 JB P1.3,LOOP4 ;转向中断服务程序4 INTFH: POP ACC ;恢复现场 POP PSW RETI LOOP1:;中断服务程序1 AJMP INTFH LOOP2:;中断服务程序2 AJMP INTFH LOOP3:;中断服务程序3 AJMP INTFH LOOP4:;中断服务程序4 AJMP INTFH 例 把外部中断请求信号2连到T1引脚上,T1设为方式2,即8位 自动重装载方式,时间常数设为满刻度值FFH。 ORG0000H AJMPMAIN ORG001BH;T1中断矢量作外部中断2 LJMPINT2 ORG0030H MAIN:MOVTMOD,#60H ;设T1计数器方式2 MOVTL1,#0FFH ;置T1计数常数 MOVTH1,#0FFH SETB EA;开中断 SETB ET1;允许计数器1中断 SETB TR1;启动计数 SJMP $ INT2: -;外部中断2服务程序 RETI 5.5.2 通过片内定时器/计数器来实现 80C51中断结构有一个重要特性,即执行中断返回指 令RETI后,必须至少执行一条其它指令后,才能响应新的 中断。典型方法是使用外部中断,并将其设为电平触发方 式。 硬件上,把按键产生的脉冲连到 INT0,作为外部中 断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 中断 入口地址 中断请求的允许与禁止。 外中断触发方式。 优先级别。 开中断/关中断。 5.7 中断服务程序的设计 【例】 分析:通过外部中断1,在中断服务中将B寄存器 里的内容左环移一位。初始化 (B)=FEh, 采用边 沿触发。 要求:一个按钮开关控制8个LED,每按一下按钮灯就移 位一次,依次点亮八盏灯中的一盏。 P1.0 P1.7 INT1 300 VCC VCC ORG 0000H LJMP MAIN ORG 0013H ;中断矢量 LJMP INT MAIN:SETB EA ;开总中断允许“开关” SETB EX1 ;开分中断允许“开关” SETB IT1 ;边沿触发 MOV B,#0FEH ;给 B 寄存器赋初值 HERE:SJMP HERE ;原地等待中断申请 INT:MOV A,B ;自B寄存器中取数 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;置边沿触发方式 MOV 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;中断返回 MAIN主程序可以处理 循环显示等任务。 MAIN: ACALL DISP NOP NOP SJMP MAIN 【例5-3】现有5个外中断源EX1、EX20、EX21、 EX22和EX23,高电平时表示请求中断,EX1级 别最高,要求画硬件图,试编制程序。 解: ORG0000H;复位地址 LJMP MAIN ;转主程序 ORG0003H;中断入口地址 LJMP PINT0;转中断服务程序 ORG0013H;中断入口地址 LJMP PINT1;转中断服务程序 ORG0100H ;主程序首地址 MAIN: MOVSP,#60H;置堆栈指针 ORLTCON,#05H;置INT0、INT1为边沿触发方式 SETB PX0 ;置为高优先级 MOVIE,#0FFH;全部开中 ;主程序内容 ORG 1000H;中断服务程序首地址 PINT0: PUSH Acc;中断,保护现场 LCALL WORK1;调用EX1服务子程序 POPAcc;恢复现场 RETI;中断返回 ORG 2000H ;中断服务程序首地址 PINT1: CLR EA ;CPU禁中 PUSH Acc ;中断保护现场 PUSH DPH ; PUSH DPL ; SETB EA ;CPU开中 SETB IT0 SETB IT1 SETB PX0 SETB EX0 SETB EX1 SETB EA JB P1.0,LWK20;P1.0=1,EX20请求中断 JB P1.1,LWK21;P1.1=1,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;转中断返回 在单片机系统中设置+、四个运算命 令键,它们的键号分别为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 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: 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口输入被加数、被减数 、被乘数和被除数,输出运算结果的低8位或商; P3口输入加数、减数、乘数和除数,输出进位( 借位)、运算结果的高8位或余数。 T0 T1 INT0 INT1 加 减 除 乘 ORG 0000H AJMP MAIN ORG 0003H AJMP P_ADD;+ ORG 000BH AJMP P_SUB;- ORG 0013H AJMP P_MUL;* ORG 001BH AJMP P_DIV;/ MAIN:MOV SP,#60H SETB IT0 SETB IT1 MOV TMOD,#66H;T0、T1都为计数且为方式2 MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH SETB EX0 SETB EX1 SETB ET0 SETB ET1 SETB EA SJMP $ 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口置输入态 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口置

温馨提示

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

评论

0/150

提交评论