第4章定时与中断系统_第1页
第4章定时与中断系统_第2页
第4章定时与中断系统_第3页
第4章定时与中断系统_第4页
第4章定时与中断系统_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

1、 本章内容本章内容p定时定时/计数器计数器 pC语言的函数语言的函数 p中断系统中断系统第第4 4章章 定时与中断系统定时与中断系统一、定时器和计数器一、定时器和计数器 重点掌握重点掌握C51C51单片机片内定时器单片机片内定时器/ /计数器的计数器的结构、结构、功能功能,有关的,有关的特殊功能寄存器,状态字、控制字特殊功能寄存器,状态字、控制字的含义、工作模式和工作方式的选择以及定时器的含义、工作模式和工作方式的选择以及定时器/ /计数器的应用举例。计数器的应用举例。 /功能:间隔显示时间为功能:间隔显示时间为1秒的流水灯程序秒的流水灯程序/函数名:函数名:delay1s/函数功能:用函数功

2、能:用T1工作在方式工作在方式1下的下的1秒延时函数,采用查询方式实现秒延时函数,采用查询方式实现void delay1s() unsigned char i; for(i=0;i0 x14;i+)/设置设置20次循环次数次循环次数 TH1=0 x3c;/设置定时器初值为设置定时器初值为3CB0H TL1=0 xb0; TR1=1;/启动启动T1 while(!TF1); /查询计数是否溢出,即定时查询计数是否溢出,即定时50ms时间到,时间到,TF1=1 TF1=0; /50ms定时时间到,将定时时间到,将T1溢出标志位溢出标志位TF1清零清零 void main()/主函数主函数unsig

3、ned char i,w; TMOD=0 x10;/设置设置T1为工作方式为工作方式1 while(1) w=0 x01; /显示码初值为显示码初值为01H for(i=0;i8;i+) P1=w;/w取反后送取反后送P1口,点亮相应口,点亮相应LED灯灯 w=1;/点亮灯的位置移动点亮灯的位置移动 delay1s();/调用调用1秒延时函数秒延时函数 TMODTMOD:选择定时器选择定时器/ /计数器计数器T0T0、T1T1的工作模式和工作的工作模式和工作方式。方式。 TCONTCON:控制控制T0T0、T1T1的启动和停止计数,同时包含了的启动和停止计数,同时包含了T0T0、T1T1的状态

4、。的状态。 2、 计数方式计数方式 T/C计数来自引脚计数来自引脚T0(P3.4)和和T1(P3.5)的外部脉冲信号的的外部脉冲信号的个数。个数。 输入脉冲由输入脉冲由1变变0的下降沿的下降沿时,计数器的值增加时,计数器的值增加1直到回直到回零产生溢出中断零产生溢出中断,表示计数已达表示计数已达预期个数。预期个数。 定时定时/ /计数器计数器 8051定时器/计数器逻辑结构方式方式0 0方式方式1 1方式方式2 2方式方式3 3TH0TH0TL0TL0TH1TH1TL1TL1定时器计数器启动方式定时器计数器启动方式 软件启动软件启动(通过写程序来控制)(通过写程序来控制) 硬软共同启动硬软共同

5、启动(通过程序和硬件电路共(通过程序和硬件电路共同来控制)同来控制)定时定时/ /计数器计数器 设置计数初值设置计数初值pT0T0、T1T1是是1616位加法计数器,分别由两个位加法计数器,分别由两个8 8位专用寄存器组成,位专用寄存器组成,T0T0由由TH0TH0和和TL0TL0组成,组成,T1T1由由TH1TH1和和TL1TL1组成组成。TL0TL0、TL1TL1、TH0TH0、TH1TH1的访问的访问地址依次为地址依次为8AH8AH 8DH8DH,每个寄存器均可被单独访问,因此可以被设,每个寄存器均可被单独访问,因此可以被设置为置为8 8位、位、1313位或位或1616位位计数器使用。计

6、数器使用。p在计数器允许的计数范围内,计数器可以从在计数器允许的计数范围内,计数器可以从任何值开始计数任何值开始计数,对,对于加于加1 1计数器,计数器,当计到最大值时当计到最大值时(对于(对于8 8位计数器,当计数值从位计数器,当计数值从255255再加再加1 1时,计数值变为时,计数值变为0 0),),产生溢出产生溢出。p定时定时/ /计数器允许用户编程设定开始计数的数值,称为赋初值计数器允许用户编程设定开始计数的数值,称为赋初值。初值不同,则计数器产生溢出时,计数个数也不同。例如:对于初值不同,则计数器产生溢出时,计数个数也不同。例如:对于8 8位计数器,当初值设为位计数器,当初值设为1

