




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第4章80C51单片机I/O端口及应用24.1P0口4.2P1口4.3P2口4.4P3口4.5I/O口简单输入输出设计4.6单片机I/O口控制电磁继电器4.7单片机I/O口控制光耦4.8单片机I/O口控制双向可控硅4.8.1晶闸管工作原理4.8.2单片机I/O口控制双向可控硅接口设计4.9单片机I/O口控制固态继电器3第4章80C51单片机I/O端口及应用80C51单片机共有4个8位双向I/O端口,即P0~P3口,它们都被定义为SFR,可以按字节寻址输入或输出,每一位还能按位寻址,便于实现位控功能。P0口为三态双向口,负载能力为8个LS型TTL门电路,作为一般的I/O口使用时,P0口是一个准双向口。P1、P2、P3口也为准双向口(用作输入线时,口锁存器必须先写入“1”,故称为准双向口),负载能力为4个LS型TTL电路。44.1P0口P0口是具有双功能的8位并行I/O口,字节寻址地址为80H,位地址为80H~87H。1.P0口的位电路结构P0口的8位都具有如图4-1所示的位电路结构,由1个锁存器、1个转换开关、2个场效应管构成的输出驱动电路、2个输入缓冲器、1个反相器及1个与门构成。图4-1P0口的位电路结构52.P0口工作原理(1)P0口作为地址/数据总线分时复用口当80C51单片机外部扩展存储器或者I/O接口芯片,需要P0口作为地址/数据总线分时使用时,“控制”信号输出高电平;转换开关MUX将T2与反相器输出端接通,同时“与门”开锁,“地址或数据”信号通过与门驱动T1管,并通过反相器驱动T2管,使得P0.x引脚的输出状态随“地址/数据”状态的变化而变化。具体输出过程如下。①当“地址/数据”内容为1时,“与门”输出1,T1场效应管导通,而T2场效应管截止,P0.x输出为1;②当“地址/数据”内容为0时,“与门”输出0,T1场效应管截止,而T2场效应管导通,P0.x输出为0。可见上方场效应管起到内部上拉电阻作用。6(2)P0口作为通用I/O口当80C51单片机不作地址/数据总线使用时,可作为第一功能,即通用I/O口使用,此时“控制”信号输出为低电平;MUX将T2与锁存器的Q反端接通。同时,“与门”输出为低电平,使得场效应管T1处于截止状态,此时输出级是漏极开路的开漏电路。P0口用作一般I/O口的具体过程如下。①P0口作为I/O口输出时,来自CPU的“写”脉冲加在锁存器时钟端CP上,由内部总线输出的数据从D端进入,经反相后出现在Q反端,再经T2管反相,于是在P0.x位引脚上的数据正好与内部总线上输出数据一致。
注意,当P0口作输出口使用时,输出级属开漏电路,在P0.x引脚应外接上拉电阻。7②P0口作为I/O口输入时,端口中的两个三态缓冲器用于读操作。有2种读操作:读锁存器和读引脚。“读引脚”:当执行一般的端口输入指令时,引脚上的外部信号既加在三态缓冲器BUF2的输入端,又加在场效应管T2漏极上,若此时T2导通,则引脚上的电位被钳在0电平上。为使读引脚能正确地读入,在输入数据时,要先向锁存器置“1”,使其Q反端为0,使输出级T1和T2两个管子均被截止,引脚处于悬浮状态;作高阻抗输入。“读引脚”脉冲把三态缓冲器打开,于是引脚上的数据经缓冲器到内部总线;“读锁存器”:这种读操作是为了“读-修改-写”指令的需要。即先读端口,对读入的数据修改,然后再写入锁存器。例如,逻辑与、或非等指令。83.P0口使用总结综上所述,P0口在使用时有如下说明:(1)当P0口用作地址/数据总线使用时(第2功能),是一个真正的双向口,直接与外部扩展的存储器或I/O连接,输出/输入8位数据作为数据,同时通过与地址译码器连接,输出低8位地址。(2)当P0口作通用I/O口使用时(第1功能),需要在片外接上拉电阻,此时端口不存在高阻抗的悬浮状态,因此是一个准双向口。(3)P0口读引脚(端口)时,输出锁存器需要先置“1”再读。若没有置“1”,将读出锁存器内容。【例4-1】读P0.3引脚,若为高电平,将变量aa加1。读引脚前,先将P0口置1。unsignedintaa=0x00,sbitP0_3=P0^3;P0=0xff;while(P0_3==1){aa=aa+1;}94.2P1口P1口是一个内部自带上拉电阻的8位准双向I/O口。80C51单片机P1口只作通用I/O口,字节寻址地址为90H,位地址为90H~97H。1.P1口的位电路结构P1口的8位都具有如图4-2所示的位电路结构,由1个锁存器、1个场效应管输出驱动电路、2个输入缓冲器、1个上拉电阻构成。图4-2P1口的位电路结构102.P1口的工作原理(1)当P1口作输出口时,若内部总线将“1”写入锁存器,使输出场效应驱动管T截止,输出线由内部上拉电阻拉成高电平;若内部总线将0写入锁存器时,T导通,输出0。(2)当P1口作输入口时,分读引脚和读锁存器状态两种情况:读引脚时,打开下面三态门BUF2,可读入引脚上信息;读锁存器状态时,将打开上面三态门BUF1,此时Pl口进行“读-修改-写”操作。①P1口读引脚输入信息时,必须先置“1”锁存器,使T截止;此时,输入端的电平随输入信号而变,经缓冲器BUF2进入内部总线。②P1口读锁存器:锁存器内容经打开的BUF1,进入内部总线。113.P1口使用总结综上所述,P1口在使用时有如下说明:(1)P1口内部具有上拉电阻,可以直接被集电极开路或漏极开路的电路驱动,不必外接上拉电阻。(2)P1口内部自带上拉电阻,没有高阻抗输入状态,是8位准双向口。(3)P1口读引脚(端口)输入时,必须先向锁存器置“1”,再读锁存器。124.3P2口P2口是一个具有双功能的8位准双向I/O口。字节寻址地址A0H,位地址A0H~A7H。1.P2口位电路结构P2口的8位都具有如图4-3所示的位电路结构,由1个锁存器、1个切换开关、1个场效应管输出驱动电路、2个输入缓冲器及1个反相器构成。图4-3P2口的位电路结构132.P2口的工作原理P2口既可以作高8位地址总线使用,也可以作为I/O口使用。(1)P2作为高8位地址总线输出:受内部“控制”信号作用,多路开关MUX向上与“地址”输出信号接通,经反相器和场效应管反相后,“地址”信号输出在端口引脚线上。(2)P2口作为通用I/O口使用:受内部“控制”信号作用,多路开关MUX向下与锁存器输出端Q接通。①CPU输出数据“1或0”时,数据经内部总线进入锁存器,由锁存器Q输出经反相器和场效应管反相后,输出在端口引脚线上,P2.x输出数据与CPU输出数据一致。②当P2口作输入口时,有读引脚和读锁存器状态两种情况。读引脚时,必须先置“1”锁存器,使T截止;P2.x引脚上的电平经下面三态门BUF2进入内部总线。读锁存器状态时,上面三态门BUF1打开,此时P2.x锁存器内容经Q端通过BUF1进入内部总线,属于“读-修改-写”操作。143.P2口使用说明(1)P2作高8位地址总线时,与P0口输出的(经地址锁存器输出的)低8位地址总线共同构成16位地址总线,寻址64KB存储器或者I/O接口地址空间。(2)P2作为通用I/O口使用时,是一个准双向口,当读引脚(端口)输入时,须先向锁存器置“1”,再读锁存器。154.4P3口P3口是具有双功能的8位准双向I/O口。字节寻址地址为B0H,位地址为B0H~B7H。1.P3口的位电路结构P3口的8位都具有如图4-4所示的位电路结构,由1个锁存器、1个与非门、1个场效应管驱动电路、2个输入缓冲器、1个上拉电阻构成。由图可见,P3端口的各端口线有第二输入功能、第二输出功能、通用I/O口功能选择。图4-4P3口的位电路结构162.P3口的工作原理(1)第二输入功能及第二输出功能①当P3口作为第二输入功能时,锁存器须先置“1”,“第二输出功能”端此时也为1,“与非门”输出为0,保证场效应管T截止,P3.x引脚的信号经过输入缓冲器得到。②当P3口作为第二输出功能时,锁存器也必须先置“1”,打开“与非门”,则“第二输出功能”线输出的“0或1”信号经过“与非门”和场效应管T的2次反向,使得P3.x内容与第二输出功能线输出的内容一致。17(2)当P3口作为第一功能,即I/O口功能时,也分2种情况。①P3作为I/O输出时,“第二输出功能”输出高电平,“与非门”开启。CPU输出的“1或0”信号,由内部总线经锁存器输出,经过“与非门”和场效应管2次反向,使得P3.x引脚输出与CPU输出一致。②P3口作I/O输入时,若要“读引脚”,输出锁存器同样需要置“1”,“第二输出功能”端也置1,使得场效应管T截止,P3.x引脚信息经下端2个输入三态门到内部总线。如果锁存器不置1就读,则锁存器锁存内容经Q端输出,通过读锁存器控制的三态门到内部总线,实现读锁存器操作。183.P3口使用说明(1)P3口内部具有上拉电阻,没有高阻态,为准双向口,不必外接上拉电阻。(2)P3口优先考虑第二功能,某一位只有不作为第二功能使用时,才可考虑I/O口的功能。(3)P3口读引脚(端口)输入和第二功能输入时,必须先向锁存器置“1”,再读锁存器。194.5I/O口简单输入输出设计【例4-2】开关控制8只LED计数与显示电路如图4-5所示,P3.1连接开关SW1,将P1.0~P1.7连接8个发光二极管LED0~LED7;编写程序实现SW1每上下拨动一次,8个发光二极管按16进制方式加一点亮。2021参考程序如下:#include<reg51.h>sbitP3_1=P3^1;voiddelay(unsignedinti)//延时{unsignedintj,k;for(k=0;k<i;k++)for(j=0;j<125;j++);}22voidmain(void){unsignedintx=0x00,temp=0x00;P1=0xff;while(1){while(P3_1==1);//P3.1为高电平delay(10);//调用延时程序while(P3_1==0);//P3.1为低电平delay(10);//调用延时程序x=x+1;temp=x;x=~x;//二极管低电平点亮P1=x;//送P1口x=temp;
}}23【例4-3】利用单片机的P1口接8个发光二极管,P2口接8个开关,要求实现:当开关动作时,对应的发光二极管亮或灭,电路如图4-6所示。只须把P2口的内容读出后,通过P1口输出即可。2425参考程序:#include<reg51.h>voidmain(void){unsignedchari;P2=0xff;for(;;){i=P2;P1=i;}}264.6单片机I/O口控制电磁继电器在控制系统中,常常存在电子电路与电气电路的互相连接问题,需要电子电路控制电气电路的执行元件,例如电动机、电磁铁、电灯等,同时实现电子线路与电气电路的电隔离,以保护电子电路和人身的安全,继电器在其中起了重要的桥梁作用。继电器有固态继电器SSR和电磁继电器,常用的继电器大部分属于电磁式继电器,电磁继电器是自动控制电路中常用的一种元件,是用较小电流控制较大电流的一种自动开关。电磁继电器是由铁芯、线圈、衔铁、触点以及底座等构成,触点有动触点和静触点之分。固态继电器是一种由集成电路和分立元件组合而成的一体化无触点电子开关器件,其功能与电磁继电器基本相似。271.电磁继电器的电路符号和触点形式电磁继电器的线圈只有一个,但其带触点的簧片则常设置多组。在电路中,表示继电器时可画出线圈与控制电路的有关触点。线圈用长方框表示,标有继电器的文字符号K或KR。触点有两种表示方法:一种是把它们直接画在长方框的一侧,此表示法比较直观;另一种是把各个触点分别画到各自的控制电路中,常在同一继电器的触点与线圈旁分别标注相同的文字符号,并将触点组编号,以示区别。继电器的触点有三种形式。(1)动合型(H型)线圈不通电时,两触点是断开的,通电后,两个触点闭合(以合字的拼音字头“H”表示)。(2)动断型(D型)线圈不通电时,两触点是闭合的,通电后,两个触点断开(用断字的拼音字头“D”表示)。28(3)转换型(Z型)这是触点组型。这种触点组共有3个触点,中间是动触点,上下各一个静触点。线圈不通电时,动触点和一个静触点接触(一个断开,另一个闭合),线圈通电后,动触点就移动,使原来断开的闭合,原来闭合的断开,达到转换的目的。触点组称为转换触点,用“转”字的拼音字头“Z”表示。电磁继电器的常用符号如图4-7所示。在电路中,触点的画法应按线圈不通电时的原始状态画出。29302.电磁继电器的工作原理电磁继电器是一种功率开关器件,输入开关信号,只要让继电器的吸合线圈通过一定的电流,线圈产生的磁力就会带动衔铁移动,从而带动开关点的接通和断开,由此控制电路的通或断。电磁继电器主要用于低压控高压或小电流控大电流的场合,由于继电器的强电触点与吸合线圈之间是隔离的,所以继电器控制输出电路不需要专门设计隔离电路。313.电磁继电器接口电路【例4-4】利用单片机I/O口控制继电器的开合,实现对外部装置的控制。电路如图4-8,由于单片机引脚的驱动能力有限,控制端P2.5引脚连接一个NPN三极管,当P2.5输出低电平时,继电器不工作,当P2.5输出高电平时,继电器工作,常开触点吸合,LED将随继电器的开关连接到电源端而点亮。图中,继电器电路中,在继电器的线圈两头加一个二极管D1以吸收继电器线圈断电时产生的反电势,从而保护晶体管,防止干扰。32#include<reg51.h>sbitP2_5=P2^5;voiddelay(unsignedinti){unsignedintj,k;for(k=0;k<i;k++)for(j=0;j<125;j++);}voidmain(void){while(1){P2_5=0;delay(1000);P2_5=1;delay(1000);}}334.7单片机I/O口控制光耦在单片机控制系统中,单片机总要对被控对象实现控制操作。后向通道是计算机实现控制运算处理后,对被控对象的输出通道接口。后向通道的特点是弱电控制强电,即小信号输出实现大功率控制。常见的被控对象有电机、电磁开关等。后向通道往往所处环境恶劣,控制对象多为大功率伺服驱动机构,电磁干扰较为严重。为防止干扰窜入和保证系统的安全,通常采用光电耦合器实现信号的传输,同时又可将系统与现场隔离开。光电耦合器具有体积小、使用寿命长、工作温度范围宽、抗干扰性能强,无触点且输入与输出在电气上完全隔离等特点,因而在各种电子设备上得到广泛的应用。光电耦合器可用于隔离电路、负载接口及各种家用电器等电路中。341.光电耦合器的封装及组合光电耦合器有金属封装和塑料封装两种形式。金属封装采用金属外壳,且用玻璃绝缘,芯片采用环焊以保证发光管与接收管对准。塑料封装采用双列直插式结构,管芯先装于管脚上,中间用透明树脂固定,具有聚光作用,故灵敏度较高,较为常用。常用的光电耦合器组合形式有4种,如图4-9所示。其中,图4-9(a)是普通型光电耦合器,用于100kHz以下频率的装置中;图4-9(b)是高速型光电耦合器,响应速度高;图4-9(c)是达林顿输出型光电耦合器,具有达林顿输出的一切特性,可直接用于驱动较低频率的负载;图4-9(d)是晶闸管输出型,其输出部分为光控晶闸管,常用于大功率的隔离驱动场合。在实际应用中,可根据实际需要选用结构简单的器件,以降低成本。35362.光电耦合器的工作原理
光电耦合器是通过光电元件来实现功能的。光电元器件是一种光电转换装置,它的输出特性与二极管或三极管基本相同,不同的是光电元器件接收的是光能量。以光电三极管为例,其导通与截止,是由发光二极管所加正向电压控制的。当发光二极管加上正向电压时,发光二极管有电流通过发光,使光电三极管内阻减小而导通;反之,当发光二极管不加正向电压或所加正向电压很小时,发光二极管中无电流或通过电流很小,发光强度减弱,光电三极管的内阻增大而截止。由于发光二极管与光电三极管之间是通过光来传递信息的,没有电气上的联系,从而实现了电气上的隔离。因此,光电耦合器广泛地应用于信号隔离、开关电路、数模转换、逻辑电路、长线传输、过载保护、高压控制和电路变换。373.光电耦合器的接口电路光电耦合技术广泛用于测量控制系统,典型的光电耦合器TLP521-4的应用电路如图4-10所示,其中,D为发光二极管,VCC为工作电源,R1为限流电阻,R2为三极管负载电阻,当P1.0~P1.3输出高电平时,发光二极管无电流流过,因此不发光,光电三极管T没有接收到光能量,处于截止状态,输出电压Vo=VCC。当P1.0~P1.3输出低电平时,有电流流过4个发光二极管D1~D4,产生红外光线,T1~T4接收到光能量,从工作区进入饱和区,光电三极管导通,VO1~VO4均为0V,输出低电平。38
光电耦合器可以作为测控系统输入接口或者输出接口,光电耦合器作为单片机输入设备隔离器的例子参考第5章【例5-5】。39【例4-5】用单片机I/O口控制光电耦合器,电路如图4-11所示,当P2.7引脚输出低电平时,光耦工作,使灯泡点亮。40参考程序如下:#include<reg51.h>sbitP2_7=P2^7;voiddelay(unsignedinti){unsignedintj,k;for(k=0;k<i;k++)for(j=0;j<125;j++);}voidmain(void){while(1){P2_7=0;delay(1000);P2_7=1;delay(1000);}}414.8单片机I/O口控制双向可控硅4.8.1晶闸管工作原理晶闸管又称为可控硅(SCR),是一种大功率半导体器件,它既可作为控制开关,又具有单向导电的整流功能。通常晶闸管作为用较小的功率控制较大的功率的接口。在交、直流电动机调速系统、调功系统、随动系统和无触点开关等方面均获得广泛的应用。晶闸管分单向可控硅和双向可控硅2类。421.单向可控硅单向可控硅电路如图4-12所示,具有三个电极:阳极A、阴极C、控制极(门极)G。当控制极G不加电压时,其AC两端加上正向电压,正向电流很小,晶闸管并不导通,处于正向阻断状态;当AC加上正向电压,且控制极上G也加上正向电压时,晶闸管便进入导通状态。此时,管压降仅1V左右,当控制电压消失,晶闸管仍保持导通状态。控制电压通常采用脉冲形式,以降低触发功耗。晶闸管不具有自关断能力,要切断负载电流,只有使阳极电流减小到维持电流以下,或加反向电压来关断。在交流回路中应用,当电流过零和进入负半周时,自动关断,需再次导通,必须重加控制信号。图4-12单向可控硅电路432.双向晶闸管交流电路中常采用双向晶闸管,如图4-13所示,把两只反并联的晶闸管制作在同一片硅片上,控制极共用一个,以保证电流能沿正反两个方向流通。其原理说明如下。(1)控制极G不加电压时,A、C间呈高阻抗,管子截止。(2)当AC间电压>1.5V时,不论极性如何,均可使G触发电流控制其导通。(3)交流工作时,当每一半周交替时,纯阻负载一般能恢复截止;但在感性负载情况下,电流相位滞后于电压,电流过零,可能反向电压超过转折电压,使管子反向导通。所以,要求管子能承受反向电压,一般要加RC吸收回路。(4)A、C可调换使用,触发极性可正可负。44
双向可控硅经常用作交流调压、调温、调功和无触点开关,以往用硬件产生触发脉冲的测控方式不够灵活,在单片机测控系统中可利用软件产生触发脉冲。图4-13双向晶闸管结构454.8.2单片机I/O口控制双向可控硅接口设计光耦合双向可控硅驱动器常作为单片机输出与双向可控硅之间较理想的接口器件,典型的产品有MOTOROLA公司的MOC3000系列的光耦合双向可控硅驱动器,一般为六引脚双列直插式封装,由发光二极管和双向可控硅两部分组成,发光二极管常由砷化镓发光二极管构成,在正向电流(5~15mA)作用下能发出红外光,触发硅光敏双向可控硅双向导通。单片机I/O口控制双向可控硅接口典型电路如图4-14所示,通常利用软件控制单片机I/O口,使得光耦合双向可控硅驱动器发光,光敏双向可控硅双向导通,进一步触发外部的双向晶闸管导通。当P2.0输出高电平时,MOC3052输出端的双向晶闸管关断,外部双向晶闸管也关断。电阻R1的作用是限制流过MOC3052输出端的电流。46图4-14光耦合双向可控硅驱动器接口电路47【例4-6】用单片机I/O口控制双向可控硅,电路如图4-15所示,当按下K1开关并释放时,单片机P2.0取反。当P2.0为0时,光耦导通并触发可控硅,灯泡L1点亮,反之则熄灭。图4-15单片机I/O口控制双向可控硅48参考程序如下:#include<reg51.h>sbitP2_0=P2^0;sbitK1=P1^0;voiddelay(unsignedinti){unsignedintj,k;for(k=0;k<i;k++)for(j=0;j<125;j++);}voidmain(void){ P2_0=1;while(1){if(K1==0){delay(10); if(K1==0) {while(K1==0); P2_0=~P2_0;}}}}494.9单片机I/O口控制固态继电器固态继电器是一种新型的无触点电子继电器,其输入端仅要求输入很小的控制电流,与TTL、HTL、CMOS等集成电路具有较好的兼容性,输入端可以控制输出端的通断。1.固体继电器内部结构固态继电器是一种四端器件,固体继电器内部结构如图4-16所示,由输入端、输出端、光耦合器、过零开关和吸收电路组成。具有两端输入和两端输出,输入输出之间用光耦合器隔离。过零开关使得输出开关点在输出端电压在过零的瞬间接通或者断开,以减少由于开关电流造成的干扰。为了防止外电路中的尖峰电压或浪涌电流对开关器件造成的破坏,在输出端回路并联有吸收网络。502.固态继电器的主要特点(1)低噪声。过零型固态继电器在导通和断开时都是在过零点进行的。(2)可靠性高。因为没有机械触点,全封闭封装,所以耐冲击、耐腐蚀、寿命长。(3)承受浪涌电流大。一般可达额定值的6~10倍。(4)驱动功率小。驱动电流只须10mA。(5)对电源的适应性强。(6)抗干扰能力强。图4-16固体继电器内部结构513.单片机控制固态继电器的接口图4-17是使用固态继电器实现控制单向伺服电动机可逆运转的实例。图4-17单片机控制固体继电器52习题4一、填空题1.P0的功能是。2.P3口中P3.5位的第二功能符号为。3.若要从80C51的P1口输入数据,必须对该口先。4.80C51的并行I/O口(P0-P3)用作通用I/O口时,当口由原输出状态变为输入状态方式时,应先向口的锁存器进行操作,再进行输入操作才正确。5.80C51单片机复位时,P0~P3口的各引脚为电平。53二、简答题1.简述80C51内部四个并行I/O口的功能。三、编程题1.编写程序,从P1.6引脚输出10个方波。2.编程读P1.4-P1.7口的开关状态,并送P1.0-P1.3指示灯显示。
第5章80C51单片机的中断系统
54555.1中断的概念5.280C51中断系统的结构5.2.1中断源及中断标志位5.2.2中断控制寄存器5.3中断响应过程5.4中断服务函数及应用5.4.1中断服务函数5.4.2外部中断服务函数应用设计56第5章80C51单片机的中断系统本章介绍80C51单片机片内重要功能部件中断系统的结构、工作原理和应用设计,通过本章的学习,读者重点掌握中断系统相关的特殊功能寄存器的使用,能熟练设计中断系统初始化程序以及中断函数。5.1中断的概念在嵌入式系统(包括单片机)应用中,当内部、外部随机事件发生时,能及时响应并实时处理都是利用中断技术实现的。中断是指CPU正在执行程序的过程中,CPU内部或外部某一事件(如内部定时器/计数器的溢出或外部信号通过某一个引脚发生电平的变化、引脚脉冲沿跳变等)作为中断源向CPU发出中断请求信号,要求CPU暂时终止当前正在执行的程序,转去执行相应的中断服务程序,待中断服务请求处理完毕后,再回到原来被中断的程序处(断点)继续执行。这种程序在执行过程中由于内部或外界的随机事件而被中间打断的情况称为“中断”。单片机对中断源中断服务请求的整个响应和处理过程如图5-1所示。57图5-1单片机中断响应和处理过程图
中断的发生是由内部或外部因素随机决定的,程序中无法事先安排调用指令,所以响应中断服务程序的过程是由硬件自动完成的。这种模式的实现依靠中断系统,中断系统是单片机的重要组成部分,实时控制、故障自动处理、计算机与外设间数据传送一般采用中断系统。中断系统的应用大大提高了单片机的工作效率。80C51单片机具有比较完善的中断系统,下面介绍其中断系统的结构及功能。585.280C51中断系统的结构80C51中断系统的结构如图5-2所示。80C51单片机系统有5个中断请求源,分为两个中断优先级,中断服务程序可实现两级嵌套,中断系统功能的实现是通过软件对SFR进行控制,每个中断源可独立设置为允许中断或关中断状态,每个中断源可独立设置为高优先级或低优先级。5.2.1中断源及中断标志位80C51单片机有5个,各中断源是否有中断请求,是由中断请求标志位来表示的。中断源及请求标志位如表5-1所示。中断源的中断请求标志位分别由TCON和SCON的相应位锁存。59表5-1中断源及标志位60图5-280C51中断系统结构示意图615.2.2中断控制寄存器80C51通过对4个特殊功能寄存器的设置来控制5个中断源是否允许中断、各中断源的中断优先级别、中断申请方式以及标识是否有中断请求等。用于中断控制和标识的4个SFR分别是:定时器/计数器及外部中断控制寄存器TCON、串行口控制寄存器SCON、中断允许控制寄存器IE以及中断优先级控制寄存器IP。
1.TCONTCON字节地址为88H,每位可以单独寻址和设置,每位名称、位地址及含义如表5-2所示。TCON中包含2位外部中断请求源的中断触发方式控制位,还包括与中断有关的4位标志位。表5-2TCON寄存器62
(1)TCON中与外部中断有关的2位控制位①IT0:外部中断0的中断触发方式控制位。IT0=0时,外部中断0为电平触发方式,当引脚P3.2为低电平,则IE0自动置1,表示有中断请求。IT0=1时,外部中断0为跳沿触发方式,若CPU检测到引脚P3.2有由高到低的负跳边沿时,则使IE0置1,表示有中断请求。②IT1:外部中断1的中断触发方式控制位。其含义与IT0类同。(2)外部中断触发方式有关外部中断触发方式的说明如下。若ITx(x=0,1)=0,为电平触发方式,在引脚P3.2(P3.3)上被检测的低电平必须保持到CPU响应该中断时为止,且在中断服务程序返回前变为高电平,以免在中断返回后又再次响应该中断而出错。所以电平触发方式适用于外部中断请求输入为低电平(为被CPU采样到,低电平应至少保持12个振荡周期),且能在中断服务程序中撤销请求源的情况。63
②若ITx=1,则为跳沿触发方式。CPU在连续的两个机器周期中,前一个机器周期从P3.2(P3.3)引脚上检测到高电平,后一个机器周期检测到低电平,才置位IEx(IE0或IE1),由IEx发出中断请求。所以跳变触发方式的外部中断,要求输入的负脉冲宽度至少保持12个振荡周期,以确保检测到引脚上的电平跳变。(3)TCON中与中断有关的标志位TCON中与中断有关的标志位有4位,功能如下。①IE0:外部中断0的中断请求标志位。当单片机检测到外部中断0引脚(P3.2)上出现有效的中断请求信号时,由硬件使IE0置1。当CPU响应该中断请求时,由硬件自动对IE0清0。②IE1:外部中断1的中断请求标志。其含义与IE0类同。③TF0:定时器/计数器T0的溢出中断请求标志位,启动定时器T0后,T0从设置初值开始加1计数。当计数器T0最高位产生溢出时,由硬件自动对TF0置1,并向CPU发出中断请求。当CPU响应中断时,由硬件自动使TF0清0。64
④TF1:定时器/计数器T1的溢出中断请求标志位。含义与TF0相同。2.SCONSCON字节地址为98H,每位可以单独寻址和设置,每位名称、位地址及含义如表5-3所示。SCON中包含2位与串口中断有关的标志位。表5-3SCON寄存器
(1)串行口发送中断请求标志TI当CPU每发送完一帧数据后,此时SBUF寄存器空,硬件自动对TI置1,请求中断。CPU响应中断后,必须在中断服务程序中用指令对TI清0。65
(2)串行口接收中断请求标志RI当串行口接收完一帧数据时,此时SBUF寄存器满,硬件自动对RI置1,请求中断。CPU响应中断后,必须在中断服务程序中用指令对RI清0。3.中断允许控制寄存器IEIE字节地址为A8H,每位可以单独寻址并设置,每位名称、位地址及含义如表5-4所示。80C51单片机对中断的开放和关闭采用两级控制。第一级是设置了1个总中断控制位EA(IE.7位),第二级设置了5个中断源的中断开放与否的中断请求允许控制位。表5-4IE寄存器66
(1)中断允许总控制位EAEA=0,关闭所有中断;EA=1,开放所有中断,但是否允许各中断源的中断请求,还取决于各中断源的中断允许控制位的设置。(2)串行口的中断允许位ESES=0:禁止串口中断;ES=1:允许串口中断。(3)定时器/计数器T1的中断允许位ET1ET1=0:禁止T1中断;ET1=1:允许T1中断。(4)外部中断1()的中断允许位EX1EX1=0:禁止外部中断1中断;EX1=1:允许外部中断1中断。(5)定时器/计数器T0的中断允许位ET0ET0=0:禁止T0中断;ET0=1:允许T0中断。67
(6)外部中断0()的中断允许位EX0EX0=0:禁止外部中断0中断;EX0=1:允许外部中断0中断。
4.中断优先级控制寄存器IP80C51单片机设有两级中断优先级,可设置IP寄存器相应位实现2级中断优先级选择。IP字节地址为B8H,各位名称、位地址及含义如表5-5所示。表5-5IP寄存器
(1)串行口中断优先级控制位PSPS=1,设置串口高优先级;PS=0,设置串口低优先级。(2)定时器/计数器T1中断优先级控制位PT168
PT1=1,设置T1高优先级;PT1=0,设置T1低优先级。(3)外部中断1优先级控制位PX1PX1=1,设置外部中断1高优先级;PX1=0,设置外部中断1低优先级。(4)定时器/计数器T0中断优先级控制位PT0PT0=1,设置T0高优先级;PT0=0,设置T0低优先级。(5)外部中断0中断优先级控制位PX0PX0=1,设置外部中断0高优先级;PX0=0,设置外部中断0低优先级。80C51单片机复位后,IP=0,5个中断源都处于低优先级中断。80C51单片机中断系统设置中断优先级控制寄存器IP和中断允许寄存器IE后,如果几个同一优先级的中断源同时向CPU申请中断,CPU通过内部顺序查询逻辑电路,按自然优先级顺69序确定应该响应哪个中断请求。自然优先级由硬件形成,其排列如表5-6所示,依次为外部中断0、定时器0溢出中断、外部中断1、定时器1溢出中断、串行口中断。5个中断源中断请求响应后,程序分别转向对应的5个固定的中断入口地址(中断向量),具体地址如表5-6所示。表5-6中断源入口地址及同一优先级下的自然优先序
【例5-1】若允许开放外部中断0、外部中断1中断,并选择外部中断0为跳沿触发方式,外部中断1为电平出发方式,并设置外部中断1具有高的优先级。参考程序如下:70{……EA=1; //开放总中断EX0=1; //允许外部中断0中断EX1=1; //允许外部中断1中断IT0=1; //设置外部中断0为跳沿触发方式IT1=0; //设置外部中断1为电平触发方式PX1=1; //外部中断1具有高优先级……}5.3中断响应过程80C51单片机对中断源中断请求作出响应,必须满足中断响应条件;中断请求也会遇到被封锁的情况,中断还会出现嵌套,本节讨论中断响应的过程及中断响应时间。1.满足中断响应需要的条件CPU对中断请求进行响应,必须检测到下面5个条件。(1)中断允许总控制位开放,即EA=1。71
(2)某一中断源有请求信号,即中断源对应的中断标志位为1。(3)该中断源对应的中断允许位置1。(4)无同级或更高级中断正在服务。 (5)当前的指令周期已经结束,且当前指令不是RETI或访问IE和IP的指令。CPU响应中断时,第一步置位相应的优先级激活触发器,以便封锁同级和低级的中断。第二步,把程序计数器PC的内容压入堆栈(但不自动保存程序状态字PSW),同时把被响应的中断服务程序的入口地址装入PC中。第三步,在硬件的控制下,程序转向被响应的中断向量,执行中断请求需要的中断服务程序。
2.中断请求被封锁的情况单片机CPU在每个机器周期的S5P2节拍采样中断标志,在下一个机器周期对采样到的中断源查询。如果遇到下列3种情况之一时,对该中断源的响应被封锁。72
(1)CPU正在处理同级或高级的中断。(2)现行的机器周期不是当前所执行指令的最后一个机器周期。(3)当前正在执行的指令是中断返回指令(RETI)或是对IE或IP寄存器访问的指令。
3.中断的嵌套80C51单片机有两个中断优先级。当CPU正在执行中断服务程序时,又有其他中断源发出中断申请,CPU要分析判断,决定是否响应该中断。判决规则如下:(1)若是同级中断源申请中断,CPU将不予理睬;(2)若是高级中断源申请中断,CPU将转去响应高级中断请求,待高级中断服务程序执行完毕,CPU再转回低级中断服务程序断点处接着执行。这就是中断的嵌套,二级中断嵌套程序执行过程如图5-3所示。73图5-380C51中断的嵌套调用过程
4.中断响应时间以外部中断响应为例,单片机在每个机器周期的S5P2时,采集外部中断和的引脚电平,并锁存到IE0和IE1中,这个设置IE0和IEl的标志位在下一个机器周期才被查询电路查询。如果产生了中断请求,而且满足响应的条件,CPU响应中断后,由硬件生成一条双机器周期的长调用指令转到相应的中断向量处,因此,74从中断请求有效到执行中断服务程序的时间间隔至少需要3个完整的机器周期。如果中断请求被封锁,那么80C51将需要更长的响应时间。(1)若同级的或高优先级中断已经在执行,则等待时间取决于正在处理的中断服务程序的长度。(2)若正在执行的是RETI指令或者是访问IE或IP指令,指令执行时间为2个机器周期,则CPU接着还需要执行一条指令才响应中断,如果这条指令是需要最长时间指令,即4个机器周期的MUL或DIV指令,另外加上执行由硬件生成的2个机器周期的长调用指令转到相应的中断向量处所需时间,外部中断响应最长时间为8个机器周期。这样,在单片机应用系统中只有一个中断源的情况下,响应时间总是在3~8个机器周期之间。5.4中断服务函数及应用在第3章中已简要介绍中断服务函数,C51中定义了中断函数来编写中断服务程序,大大减轻了编写中断服务程序的复杂程度。75本节介绍中断服务函数的设计及应用。5.4.1中断服务函数在C51中专门设计interrupt修饰符来定义中断服务函数,对声明为中断服务程序的函数,在系统编译时会自动将当前工作寄存器区内容入栈、函数返回前将被保护的内容出栈,并将中断服务函数安排在程序存储器中的相应位置。中断服务函数的格式为:函数类型函数名(void)interruptnusingm对中断服务函数使用的说明:1.中断函数没有返回值,函数类型建议用void类型。2.interrupt后的n为中断号,对于MCS-51子系列(如80C51),n取值为0~4,对MCS-52子系列,n取值为0~5,中断服务程序从8×n+3的中断向量处开始执行。中断号与中断向量的对应关系如表5-7所示。76表5-7中断号与中断向量的对应关系
3.关键字using是可选项,后面的m用来选择4个工作寄存器区。m取值为0~3。工作寄存器区与工作寄存器地址如表5-8所示。中断号n中断源中断向量8n+30外部中断00003H1定时器/计数器T0000BH2外部中断10013H3定时器/计数器T1001BH4串行口中断0023H5定时器/计数器T2002BH77表5-8工作寄存器区及地址
中断服务函数中如果选用usingm,程序执行开始会自动将PSW入栈,并修改PSW中的工作寄存器组选择位RS1、RS0到m指定的工作区。4.在中断服务程序中调用其他函数,必须保证所调用函数使用的工作寄存器区与中断函数使用的寄存器区不同。工作寄存器区mRS1 RS0 工作寄存器工作寄存器在RAM中的地址000R0~R700~07H101R0~R708~0FH210R0~R710~17H311R0~R718~1FH785.4.2外部中断服务函数应用设计本节通过几个案例,介绍有关外部中断应用程序的设计。例5-2】电路如图5-4所示,设计一个对外部中断0计数的程序。在80C51单片机的P1口连接8只LED,在外部中断0输入引脚P3.2连接一个按钮开关K。要求如下:(1)每按一次K,产生外部中断0请求,在外部中断0服务程序中统计中断发生的次数;(2)主程序实现在8个LED上按16进制方式显示中断次数。79图5-4一个外部中断计数电路80
参考程序如下:#include<reg51.h>#defineucharunsignedcharuchara=0x00;voidDelay(unsignedintx)//延时1ms函数{ucharj;while(x--){for(j=0;j<125;j++);}}voidmain() //主函数{uchartemp;EA=1; //开放总中断EX0=1; //允许外部中断0中断IT0=1; //外部中断0为负跳变触发方式81while(1) {temp=a;temp=~temp;P1=temp;}}voidint0()interrupt0 //外部中断0服务程序{a=a+1;} 【例5-3】设计二个外部中断嵌套程序,电路如图5-5所示。在80C51单片机的P0口连接8只LED,在外部中断0输入引脚P3.2和外部中断1输入引脚P3.3各接一个按钮开关K1和K2。要求如下:(1)K1和K2均未按下时,P0口连接的8只LED呈间隔点亮后交替;(2)按下K1,产生高优先级的外部中断0请求,在82中断服务程序中使8只LED自上而下流水点亮,显示3遍。(3)按下K2,产生低优先级的外部中断1请求,在中断服务程序中使8只LED自下而上流水点亮,显示3遍。图5-5二个外部中断嵌套电路83
参考程序如下:#include<reg51.h>#include<intrins.h> #defineucharunsignedcharuchardisplay[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voidDelay(unsignedintx)//延时1ms函数{ucharj;while(x--){for(j=0;j<125;j++);}}voidmain() //主函数{EA=1; //开放总中断EX0=1; //允许外部中断0中断EX1=1; //允许外部中断1中断84IT0=1; //外部中断0为负跳变触发方式IT1=1; //外部中断1为负跳变触发方式PX0=1; //外部中断0中断具有高优先级PX1=0; //外部中断1中断具有低优先级while(1) {P0=0x55;Delay(500);P0=0xaa;Delay(500);}}voidint0()interrupt0 //外部中断0服务程序{ucharm,a;for(m=0;m<3;m++){for(a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 椎-基底动脉盗血综合征的健康宣教
- 戊二酸血症的健康宣教
- 餐饮公司注册流程
- 冬季三防安全教育课件
- 《高中备考指南-数学必修1》课件-综合测试
- 2025年-广东建筑安全员C证考试题库
- 餐厅垃圾分类管理规定
- 《高考备考指南 物理 》课件-第3讲 机械能守恒定律及其应用
- 2025年-湖北省安全员-C证考试题库
- 2024年五年级英语下册 Unit 6 My Holiday第4课时教学实录 陕旅版(三起)
- 林业面试题目及答案
- 老顾客带新顾客方案
- 2024年其他资格考试-注册可靠性工程师笔试历年真题荟萃含答案
- 《思想道德与法治(2023版)》课程标准
- 混凝土行业投资建议分析报告
- 小沈龙脱口秀台词
- 空调设备巡检报告
- 餐饮服务食品安全操作规范试题测试题库含答案
- 剪辑拍摄培训课件
- 小学科技小制作知识讲座
- 电子商务仓库管理培训课程培训课件
评论
0/150
提交评论