主讲:武志翔邮箱:wuzhixiang_china@126.com2020/1/2111.MCS-51有多少个IO口2.为什么说MCS-51系列单片机的IO口准双向?3.几个并行口里面哪一个IO口没有上拉电阻?2020/1/212知识要点:◦(1)并行口及其应用◦(2)中断系统及其应用◦(3)定时器、计数器及其应用课程要求:◦(1)掌握并行口及其应用,包括基本结构、3种基本操作◦(2)掌握中断系统及其应用,包括基本结构、工作方式、初始化;◦(3)掌握定时器和技术的应用,包括基本结构和工作方式。◦(4)掌握串行口及其应用,包括基本结构、工作方式。2020/1/213知识要点:◦(1)并行口及其应用◦(2)中断系统及其应用◦(3)定时器、计数器及其应用课程要求:◦(1)掌握并行口及其应用,包括基本结构、3种基本操作◦(2)掌握中断系统及其应用,包括基本结构、工作方式、初始化;◦(3)掌握定时器和技术的应用,包括基本结构和工作方式。◦(4)掌握串行口及其应用,包括基本结构、工作方式。2020/1/214中断技术是单片机在实时处理和实时控制中不可缺少的重要环节。由于来自多方的中断请求都是随机发出的,如果采用查询方式来处理这些中断请求,则单片机的工作效率就会变的非常很低,实时性将得不到有效保证。2020/1/215所谓中断,是指在CPU执行程序的过程中,当出现某种情况,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行,而转去执行相应的处理程序,待处理程序执行完毕后,再返回来继续执行原来被打断的程序。也就是说,中断是通过硬件来改变CPU程序运行方向的一种技术,它既和硬件有关,也和软件有关。2020/1/216客人中断源敲门中断申请门卫、秘书中断系统客人登记中断标志识别、处理中断响应(过程)预约[CPU]中断允许(标志)接待[CPU]中断处理送客后继续工作[CPU]中断返回生活中MCU中2020/1/217主程序中断服务程序主程序子程序LCALLABCABC:RETRETI第K行第K+1行中断子程序的调用2020/1/218相同点:都是让CPU从主程序转去执行子程序,执行完毕又返回主程序。不同点:中断服务程序是随机的,而普通子程序是预先安排好的;中断服务子程序以RETI结束,而一般子程序以RET结束。RETI除将断点弹回PC动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应2020/1/219图5-8MCS-52单片机单片机中断系统结构图2020/1/21101、中断源8051有5个中断源:(1)外部中断源由INT0、INT1(P3.2、P3.3)端口线引入a、电平触发方式(低电平有效)b、脉冲触发模式(负跳变触发)(2)内部中断源定时器T0、T1溢出及串口的中断请求中断申请事件发生:如INT0端口上出现了低电平或下降沿。如T0定时器发生了溢出。2020/1/21112、中断控制(1)定时器控制寄存器TF1TF0IE1IT1IE0IT0TCON(88H)2020/1/21122、中断控制(1)定时器控制寄存器TF1TF0IE1IT1IE0IT0TCON(88H)1、IT1(IT0):外部中断1的中断触发方式控制位。IT1=1时,外部中断1程控为边沿触发方式。SETBIT0;INT0边沿触发CLRIT1;INT1电平触发2020/1/21132、中断控制(1)定时器控制寄存器TF1TF0IE1IT1IE0IT0TCON(88H)2、IE1(0):外部中断1的中断请求标志。INT1(P3.3)。当检测到外部中断引脚1上存在有效的中断请求信号时,由硬件使IE1置1。当CPU响应中断请求时,根据请求触发方式不同,有不同的清除方式。2020/1/21141、中断控制(1)定时器控制寄存器TF1TF0IE1IT1IE0IT0TCON(88H)3、TF1(0):定时器/计数器T1溢出中断请求标志位。当启动T1计数后,T1从初值开始加1计数,计数器最高位产生溢出时,由硬件使TF1置1,并向CPU发出中断请求。当CPU响应中断时,硬件将自动对TF1清0。2020/1/21152、中断控制(2)串行口控制寄存器SM0SM1SM2RENTB8RB8TIRISCON(98H)(1)TI—发送中断请求标志位。串口每发送完一帧串行数据后,硬件自动置“1”TI。必须在中断服务程序中用软件对TI标志清“0”。(2)RI—接收中断请求标志位。串口接收完一个数据帧,硬件自动置“1”RI标志。必须在中断服务程序中用软件对RI标志清“0”。2020/1/21162、中断控制(3)中断允许控制寄存器(IE)EA--ESET1EX1ET0EX0IE(A8H)(1)EA:中断允许总控制位0:CPU屏蔽所有的中断请求(CPU关中断);1:CPU开放所有中断(CPU开中断)。2020/1/21172、中断控制(3)中断允许控制寄存器(IE)EA--ESET1EX1ET0EX0IE(A8H)(2)ES:串行口中断允许位0:禁止串行口中断;1:允许串行口中断。2020/1/21182、中断控制(3)中断允许控制寄存器(IE)EA--ESET1EX1ET0EX0IE(A8H)(3)ET1:定时器/计数器T1的溢出中断允许位0:禁止T1溢出中断;1:允许T1溢出中断。2020/1/21192、中断控制(3)中断允许控制寄存器(IE)EA--ESET1EX1ET0EX0IE(A8H)(4)EX1:外部中断1中断允许位0:禁止外部中断1中断;1:允许外部中断1中断。2020/1/21202、中断控制(3)中断允许控制寄存器(IE)EA--ESET1EX1ET0EX0IE(A8H)EG:CLREACLREX0SETBET1EG:;屏蔽所有中断;屏蔽外部中断0中断;开放定时器1中断2020/1/21212、中断控制(4)中断优先级控制寄存器(IP)---PSPT1PX1PT0PX0IE(A8H)(1)PS——串行口中断优先级控制位1:高优先级中断;0:低优先级中断。(3)PX1——外部中断1中断优先级控制位1:高优先级中断;0:低优先级中断。(4)PT0——定时器T0中断优先级控制位1:高优先级中断;0:低优先级中断。(2)PT1——定时器T1中断优先级控制位1:高优先级中断;0:低优先级中断。2020/1/2122两条原则:(1)为了实现中断嵌套,高优先级中断请求可以中断低优先级的中断服务;反之则不允许。(2)同等优先级中断源之间不能中断对方的中断服务过程。中断源入口地址优先级外部中断00003H定时器计数器0000BH外部中断10013H定时器计数器1001BH串行口0023H2020/1/21231、中断响应过程中断受阻(1)CPU正在处理同级的或更高优先级的中断。(2)所查询的机器周期不是所当前正在执行指令的最后1个机器周期。只有在当前指令执行完毕后,才能进行中断响应。(3)正在执行的指令是RETI或是访问IE或IP的指令。需要再去执行完一条指令,才能响应新的中断请求。2020/1/21241、中断响应过程中断响应条件(1)IE寄存器中的中断总允许位EA=1。(2)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。(3)该中断源的中断允许位=1,即该中断没有被屏蔽。(4)无同级或更高级中断正在被服务。2020/1/21251、中断响应过程中断响应条件(1)IE寄存器中的中断总允许位EA=1。(2)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。(3)该中断源的中断允许位=1,即该中断没有被屏蔽。(4)无同级或更高级中断正在被服务。2020/1/21261、中断响应过程中断主要过程中断响应的主要过程:首先由硬件自动生成一条长调用指令:LCALLaddr16接着就由CPU执行该指令,将PC的内容压入堆栈以保护断点,再将中断入口地址装入PC。各中断源服务程序的入口地址固定。2020/1/21272、中断响应时间外部中断的最短的响应时间为3个机器周期:(1)中断请求标志位查询占1个机器周期。(2)子程序调用指令LCALL转到相应的中断服务程序入口,需2个机器周期。外部中断响应的最长的响应时间为8个机器周期:(1)发生在CPU进行中断标志查询时,刚好是开始执行RETI或是访问IE或IP的指令,则需把当前指令执行完再继续执行一条指令后,才能响应中断,最长需2个机器周期。(2)接着再执行一条指令,按最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期。(3)加上硬件子程序调用指令LCALL的执行,需要2个机器周期。2020/1/21281.定时器/计数器中断请求的撤消中断请求被响应后。硬件会自动清TF0或TF1。2.外部中断请求的撤消(1)跳沿方式外部中断请求的撤消是自动撤消的。(2)电平方式外部中断请求的撤消:除了标志位清“0”之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平,如图5-9所示。2020/1/21293.串行口中断请求的撤消响应串行口的中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行口中断请求的撤消只能用软件清除CLRTI;清TI标志位CLRRI;清RI标志位2020/1/21305.4外部中断5.5利用外部中断控制外设的数据传送5.8利用优先编码器扩展外部中断2020/1/21315.4外部中断ORG0000HLJMPMAINORG0003HLJMPWINT0;中断服务程序ORG0030HMAIN:MOVSP,#60H;设置堆栈指针SETBEA;中断开关打开SETBEX0;中断0源允许SETBIT0;脉冲触发CLRP1.7L:SJMPLWINT0:CPLP1.7RETIEND2020/1/21325.4外部中断,首先通过P1.7口点亮发光二极管,然后由外部输入一脉冲串,则发光二极管亮、暗交替。2020/1/2133XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C130PFC230PFC310uFX1CRYSTALR110k(A)ABCDR2200D2LED-GREEN2020/1/21345.5利用外部中断控制外设的数据传送ORG0000HLJMPMAINORG0003H;外部中断0LJMPWINT0ORG0030HMAIN:MOVSP,#60HSETBEA;打开中断总开关SETBEX0;打开外部中断0CLRIT0;电平触发L:SJMPLWINT0:CLRP3.0SETBP3.0MOVP1,#0FFHMOVA,P1MOVP2,ARETIEND2020/1/21355.5利用外部中断控制外设的数据传送XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5