7、00100时,再加时,再加1 1计数计数156156个,计数器就产生溢个,计数器就产生溢出;当初值设为出;当初值设为200200时,再加时,再加1 1计数计数5656个,计数器产生溢出。个,计数器产生溢出。 定时定时/ /计数器计数器 启动定时/计数器根据设置的定时/计数器启动方式,启动定时/计数器。如果采用软件启动,则需要把控制寄存器中的TR0或TR1置1;如果采用硬软共同启动方式,不仅需要把控制寄存器中的TR0或TR1置1,还需要相应外部启动信号为高电平。l工作方式控制寄存器工作方式控制寄存器IMOD用于选择定时器用于选择定时器/计数器的计数器的工作模式和工作方式工作模式和工作方式,字节地

8、址为,字节地址为89H,不能位寻址不能位寻址。GATEGATE:门控位。门控位。0:只要软件控制位:只要软件控制位TR0或或TR1置置1即可启动定时器开始工作;即可启动定时器开始工作;1:只有只有INT0或或INT1引脚为高电平,且引脚为高电平,且TR0或或TR1置置1时时,才能启动相应的定时器开始工作。才能启动相应的定时器开始工作。例如:设定时器例如:设定时器T0为定时工作方式,要求用软件启动为定时工作方式,要求用软件启动 定时器定时器T0工作,按方式工作,按方式1工作;定时器工作;定时器T1为计数为计数 工作方式,要求软件启动,工作方式为方式工作方式,要求软件启动,工作方式为方式2。 则根

9、据则根据TMOD各位的定义可知,其控制字为:各位的定义可知,其控制字为: 即控制字为61H,其指令形式为: TMOD=0 x61H;格式: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 0 1 1 0 0 0 0 1lTCON的字节地址的字节地址88H,可位寻址可位寻址,位地址为,位地址为88H8FH。定时器的四种工作方式定时器的四种工作方式方式的选择:根据方式的选择:根据M1,M0来选择。来选择。 00:方式:方式0 01:方式:方式1 10: 方式方式2 11: 方式方式31 1 方式方式0 0 M1M1、M0M0为为00 00

10、 ,定时器,定时器/ /计数器的框图:计数器的框图: 图图6-46-4为为1313位的计数器位的计数器 ,C/TC/T* * 位位决定工作模式:决定工作模式: 0 0:开关打在上面,为开关打在上面,为定时器定时器工作模式;工作模式; 1 1:开关打在下面,为开关打在下面,为计数器计数器工作模式,计数脉冲为工作模式,计数脉冲为P3.4P3.4、P3.5P3.5引引脚上的脚上的外外部输入脉冲,当引脚上发生部输入脉冲,当引脚上发生负跳变负跳变时,计数器加时,计数器加1 1。GATEGATE位:位:决定定时器决定定时器/ /计数器的计数器的运行取决于运行取决于TRxTRx一个条件还是一个条件还是TRx

11、TRx和和INTxINTx* *引脚两个条件引脚两个条件。 (1 1)0 0:A A点是否计数点是否计数, ,仅取决于仅取决于TRxTRx的状态。的状态。(2 2)1 1:B B点电位由点电位由INTXINTX* *的输入电平和的输入电平和TRXTRX的状态这两个条件来确定。的状态这两个条件来确定。是否计数是由是否计数是由TRxTRx和和INTxINTx* *二个条件来控制的。二个条件来控制的。 试一试试一试l用用T1、工作方式、工作方式0实现任务实现任务7中中1s延时函数,晶振频延时函数,晶振频率为率为12MHz. l方式方式0采用采用13位计数器,其最大定时时间为:位计数器,其最大定时时间

