第五章输入输出与中断第一节输入输出设备与接口第二节输人输出的传送方式第三节中断的基本概念第四节8051单片机的中断系统第五节中断程序举例本章要点•三种输入输出传送方式。•中断方式的必要性,中断概念,8051单片机的中断系统。•中断方式的具体应用。第一节输入输出设备与接口一、输入输出设备输入输出设备又称为计算机外围设备;简称外设或I/O设备。单片机应用系统常用的输入设备有按钮、键盘、各种传感器等。常用的输出设备有LED(发光二极管显示器)、LCD(液晶显示器)等。二、输入输出接口输入输出设备与主机的连接部分称为输入输出接口,简称I/O接口。输入输出接口的作用是:2)锁存与缓冲作用:一般用D触发器进行锁存。1)隔离与寻址作用:例如右图用三态门组成的接口。3)信号电平或形式变换:例如A/D、D/A、232/485的变换。返回本章首页第二节输入输出的传送方式一、无条件传送方式这是指单片机不考虑外设的状态,CPU可随时执行输入或输出指令,并立即进行数据传送的一种方式。二、查询方式查询方式是指CPU在执行输入输出指令之前,先对外围设备的状态进行检测,以判别外设是否准备就绪。如果已经准备就绪,CPU就可以执行输入输出指令。如果还没有准备就绪,必须继续查询。三、中断方式所谓中断就是指CPU接到外设中断申请后,暂时停止执行主程序而转去执行中断服务程序。如无中断申请CPU只执行主程序而不管中断服务程序内容。返回本章首页第三节中断的基本概念一、中断的必要性1.便于并行操作,提高计算机效率。2.便于适时控制和处理突发事件。3.便于处理按规定时刻或一定延时后进行操作的场合。二、中断源中断源是指向CPU申请中断的事件来源。例如外部输入输出设备,定时/计数器,串行接口都可以作为中断源。三、中断响应过程CPU响应中断过程1)寻找中断源。2)将当前PC值(下一条指令的地址)推人堆栈,以便中断返回时使用。3)寻找中断人口,以便转向执行中断服务程序。4)保护现场5)执行中断服务程序。6)执行完中断服务程序后,恢复现场并返回主程序。四、中断优先权中断优先权也叫中断排序,是用户根据中断源的性质和重要性自行排列的先后次序。在多个中断源同时提出申请时,保证优先权高的中断源首先得到响应,纵使CPU正在处理一个中断,也要暂时停止较低级的中断。响应优先权更高的中断源请求。这个过程称为中断嵌套或多重中断。优先权排序可以用软件也可以用硬件实现。返回本章首页第四节8051单片机的中断系统一、8051单片机中断源8051单片机有5个中断源,分别为:外部中断源INT0,INT1:可通过对(P3.2、P3.3)输入低电平申请中断。内部定时器中断源T0、T1:内部定时器发生溢出时,通过内部逻辑申请中断。串行口中断源:串行口缓冲器SBUF发送或接收完一个字符数据时,可通过内部逻辑申请中断。二、中断系统使用的特殊功能寄存器8051内部与中断有关的寄存器有。1.中断允许寄存器IE:决定各中断源是开中断还是关中断。2.中断优先级寄存器IP:用户可以通过对IP置值,赋予五个中断源以不同的优先级。3.定时器控制寄存器TCON:与中断有关为6位。IT0、IT1用于决定外部中断源触发方式。0为低电平触发,1为下降沿触发。TF0、TF1是T0、T1的中断请求标志。T0、T1溢出时通过硬件使TF0或TFl自动置1,并请求中断。IE0、IE1为外部中断源请求标志,中断时由硬件置1。8051单片机中断优先级与中断优先权区别由于8051单片机只有两个中断优先级,遇到两个中断源的优先级相同,谁先响应由内部硬件逻辑的查询顺序来确定,先查到的中断源,称为中断优先权高,后查到的中断源,称为中断优先权低,查询顺序从高到低的顺序为INT0最优先T0INT1T1串口中断最后但要注意,中断优先级是可编程的,可通过对IP赋值,决定高低。而中断优先权则不可编程的,三、中断响应过程1.采样中断请求。2.对采样到的中断标志进行查询。3.CPU响应中断。4.执行中断服务程序。5.中断返回。6.中断请求的撤除。中断返回前还要注意撤除中断请求,否则将在返回后引起新的中断。对于T0、T1可由硬件自动撤除。对于串口应将TI、RI清零。对于INT0、INT1应将外部中断引脚恢复为高电平。返回本章首页第五节中断程序举例例5-1在8051单片机的INT0引脚外接脉冲信号,要求每送来一个脉冲,把30H单元值加1,若30H单元计满则进位31H单元。现利用中断编制脉冲计数程序。中断服务程序:ORG0200H;设置中断服务子程序位置SUBG:PUSHACC;保护现场INC30H;中断后将脉冲计数值加1MOVA,30HJNZBACKINC31HBACK:POPACC;恢复现场RETl;返回续上的主程序部分ORG0000HAJMPMAIN;设置主程序人口ORG0003H;外部中断人口AJMPSUBG;设置中断服务程序人口ORG0100HMAIN:MOVA,#00H;30H、31H两单元清零MOV30H,AMOV31H,AMOVSP,#70H;设置堆栈指针SETBIT0;设INT0为边沿触发SETBEA;开中断SETBEX0;允许INT0中断AJMP$;等待中断例5-2设计一个比赛抢答器,电路如图5-6所示,P1.0~P1.3分别接按钮S0~S3,当其中任何一个按钮按下时,都能立即从P3.3发出铃声信号,并点亮相应的发光二极管。即S0点亮VL0,S1点亮VL1,S2点亮VL2,S3点亮VL3。主程序部分:0RG0000HLJMPSTART0RG0003HLJMP0300HORG0100HSTART:MOVSP,#70HSETBIT0WAITOFF:SETBP3.2SETBEASETBEX0SJMP$子程序:DELAY:MOVR6,#0FFHDE2:MOVR7,#0FFHDE1:DJNZR7,DE1DJNZR6,DE2RETRING:MOVR5,#20HRIN0:MOVR6,#60HRIN1:MOVR7,#0F0HRIN2:DJNZR7,RIN2CPLP3.3DJNZR6,RIN1DJNZR5,RIN0RET中断服务程序:ORG0300H;中断服务程序ZDP:MOVA,P1;查哪个按钮按下ANLA,#0FHSWAPA;转换为点亮发光管信号ORLA,#0FHMOVP1,ALCALLRING;响铃LCALLDELAYRETI返回本章首页