《机械系统微机控制.ppt》由会员分享,可在线阅读,更多相关《机械系统微机控制.ppt(60页珍藏版)》请在三一办公上搜索。
1、机械系统微机控制,王志刚机械系机电教研室Email:2023年10月2日1时42分,7 中断系统,7.1 中断的概念7.2 中断技术的优点7.3 中断系统的功能7.4 中断源类型7.5 MCS-51的中断系统7.6 中断处理过程7.7 MCS-51外部中断源的扩展7.8 中断系统的应用,机械系统微机控制,7.1 中断的概念,所谓中断:是指CPU正在处理某件事情的时候,外部发生了某一事件,请求CPU迅速去处理。CPU暂时中断当前的工作,转入处理所发生的事件,处理完毕后,再回来继续执行被中止了的工作,这个过程称为中断。实现这种功能的部件称为中断系统,产生中断的请求源称为中断源;原来正在运行的程序称
2、为主程序;主程序被断开的位置称为断点。,机械系统微机控制,7.2 中断技术的优点,分时操作 能解决快速CPU和慢速外设之间的矛盾,可使CPU、外设同时工作。实现实时处理 外界变化量可以根据要求,随时向CPU发出中断请求,要求CPU及时处理,CPU就可以马上响应,加以处理。故障处理 计算机运行过程中,出现无法预料的故障时,能自行处理,而不必停机。,机械系统微机控制,7.3 中断系统的功能,1、实现中断及返回,2、实现优先权排队,3、实现中断嵌套,RETI,图7-2 中断流程图,图7-3 中断嵌套流程图,机械系统微机控制,7.4 中断源类型,7.4.1 外部中断类 有两个中断源:外部中断0和外部中
3、断1,相应的中断请求信号输入端是INT0和INT1,有两种触发方式:电平触发方式和脉冲触发方式。7.4.2 定时中断类 有两个中断源:定时/计数器0溢出中断和定时/计数器1溢出中断。7.4.3 串行中断类 串行口中断请求标志:每当串行口接收或发送一组串行数据完毕时,由硬件使TI或RI置位,即产生一个串行口中断请求。,机械系统微机控制,7.5 MCS-51的中断系统,7.5.1 中断请求标志,7.5.3 中断优先级控制寄存器IP,7.5.2 中断允许控制寄存器IE,机械系统微机控制,图7-3 MCS-51单片机的中断系统,机械系统微机控制,5个中断请求源:(1)INT0:外部中断0请求,由P3.
4、2脚输入。由IT0决定是低电平有效还是负跳变有效。一旦有效,则向CPU申请中断,且建立IE0标志。(2)INT1:外部中断1请求,由P3.3脚输入。由IT1决定是低电平有效还是负跳变有效。一旦有效,则向CPU申请中断,且建立IE1标志。(3)TF0:定时器T0溢出中断请求。当T0产生溢出,TF0置位,请求中断处理。(4)TF1:定时器T1溢出中断请求。当T1产生溢出,TF1置位,请求中断处理。(5)RI或TI:串行中断请求。当接收或发送完一组数据后就置位RI或TI,请求中断。,机械系统微机控制,7.5.1 中断请求标志,1、定时器控制寄存器TCON的中断标志(88H),IE0(IE1):外中断
5、请求标志。IT0(IT1):外中断请求信号方式控制位。当IT0(IT1)=1时:脉冲触发方式(边沿触发方式),负跳变有效。当IT0(IT1)=0时:电平触发方式,低电平有效。TF0(TF1):定时计数溢出标志位。当定时/计数器产生溢出时,由硬件置1;当转向中断服务时,由硬件自动清零。,机械系统微机控制,2、串行口控制寄存器SCON的中断标志,RI:串行口接收中断请求标志位。当单片机接收到一串行数据后,由硬件置1;当CPU转向中断服务程序后,该位必须由软件清零。TI:串行口发送中断请求标志位。当单片机发送完一串行数据后,由硬件置1;当CPU转向中断服务程序后,该位必须由软件清零。,机械系统微机控
6、制,7.5.2 中断允许控制寄存器IE,EA:中断允许总控制位。EA=0,表示CPU禁止所有中断;EA=1时,表示CPU开放中断。EX0(EX1):外部中断允许控制位。EX0(EX1)=0,禁止外中断;EX0(EX1)=1,允许外中断。ET0(ET1):定时/计数器的中断允许控制位。ET0(ET1)=0,禁止定时/计数器中断;ET0(ET1)=1,允许定时/计数器中断。ES:串行中断允许控制位。ES=0,禁止串行中断;ES=1,允许串行中断。,机械系统微机控制,7.5.3 中断优先级控制寄存器IP,PX0:外部中断0优先级设定位;PX0:定时器T0中断优先级设定位;PX1:外部中断1优先级设定
7、位;PT1:定时器T1中断优先级设定位;PS:串行中断优先级设定位。当某一控制位被置0,则该中断源被定义为低优先级;若被置1,则该中断源被定义为高优先级。中断优先级控制寄存器IP的各个控制位,都可以通过编程来置位或清零。,机械系统微机控制,中断优先级的控制原则:(1)低优先级中断请求不能打断高优先级的中断服务,但高优先级可打断低优先级的中断服务,实现中断嵌套。(2)一个中断一旦得到响应,与它同级的中断请求不能中断它。(3)同级的多个中断请求同时出现,则按CPU查询次序确定哪个中断请求先被响应。查询次序为:外部中断0定时/计数器中断0外部中断1定时/计数器中断1串行中断。,机械系统微机控制,7.
8、6 中断处理过程,7.6.1 中断响应7.6.2 中断处理7.6.3 中断返回7.6.4 中断请求的撤除7.6.5 中断响应时间,机械系统微机控制,7.6.1 中断响应,1、CPU的中断响应条件(1)首先要有中断源发出中断申请;(2)中断总允许位EA=1,即CPU允许所有中断源申请中断;(3)申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。注:当出现下面一种情况时,中断会被阻断:(1)CPU正在执行一个同级或高一级的中断服务程序;(2)当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令还未完成前,任何中断请求都得不到响应;,机械系统微机控制,(3)正在执行的指令
9、是返回指令或者对专用寄存器IE、IP进行读/写的指令,此时在执行RETI或者读写IE或IP之后,不会马上响应中断请求,至少在执行一条其他指令之后才会响应。2、中断响应过程 中断源 入口地址 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H,机械系统微机控制,中断处理,中断处理:中断服务程序从入口地址开始执行,直至遇到指令“RETI”为止,称中断处理。编写中断服务程序需注意以下几点:(1)各入口地址间隔8个字节,需在入口地址单元处存放一条无条件转移指令。(2)若要在执行当前中断程序时禁止更高优先级中断源中断,要先关闭C
10、PU中断,或禁止更高中断源的中断,而在中断返回前再开中断。(3)在保护现场和恢复现场时,为了不使现场数据受到破坏,在保护现场和恢复现场时,CPU不响应新的中断请求。,机械系统微机控制,中断返回,机械系统微机控制,中断请求的撤除,定时器溢出中断,CPU在响应中断后,用硬件清除中断请求标志IF0或IF1。边沿触发的外部中断,CPU在响应中断后,用硬件清除中断请求标志IE0或IE1。串行口中断,CPU在响应中断后,没有硬件清除TI、RI,用户必须用软件来清除。电平触发的外部中断,CPU在响应中断后,由硬件自动清除中断申请标志IE0或IE1,但不能彻底撤除中断请求。,机械系统微机控制,中断响应时间,中
11、断响应时间:是从查询中断请求标志位开始转向中断入口地址所需的机器周期数。外中断响应时间:大于3个机器周期,小于8个机器周期。,机械系统微机控制,7.7 MCS-51外部中断源的扩展,1、利用定时器做外中断源法(1)置定时/计数器为工作模式2,且为计数方式,即8位的自动装载方式。(2)定时/计数器的高8位和低8位都预置为0FFH。(3)将定时/计数器的计数输入端(P3.3、P3.4)作为扩展的外部中断请求输入。(4)在相应的中断服务程序入口开始存放为外中断服务的中断服务程序。,机械系统微机控制,【例7-1】将定时器T0设定为方式2代替一个扩充外中断源,TH0和TH1初值为FFH,允许T0中断,C
12、PU开放中断,写出借用定时/计数器0溢出中断为外部中断的初始化程序。解:MOV TMOD,06H;置T0为工作模式2、计数方式 MOV TLO,0FFH;置低8位初始值 MOV THO,0FFH;置高8位初始值 SETB EA;开中断 SETB ET0;定时器0允许中断 SETB TR0;启动计数器,机械系统微机控制,2、用查询方式扩展中断源,图7-6 多外部中断源的硬件连接,机械系统微机控制,【例7-2】用图7-6的连接对E11E14中断查询,写出有关的中断服务程序。,图7-7 软件查询中断源流程图,机械系统微机控制,查询流程图如图7-7。查询次序为E11E14。在查到一个高级中断申请后,就
13、转去为这个中断申请服务,服务结束后,就返回继续查询较低级的中断申请,直到查不到其他中断申请时返回,并再等待INT1上出现新的中断申请信号。ORG 0013H LJMP ITROU ITROU:PUSH PSW PUSH ACC ANL P1,0FH JNB P1.0,N1 ACALL BR0 N1:JNB P1.1,N2 ACALL BR1 N2:JNB P1.2,N3,机械系统微机控制,ACALL BR2 N3:JNB P1.3,N4 ACALL BR3 N4:POP ACC POP PSW RETIBR0:;E11中断服务子程序 RET BR1:;E12中断服务子程序 RET BR2:;E
14、13中断服务子程序 RET BR3:;E14中断服务子程序 RET,机械系统微机控制,7.8 中断系统的应用,中断系统中需要人为控制的部分:(1)CPU的开中断和关中断;(2)各中断源中断请求的允许和禁止;(3)各中断源优先级别的设定;(4)外部中断请求的触发方式。中断服务程序的一般格式为:CLR EA CLR EA PUSH ACC POP PSW PUSH PSW POP ACC SETB EA SETB EA RETI,机械系统微机控制,【例7-3】利用定时器T0定时,在P1.0端输出一方波,方波周期为20ms,已知晶振频率为12MHz。主程序如下:ORG 0000H LJMP 2000
15、H T0的中断服务程序 ORG 000BH AJMP 70H ORG 70H MOV TL0,0F0H;重赋初值 MOV TH0,0D8H,机械系统微机控制,CPL P1.0;输出取反 RETI ORG 2000H MOV TMOD,01H;设置T0为模式1 MOV TL0,0F0H;赋初值 MOV TH0,0D8H MOV IE,82H;CPU开中断,T0开中断 SETB TR0;启动T0 HERE:SJMP HERE;循环等待定时到,机械系统微机控制,【例7-4】用定时器T1定时,在P1.0端输出一方波,周期为2min,已知晶振频率为12MHz。解:(方法1)采用中断方法。设定时器T1采用
16、模式1定时10ms,用69H单元做毫秒计数单元,用79H单元做秒计数单元,用4FH位做1分计时到标志。T1中断服务程序入口地址为001BH。主程序如下:ORG 0000H LJMP 2000H T1的中断服务程序 ORG 001BH,机械系统微机控制,AJMP 100H ORG 100H MOV TH1,0D8H;重赋初值 MOV TL1,0F0H DJNZ 69H,TT1;判1s定时到否?MOV 69H,100H DJNZ 79H,TT1 M0V 79H,60H;判1min定时到否?SETB 4FH TT1:RETI;中断返回 ORG 2000H MOV TMOD,10H;设置T1为定时模式
17、1,机械系统微机控制,MOV TH1,0D8H;赋初值 MOV TL1,0F0H MOV IE,88H;CPU开中断,T1开中断 SETB TR1;启动T1工作 MOV 69H,100;赋毫秒计数初值 MOV 79H,60;赋秒计数初值 CLR 4FH;清标志位 TT:JNB 4FH,TT;等1min时间到 CLR 4FH;清标志位 CPL P1.0;输出反相 AJMP TT;反复循环 END,机械系统微机控制,(方法2)采用软、硬相结合的方法。电路连接如图7-8,使P1.2与T0(P3.4)相连,P1.0仍然用做输出波形,定时器T1做10ms定时,定时器T0设为模式1计数,定时器T1控制P1
18、.2输出方波,T0(P3.4)做计数输入端。T0的计数初值X应为 X=65536-6000=59536=E890H 主程序如下:ORG 2000H MOV TMOD,15H;设置T1为模式1定时,T0为模式1计数 MOV TH1,0D8H;赋T1定时10ms初值 MOV TL1,0F0H,机械系统微机控制,MOV TH0,0E8H;赋T0计数6000初值 MOV TL0,90H MOV IE,8AH;CPU开中断,T0、T1开中断 SETB TR1 SETB TR0 LI:SJMP LI;等10ms到T1的中断服务 程序T1的中断服务程序(由001BH转来)ORG 100H MOV TH1,0
19、D8H;重赋定时初值,机械系统微机控制,MOV TL1,0F0H CPL P1.2 RETIT0的中断服务程序(由000BH转来)ORG 200H MOV TH0,0E8H;重赋计数初值 MOV TL0,90H CPL P1.0 RETI,机械系统微机控制,【例7-5】已知某8051单片机采用6MHz晶振,现要求P1.0输出一个5KHz的方波,同时对外部输入的脉冲信号进行计数,每当计满200时,使内部数据存储单元60H内容增1,当增到100时停止计数,并使P1.2输出高电平,定时器T1做串行口的波特率发生器。解:定时器T0为工作模式3,TH0作为8位定时器用,TL0作为8位计数器用,利用T0(
20、P3.4)引脚作为外部脉冲计数输入,用TL0计数,把TL0置初值38H(256-200=38H);用TH0作为8位定时器,由P1.0输出5KHz方波,即每隔100s使P1.0的电平变化一次,定时初值为CEH(256-100/2=206)。(定时100 s)主程序如下:,机械系统微机控制,MOV TL0,38H;赋计数初值 MOV TH0,0CEH;赋定时初值 MOV TL1,BAND;根据波特率要求设 定常数BAND MOV TH1,BAND MOV TMOD,27H;T1为模式2定时,T0为模式3计数 MOV TCON,50H;启动T0、T1工作 MOV IE,9AH;开放CPU中断,开放
21、串口、T0、T1中断 MOV 60H,00;60H单元清零 HERE:SJMP HERE;循环等待TL0计数溢出中断服务程序(由000BH转来)MOV TLO,38H;重赋初值,机械系统微机控制,INC 60H MOV A,60H CJNE A,100,LP SETB P1.2 CLR ET0 CLR TR0 LP:RETITH0溢出中断服务程序(由001BH转来)MOV TH0,0CEH;重赋初值 CPL P1.0;P1.0输出取反 RETI,机械系统微机控制,【例7-7】已知甲乙两台8051单片机所使用的晶振均为11.0592MHz。现要求两机之间进行串行通信,甲机发送,乙机接收。传输波特
22、率定为9600。甲机以78H、77H中的内容为发送数据的起始地址,以76H、75H中的内容为发送数据的末地址。甲机首先发送数据的起始地址和末地址,然后再开始发送数据。乙机以接收到的第12字节作为存放接收数据的起始地址,第34字节作为存放接收数据的末地址,第5字节为起始数据。解:设定时器1按模式1工作,串行口也按模式 1工作。程序如下:甲机发送:ORG 2000H,机械系统微机控制,TAN:MOV TMOD,10H;定时器1设置为模式1 MOV TL1,0FDH;定时器1赋初值 MOV TH1,0FFH SETB EA;CPU开中断 SETB ET1;定时器1开中断 CLR ES;串行口关中断
23、SETB PT1;定时器1置高中断优先级 CLR PS;串行口置低中断优先级 SETB TR1;启动定时器1工作 CLR TI;清发送中断标志 MOV SCON,40H;串行口置工作模式1 MOV SBUF,78H;输出高位地址 JNB TI,;等待地址发送 CLR TI;TI清“零”,机械系统微机控制,MOV SBUF,77H;输出低位地址 JNB TI,;等待地址发送 CLR TI;TI清“零”MOV SBUF,76H;输出末位地址高位字节 JNB TI,;等待地址发送 CLR TI;TI清“零”MOV SBUF,75H;输出末位地址低位字节 SETB ES;串行口开中断 SJMP;等待发
24、送 定时器1中断服务程序(由001BH转来)TIN:CLR TR1;关定时器1 MOV TL1,0FDH;T1重置初值 MOV TH1,0FFH,机械系统微机控制,SETB TR1;启动T1工作 RETI;中断返回 串行口中断服务程序(由0023H转来)ESS:PUSH DPL;把DPTR压入堆栈保护 PUSH DPH PUSH ACC;把A压入堆栈保护 MOV DPH,78H;发送数据地址DPTR MOV DPL,77H MOVX A,DPTR;发送数据A CLR TI;TI清“零”MOV SBUF,A;输出数据 MOV A,DPH,机械系统微机控制,CJNE A,76H,EN1;数据未送完
25、转至EN1 MOV A,DPL CJNE A,75H,EN1 CLR ES;串行口关中断 CLR ET1;定时器1关中断 CLR TR1;关定时器1ESC:POP ACC;恢复现场 POP DPH POP DPL RETIEN1:INC 77H;低位地址加1 MOV A,77H JNZ EN2;低位地址非零转移,机械系统微机控制,INC 78H;高位地址加1EN2:SJMP ESC;无条件转移乙机接收:ORG 2000HREV:MOV TMOD,10H;定时器1设置为模式1 MOV TL1,0FDH;定时器1赋初值 MOV TH1,0FFH SETB EA;CPU开中断 SETB ET1;定时
26、器1开中断 SETB ES;串行口开中断 SETB PT1;定时器1置最高中断优先级 CLR PS;串行口置低中断优先级,机械系统微机控制,SETB TR1;启动定时器1工作 MOV SCON,50H;串行口置工作模式1接收 CLR B.0;设置接收地址标志 MOV 70H,78H;设置起始地址 SJMP;等待接收 定时器1中断服务程序(由001BH转来)REV1:CLR TR1;关定时器1 MOV TL1,0FDH;定时器1重置初值 MOV TH1,0FFH SETB TR1;启动定时器1工作 RETI,机械系统微机控制,串行口中断服务程序(由0023H转来)ESS:PUSH DPL;DPT
27、R压栈保护 PUSH DPH PUSH ACC;A压栈保护 MOV A,R0;R0压栈保护 PUSH ACC JB B.0,DA0;非地址转移 MOV R0,70H MOV A,SBUF;接收地址信息 MOV R0,A DEC 70H;修改接收地址 CLR RI;RI清“零”MOV A,74H,机械系统微机控制,CJNE A,70H,DA2;地址未接收完转移 SETB B.0;设置接收数据标志DA2:POP ACC;将A弹出堆栈送R0 MOV R0,A POP ACC POP DPH;恢复现场 POP DPL RETIDA0:MOV DPH,78H;接收的起始地址送DPTR MOV DPL,7
28、7H MOV A,SBUF;接收数据信息 MOVX DPTR,A CLR RI;RI清“零”INC 77H;地址低位加1,机械系统微机控制,MOV A,77H;地址低位非零转移 JNZ DA3 INC 78H;地址高位加1DA3:MOV A,76H CJNE A,78H,DA2;数据未接收完转至DA2 MOV A,75H CJNE A,77H,DA2 CLR ES;串行口关中断 CLR ET1;定时器1关中断 CLR TR1;关定时器1 SETB PSW.5;设置传送结束标志 AJMP DA2 END,机械系统微机控制,【例7-8】多机通信软件设计。1)软件协议(1)系统中允许有255台从机,
29、其地址分别为00HFEH。(2)地址FFH是对所有从机都起作用的一条控制命令,命令各从机恢复SM=1状态。(3)主机和从机的联络过程为:主机首先发送地址,被寻址从机向主机回送本机地址,主机在判断地址相符后给被寻址的从机发送控制命令,被寻址的从机根据其命令向主机回送自己的状态,若主机判断状态正常,主机即开始发送或接收数据,发送或接收的第一个字节为数据块长度。若从机状态不正常,主机重联络。,机械系统微机控制,(4)设主机发送的控制命令代码为:00H:要求从机接收数据块;01H:要求从机发送数据块;其他:非法命令。(5)从机状态字格式为:其中 若ERR=1,从机接收到非法命令;若TRDY=1,从机发
30、送准备就绪;若RRDY=1,从机接收准备就绪。,机械系统微机控制,2)主机查询、从机中断方式的多机通信软件设计(1)主机串行通信子程序。入口参数;(R0)主机发送的数据块首地址;(R1)主机接收的数据块首地址;(R2)被寻址的从机地址;(R3)主机发出的命令;(R4)数据块长度。流程图见图7-9。,机械系统微机控制,图7-9 多机通信主机查询方式程序流程图,机械系统微机控制,程序清单如下:MSIO:MOV TMOD,20H;初始化T1为定 时功能,模式2 MOV TL1,0F3H;送入初值 MOV TH1,0F3H SETB TR1;启动定时器T1 MOV PCON,80H;设置SMOD=1
31、MOV SCON,0D8H;设置串行口模式 3,允许接收,TB8=1MSIO1:MOV SBUF,R2;发送从机地址 JNB TI,;等待发送结束 CLR TI;发送完,清TI,为下 一次发送做准备,机械系统微机控制,WAIT1:JBC RI,MSIO2;等待从机应答 SJMP WAIT1 MSIO2:MOV A,SBUF;取出从机应答地址 XRL A,R2;核对地址 JZ MSIO4;地址相符,则转MSIO4MSIO3:SETB TB8;地址不符,重新联络 MOV SBUF,0FFH;给从机发复位命 令(TB8=1)JNB TI,;等待发送结束 CLR TI;清TI SJMP MSIO1;转
32、重发地址MSIO4:CLR TB8;地址符合,TB8=0,准备 发送数据/命令,机械系统微机控制,MOV SBUF,R3;给从机发送命令 JNB TI,CLR TIWAIT2:JBC RI,MSIO5;等待接收从机应答 SJMP WAIT2MSIO5:MOV A,SBUF;取出应答信息 JNB ACC.7,MSIO6;核对命令接收是否 出错,正确则转 SJMP MSIO3;从机接收命令出 错,转重新联络MSIO6:CJNE R3,00H,MSIO7;若要求从机 发送,则转MSIO7,机械系统微机控制,JNB ACC.0,MSIO3;要求从机接收,从 机未准备好,重新联络 STX:MOV SBU
33、F,R4;从机准备好,向从 机发送数据块长度WAIT3:JBC TI,STX1;发送结束,则转 SJMP WAIT3;未发送完,等待 STX1:MOV SBUF,R0;向从机发送数据 JNB TI,CLR TI INC R0;修改地址,指向下 一个地址单元 DJNZ R4,STX1;数据未发送完,继 续发送,机械系统微机控制,RET;数据发送完毕,返回主程序 MSIO7:JNB ACC.1,MSIO3;若从机发送未准备 好,转重新联络 SRT:JNB RI,;等待接收从机发来 的数据块长度 CLR RI;清TI位,为下一次 接收做准备 MOV A,SBUF;取出收到的数据 MOV R4,A;数据块长度送计数器R4 MOV R1,A;数据块长度存入数 据存储区 INC R1;修改地址,机械系统微机控制,SRX1:JNB RI,;等待接收从机发来 的数据 CLR RI MOV R1,SBUF;接收的数据存入数 据存储区 INC R1;修改地址,指向下 一个地址单元 DJNZ R4,SRX1;数据未接收完,继 续接收 RET;数据接收完毕,返 回主程序,机械系统微机控制,The End,本节结束,