12、为:81291us=8.192ms,可选择定时可选择定时5ms,循环循环200次。次。l定时时间为定时时间为5ms,则计数值为,则计数值为5ms/1us=5000,T1的的初值为:初值为:lX=M-计数值计数值=8192-5000=3192=C78H=0110001111000Bl13位计数器中位计数器中TL1的高的高3位未用,填位未用,填0,TH1占高占高8位,所以,实位,所以,实际上际上x的值为:的值为:X=01100011 00011000B=6318H 用用T0的工作方式的工作方式0实现任务实现任务7中中1s延时函数延时函数如下:如下:void delay1s() unsigned c

13、har i;TOMD=0 x00; for(i=0;i0 xc8;i+) TH1=0 x63; TL1=0 x18; TR1=1; while(!TF1); TF1=0; 定时器的方式定时器的方式0 0、1 1示意图示意图返回TF0 TH0 TL0 12分频OSC中断高8位8位或低5位控制+T0(P3.4)TR0GATEINT0(P3.2)C/T=0C/T=1l初始化程序:TMOD=0 x01H; TH0=0 x3CH; TL0= 0 xB0H; TR0=1;l方式方式0和方式和方式1的最大特点是计数溢出后,计数器为全的最大特点是计数溢出后,计数器为全0.因此在循环定时或循环计数应用时就存在用

14、指令反因此在循环定时或循环计数应用时就存在用指令反复装入计数初值的问题。复装入计数初值的问题。试一试试一试用用T1、工作方式、工作方式2实现任务实现任务7中中1s延时函数,晶延时函数,晶振频率为振频率为12MHz。分析:因工作方式分析:因工作方式2是是8位计数器,其最大定时位计数器,其最大定时时间为:时间为:2561us=256us,为实现,为实现1s延时,延时,可选择定时时间为可选择定时时间为250us,再循环,再循环4000次。定次。定时时间选定后,可确定计数值为时时间选定后,可确定计数值为250,则,则T1的的初值为:初值为:X=M-计数值计数值=256-250=6=6H。采用。采用T1

15、的工作方式的工作方式2,因此,因此,TMOD=0 x20,void delay1s()unsigned int i; TMOD=0 x20; TH1=6; TL1=6; for(i=0;i4000;i+) TR1=1; while(!TF1); TF1=0; 定时器的初始值的计算定时器的初始值的计算对于不同的工作方式,计数器位数不同,故最大计数值对于不同的工作方式,计数器位数不同,故最大计数值M也不同:也不同: 方式方式0:M=213=8192 方式方式1:M=216=65536 方式方式2:M=28=256 方式方式3:定时器定时器0分为分为2个个8位计数器,每个位计数器,每个M均为均为25

16、6。因为定时因为定时/计数器是作加计数器是作加1计数,并在计满溢出时产生中断,因此初计数,并在计满溢出时产生中断,因此初值值X的计算如下:的计算如下: X = M 计数值计数值 计算出来的结果计算出来的结果X转换为转换为16进制数进制数后分别写入后分别写入TL0(TL1)、)、TH0(TH1)。)。注意!注意!方式方式0时初始值写入时,对于时初始值写入时,对于TL不用的高不用的高3位应填入位应填入0!任务任务8:简易秒表控制:简易秒表控制l/功能:采用功能:采用BCD码格式显示的码格式显示的059简易秒表程序简易秒表程序l#include lvoid delay1s() /1秒延时函数秒延时函

17、数l l unsigned char i;l for(i=0;i0 x14;i+) /设置设置20次循环次数次循环次数l l TH1=0 x3c; /设置定时器初值为设置定时器初值为3CB0Hl TL1=0 xb0;l TR1=1; /启动启动T1l while(!TF1); /查询计数是否溢出,即定时查询计数是否溢出,即定时50ms时间到,时间到,TF1=1l TF1=0; /50ms定时时间到,将定时时间到,将T1溢出标志位溢出标志位TF1清零清零l llvoid main()ll unsigned char i, t;l TMOD=0 x10; / 置置T1为工作方式为工作方式1l wh

18、ile(1) l for(i=0;i60;i+)l l t=(i/10)4)|(i%10);/ 将将i转换为转换为BCD码码l P1=t; / 计数值取反后送计数值取反后送P1口显示口显示l delay1s(); / 调用调用1秒延时函数秒延时函数l l l小知识小知识lBCD码是用二进制数形式表示十进制数,例码是用二进制数形式表示十进制数,例如十进制如十进制45,其,其BCD码形式为码形式为45H。BCD码码知识一种表示形式,与其数值没有关系。知识一种表示形式,与其数值没有关系。lBCD码用码用4位二进制数位二进制数表示表示1一位十进制数一位十进制数,这这4位二进制数的权为位二进制数的权为8

19、421,所以,所以BCD码又称码又称为为8421码码.p在在C C语言程序中,子程序的作用是由函数来实现的,函数是语言程序中,子程序的作用是由函数来实现的,函数是C C语言的语言的基本组成模块,一个基本组成模块,一个C C语言程序就是由若干个模块化的函数组成的。语言程序就是由若干个模块化的函数组成的。pC C程序都是由一个主函数程序都是由一个主函数main( )main( )和若干个子函数构成,有且只有一和若干个子函数构成,有且只有一个主函数,程序由主函数开始执行,主函数根据需要来调用其他函数,个主函数,程序由主函数开始执行,主函数根据需要来调用其他函数,其它函数可以有多个。其它函数可以有多个

20、。4.2 C语言的函数 1.1.标准库函数标准库函数 标准库函数是由标准库函数是由C51C51的编译器提供的,用户不必定义这的编译器提供的,用户不必定义这些函数,可以直接调用。些函数,可以直接调用。KEIL C51KEIL C51编译器提供了编译器提供了100100多个多个库函数供我们使用。常用的库函数供我们使用。常用的C51C51库函数包括一般库函数包括一般I/OI/O口函数、口函数、访问访问SFRSFR地址函数等,在地址函数等,在C51C51编译环境中,以头文件的形式编译环境中,以头文件的形式给出。给出。2.2.用户自定义函数用户自定义函数 用户自定义函数是用户根据需要自行编写的函数,它必

21、用户自定义函数是用户根据需要自行编写的函数,它必须先定义之后才能被调用。须先定义之后才能被调用。函数分类和定义 程序:程序:ex4_6功能:调用循环左移标准函数实现的流水灯控制程序功能:调用循环左移标准函数实现的流水灯控制程序#include #include /此头文件中定义了循环左移函数此头文件中定义了循环左移函数_crol_()void delay(unsigned int i)unsigned int k; for (k=0;ki;k+);void main()unsigned char aa; aa=0 x01; while(1) P1=aa; delay(5000); aa=_cr

22、ol_(aa,1); / _crol_()为循环左移函数,把变量为循环左移函数,把变量aa的值循环左移一位的值循环左移一位 函数定义的一般形式是:函数定义的一般形式是:函数类型函数类型 函数名(形式参数表)函数名(形式参数表) 局部变量定义局部变量定义函数体语句函数体语句 其中,其中,“函数类型函数类型”说明了自定义函数返回值的类型。说明了自定义函数返回值的类型。 “ “函数名函数名”是自定义函数的名字。是自定义函数的名字。 “ “形式参数表形式参数表”给出函数被调用时传递数据的形式参数,形式参数给出函数被调用时传递数据的形式参数,形式参数的类型必须要加以说明。的类型必须要加以说明。ANSI

23、CANSI C标准允许在形式参数表中对形式参数标准允许在形式参数表中对形式参数的类型进行说明。的类型进行说明。如果定义的是无参数函数,可以没有形式参数表,如果定义的是无参数函数,可以没有形式参数表,但是圆括号不能省略。但是圆括号不能省略。 “ “局部变量定义局部变量定义”是对在函数内部使用的局部变量进行定义。是对在函数内部使用的局部变量进行定义。 “ “函数体语句函数体语句”是为完成函数的特定功能而设置的语句。是为完成函数的特定功能而设置的语句。2.用户自定义函数void delay(unsigned char i) unsigned char j,k; for(k=0;ki;k+) for(

24、j=0;j255;j+);形式参数形式参数函数定义函数定义局部变量局部变量 函数调用就是在一个函数体中引用另外一个已经定义函数调用就是在一个函数体中引用另外一个已经定义的函数,前者称为的函数,前者称为主调用函数主调用函数,后者称为被,后者称为被调用函数调用函数,函,函数调用的一般格式为:数调用的一般格式为:函数名(实际参数列表);函数名(实际参数列表); 对于有参数类型的函数,若实际参数列表中有多个实对于有参数类型的函数,若实际参数列表中有多个实参,则各参数之间用逗号隔开。实参与形参顺序对应,个参,则各参数之间用逗号隔开。实参与形参顺序对应,个数应相等,类型应一致。数应相等,类型应一致。4.2

25、.2 函数调用 函数的三种调用方式函数的三种调用方式l函数语句。函数语句。把被调函数作为主调函数的一个语把被调函数作为主调函数的一个语句。句。 delay1s();l函数表达式。函数表达式。被调函数以一个运算对象的形式被调函数以一个运算对象的形式出现在一个表达式中。出现在一个表达式中。c=2*max(a,b);l函数参数。函数参数。被调函数作为另一个函数的实参或被调函数作为另一个函数的实参或者本函数的实参。者本函数的实参。m=max(a,max(b,c); 在一个函数中调用另一个函数需要具备如下条件:在一个函数中调用另一个函数需要具备如下条件: (1 1)被调用函数必须是已经存在的函数被调用函

26、数必须是已经存在的函数(库函数或(库函数或者用户自己已经定义的函数。者用户自己已经定义的函数。 如果函数定义在调用之后,那么必须在调用之前如果函数定义在调用之后,那么必须在调用之前(一般在程序头部)对函数进行声明。(一般在程序头部)对函数进行声明。 (2 2)如果程序使用了库函数,则要在程序的开头用如果程序使用了库函数,则要在程序的开头用includeinclude预处理命令将调用函数所需要的信息包含在本预处理命令将调用函数所需要的信息包含在本文件中。文件中。如果不是在本文件中定义的函数,那么在程序如果不是在本文件中定义的函数,那么在程序开始要用开始要用externextern修饰符进行函数原

27、型说明。修饰符进行函数原型说明。函数调用 l/程序:程序:ex4_3.cl/功能:可控信号灯程序功能:可控信号灯程序l#include l/函数名:函数名:delay0_5sl/函数功能:用函数功能:用T0的方式的方式1编制编制0.5秒延时程序,假定系统采用秒延时程序,假定系统采用12MHz晶晶振,定时器振,定时器1、工作方式、工作方式1定时定时50ms,再循环,再循环10次即可定时到次即可定时到0.5秒秒l/形式参数:无形式参数:无 l/返回值:无返回值:无lvoid delay0_5s()l l unsigned char i;l for(i=0;i0 x0a;i+)/ 设置设置10次循环

28、次数次循环次数l l TH0=0 x3c;/ 设置定时器初值设置定时器初值l TL0=0 xb0;l TR0=1;/ 启动启动T0l while(!TF0); / 查询计数是否溢出,即定时查询计数是否溢出,即定时50ms时间到,时间到,TF0=0l TF0=0; / 50ms定时时间到,将定时器溢出标志位定时时间到,将定时器溢出标志位TF0清零清零l ll/函数名:函数名:delay_tl/函数功能:实现函数功能:实现0.5秒秒128秒延时秒延时l/形式参数:形式参数:unsigned char t;延时时间为延时时间为0.5秒秒tlvoid delay_t(unsigned char t)l

29、l unsigned char i;l for(i=0;it;i+)delay0_5s();ll/函数名:函数名:int_0l/函数功能:外部中断函数功能:外部中断0中断函数,当中断函数,当CPU响应外部中断响应外部中断0的中断的中断请求时,自动执行该请求时,自动执行该l/ 函数,实现八个信号灯闪烁函数,实现八个信号灯闪烁l/形式参数:无形式参数:无lvoid int_0() interrupt 0 /外部中断外部中断0的中断号为的中断号为0ll P1=0 x00;/熄灭八个信号灯熄灭八个信号灯l delay0_5s();/调用调用0.5秒延时函数秒延时函数l P1=0 xff;/点亮八个信号

30、灯点亮八个信号灯l delay0_5s();/调用调用0.5秒延时函数秒延时函数llvoid main()/主函数主函数ll unsigned char i,w; l EA=1;/ 打开中断总允许位打开中断总允许位l EX0=1;/ 打开外部中断打开外部中断0允许位允许位l IT0=1;/ 设置外部中断为边沿(下降沿)触发方式设置外部中断为边沿(下降沿)触发方式l TMOD=0 x01; / 设置设置T0为工作方式为工作方式1l while(1) l w=0 x01; / 显示码初值为显示码初值为01Hl for(i=0;i8;i+)l l P1=w;/ w取反后送取反后送P1口,点亮相应口,

31、点亮相应LED灯灯l w=1;/ 点亮灯的位置移动点亮灯的位置移动l delay_t(2); / 调用延时函数调用延时函数delay_t(),实际参数为,实际参数为2,延时,延时1秒秒l l l 1 1、理解、理解89C5189C51单片机片内中断系统的单片机片内中断系统的工作原理及特工作原理及特性。性。 2 2、重点掌握重点掌握与中断系统有关的与中断系统有关的特殊功能寄存器,特殊功能寄存器,以及如何来对中断系统进行以及如何来对中断系统进行初始化编程,中断响应初始化编程,中断响应条件,如何撤销中断请求,条件,如何撤销中断请求,以及如何进行以及如何进行中断服务中断服务子程序设计子程序设计。 中断

32、是指通过硬件来改变中断是指通过硬件来改变CPUCPU的运行方向。计算机在执行的运行方向。计算机在执行程序的过程中,外部设备向程序的过程中,外部设备向CPUCPU发出中断请求信号,要求发出中断请求信号,要求CPUCPU暂时中断当前程序的执行而转去执行相应的处理程序,暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行过程中由于外界的原因而被中间打断的这种程序在执行过程中由于外界的原因而被中间打断的情况称为情况称为“中断中断”。 4.3 什么是中断 小提示小提示 中断函数的调用过程中断函数

33、的调用过程类似于类似于一般函数调用一般函数调用,区别在于:区别在于: 何时调用一般函数在程序中是何时调用一般函数在程序中是事先安排事先安排好的好的;而何时调用中断函数;而何时调用中断函数事先却无法确定事先却无法确定,因为中断的发生时由外部因素决定的,程序中因为中断的发生时由外部因素决定的,程序中无法事先安排调用语句。无法事先安排调用语句。 因此,调用中断函数的过程是由因此,调用中断函数的过程是由硬件自硬件自动完成的动完成的。(1 1)中断服务程序:中断服务程序:CPUCPU响应中断后,转去执行相应的响应中断后,转去执行相应的处理程序,该处理程序通常称之为中断服务程序。处理程序,该处理程序通常称

34、之为中断服务程序。(2 2)主程序:主程序:原来正常运行的程序称为主程序。原来正常运行的程序称为主程序。(3 3)断点:断点:主程序被断开的位置(或地址)称为断点。主程序被断开的位置(或地址)称为断点。(4 4)中断源:中断源:引起中断的原因,或能发出中断申请的来引起中断的原因,或能发出中断申请的来源,称为中断源。源,称为中断源。(5 5)中断请求:中断请求:中断源要求服务的请求称为中断请求中断源要求服务的请求称为中断请求(或中断申请)。(或中断申请)。 中断基本概念 1.同步工作2.异常处理3.实时处理中断特点 中断优先级中断优先级(5个个中断请求,中断请求,2个个中断优先级)中断优先级)

35、当有当有多个中断源多个中断源同时同时 向向CPU申请中断时,申请中断时,CPU优先响应优先响应最需紧急处理最需紧急处理的中断请求,处理完毕的中断请求,处理完毕再响应优先级别较低的再响应优先级别较低的 ,这种预先安排的响应次序。,这种预先安排的响应次序。 二级中断嵌套二级中断嵌套CPU在执行主程序在执行主程序低级低级中中断请求断请求响应低级中断请求响应低级中断请求CPU执行执行低级低级中断服务程序中断服务程序高级高级中中断请求断请求响应高级中断请求响应高级中断请求CPU执行执行高级高级中断服务程序中断服务程序返回低级中断程序返回低级中断程序返回主程序返回主程序符号符号 名名 称称 中中 断断 引

36、引 起起 原原 因因 中断服务中断服务程序入口程序入口地址地址INT0INT0 外部中外部中断断0 0 P3.2 P3.2引脚的引脚的低电平或下降低电平或下降沿信号沿信号 0003H0003HT0T0定时器定时器0 0中断中断定时计数器定时计数器0 0计数回零溢出计数回零溢出000BH000BHINT1INT1外部中外部中断断1 1P3.3P3.3引脚的引脚的低电平或下降沿低电平或下降沿信号信号0013H0013HT1T1定时器定时器1 1中断中断 定时计数器定时计数器1 1计数回零溢出计数回零溢出 001BH001BHTI/RITI/RI 串行口串行口中断中断 串行通信完成一帧数据发送串行通

37、信完成一帧数据发送或接收引起中断或接收引起中断 0023H0023H 图图5-5-2 2INT0INT0INT0INT0INT1INT1T0T0T1T1串行口串行口中断中断中断标志 中断标志位中断标志位位名称位名称说说 明明TF1T1溢出中断标志溢出中断标志TCON.7T1被启动计数后,从初值开始加被启动计数后,从初值开始加1计数,计满溢出后由硬计数,计满溢出后由硬件置位件置位TF1,同时向,同时向CPU发出中断请求,此标志一直保持发出中断请求,此标志一直保持到到CPU响应中断后才由硬件自动清响应中断后才由硬件自动清0。也可由软件查询该。也可由软件查询该标志,并由软件清标志,并由软件清0。前述

38、的定时器编程都是采用查询方。前述的定时器编程都是采用查询方式实现。式实现。TF0T0溢出中断标志溢出中断标志TCON.5T0被启动计数后,从初值开始加被启动计数后,从初值开始加1计数,计满溢出后由硬计数,计满溢出后由硬件置位件置位TF0,同时向,同时向CPU发出中断请求,此标志一直保持发出中断请求,此标志一直保持到到CPU响应中断后才由硬件自动清响应中断后才由硬件自动清0。也可由软件查询该。也可由软件查询该标志,并由软件清标志,并由软件清0。IE1中断标志中断标志TCON.3IE1 = 1,外部中断,外部中断1向向CPU申请中断。申请中断。IT1中断触发方式控中断触发方式控制位制位TCON.2

39、当当IT1 = 0,外部中断,外部中断1控制为电平触发方式;控制为电平触发方式;当当IT1 = 1,外部中断,外部中断1控制为边沿(下降沿)触发方式。控制为边沿(下降沿)触发方式。IE0中断标志中断标志TCON.1IE0= 1,外部中断,外部中断0向向CPU申请中断。申请中断。IT0中断触发方式控中断触发方式控制位制位TCON.0当当IT0= 0,外部中断,外部中断0控制为电平触发方式;控制为电平触发方式;当当IT0 = 1,外部中断,外部中断0控制为边沿(下降沿)触发方式。控制为边沿(下降沿)触发方式。TI串行发送中断标串行发送中断标志志SCON.1CPU将数据写入发送缓冲器将数据写入发送缓

40、冲器SBUF时,启动发送,每发送时,启动发送,每发送完一个串行帧,硬件都使完一个串行帧,硬件都使TI置位;但置位;但CPU响应中断时并不响应中断时并不自动清除自动清除TI,必须由软件清除。,必须由软件清除。RI串行接收中断标串行接收中断标志志SCON.0当串行口允许接收时,每接收完一个串行帧,硬件都使当串行口允许接收时,每接收完一个串行帧,硬件都使RI置位;同样,置位;同样,CPU在响应中断时不会自动清除在响应中断时不会自动清除RI,必须由,必须由软件清除。软件清除。五个中断请求源五个中断请求源(1 1)INT0INT0外部中断请求外部中断请求0 0,由引脚,由引脚P3.2P3.2输入,中断请

41、求标志输入,中断请求标志为为IE0IE0。(2 2)INT1INT1外部中断请求外部中断请求1 1,由引脚,由引脚P3.3P3.3输入,中断请求标志输入,中断请求标志为为IE1IE1。(3 3)定时器)定时器/ /计数器计数器T0T0溢出溢出中断请求,中断请求标志为中断请求,中断请求标志为TF0TF0。(4 4)定时器)定时器/ /计数器计数器T1T1溢出溢出中断请求,中断请求标志为中断请求,中断请求标志为TF1TF1。(5 5)串行口中断请求串行口中断请求,中断请求标志为,中断请求标志为TITI或或RIRI。特殊功能寄存器特殊功能寄存器TCONTCON和和SCONSCON的相应位锁存各中断请

42、求标志。的相应位锁存各中断请求标志。CPU将跳去执行中断服务程序将跳去执行中断服务程序 当中断源向当中断源向CPU申请中断时,相应中断标志申请中断时,相应中断标志位由硬件自动置位由硬件自动置1,当响应中断请求后,该,当响应中断请求后,该如何如何撤除这些中断标志位。撤除这些中断标志位。1. 对于对于T0,T1溢出中断溢出中断和和边沿触发的外边沿触发的外部中断部中断,CPU在响应中断后即由在响应中断后即由硬件自硬件自动清除其中断标志位动清除其中断标志位TF0,TF1或或IE0,IE1,无须采取其他措施。无须采取其他措施。2、对于、对于串行口中断串行口中断,CPU在响应中断后,在响应中断后,硬件不能

43、自动清除中断请求标志位硬件不能自动清除中断请求标志位TI或或RI,必须,必须在中断服务程序中用软件将其在中断服务程序中用软件将其清除。清除。 3、对于、对于电平触发电平触发的的外部中断外部中断,硬件不会,硬件不会自动清除标志位,同时,也不能用软件自动清除标志位,同时,也不能用软件将其清除,所以,当将其清除,所以,当CPU响应中断后,响应中断后,应该立即撤除应该立即撤除INT0和和INT1外部引脚上的外部引脚上的信号。信号。P0=P0&0 xfe;P0=P0|0 x01;中断允许寄存器中断允许寄存器IEIE CPUCPU对中断源的开放或屏蔽,由片内的对中断源的开放或屏蔽,由片内的中断允许

44、寄存器中断允许寄存器IEIE控制。控制。字节地址字节地址A8HA8H,可位可位寻址。格式如寻址。格式如图图。中断的开放和禁止 中断允许位中断允许位位名称位名称说明说明EA总中断允许控制位总中断允许控制位IE.7EA = 1,开放所有中断,开放所有中断,各中断源的允许和禁,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;止可通过相应的中断允许位单独加以控制;EA = 0,禁止所有中断。,禁止所有中断。ES串行口串行口中断允许位中断允许位IE.4ES = 1,允许串行口中断,允许串行口中断;ES = 0禁止串行口禁止串行口中断。中断。ET1T1中断允许位中断允许位IE.3ET1 = 1,允

45、许,允许T1中断;中断;ET1 = 0,禁止,禁止T1中中断。断。EX1(INT1)中断允许位中断允许位IE.2EX1 = 1,允许外部中断,允许外部中断1中断中断;EX1 = 0,禁,禁止外部中断止外部中断1中断。中断。ET0T0中断允许位中断允许位IE.1ET0 = 1,允许,允许T0中断;中断;ET0 = 0,禁止,禁止T0中中断。断。EX0(INT0)中断允许位中断允许位IE.0EX0 = 1,允许外部中断,允许外部中断0中断中断;EX0 = 0,禁,禁止外部中断止外部中断0中断。中断。 8051单片机系统复位后,单片机系统复位后,IE寄存器中各中断寄存器中各中断允许位均被清零,即禁止

46、所有中断允许位均被清零,即禁止所有中断 例如:例如:EA=1; /开放中断总允许位开放中断总允许位 EX0=1; /开放外部中断开放外部中断0允许位允许位 上面的例题也可以用一条语句来实现:上面的例题也可以用一条语句来实现: IE=0 x81;/寄存器寄存器IE=1000 0001B同时同时开放中断总允许位和外部中断开放中断总允许位和外部中断0允许位。允许位。 若若CPUCPU正在执行高优先级的中断,则不能被任何中断源所中断正在执行高优先级的中断,则不能被任何中断源所中断。中断优先级寄存器中断优先级寄存器IPIP,其字节地址为,其字节地址为B8HB8H,格式如格式如图图。IPIP各个位的含义:各个位的含义:(1 1)PSPS串行口中断优先级控制位串行口中断优先级控制位1 1:高优先级中断;:高优先级中断;0 0:低优先级中断。:低优先级中断。4. 中断的优先级别中断的优先级别(2 2)PT1PT1定时器定时器T1T1中断优先级控制位中断优先级控制位1 1:高优先级中断;:高优先级中断;0 0:低优先级中断。:低优先级中断。(3 3)PX1PX1外部中断外部中断1 1中断优先级控制位中断优先级控制位1 1:高优先级中断;:高优先级中断;0 0:低优先级中断。:低优先级中断。(4 4)PT0PT0定时器定时器T0T0中断优先级控制位中断优先

温馨提示

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

评论

0/150

提交评论