
第十三次课(共2学时)一、授课题目:STC15F2K60S2的中断系统(下)二、教学目标和任务:1.掌握STC15F2K60S2的中断系统中断标志位管理、中断充许管理、中断优先级的管理:2.掌握中断函数编写方法;3.充分掌握外部中断0、外部中断1的触发条件,能利用外部中断0、外部中断1编写程序实现简单的现象。三、教学重难点:重点:掌握STC15F2K60S2的中断系统中断标志位管理、中断允许管理、中断优先级的管理;利用外部中断0、外部中断1编写程序实现简单的现象。难点:利用外部中断0、外部中断1编写程序实现简单的现象。四、授课过程:回顾:中断相关定义:中断系统技术要求;STC15F2K60S2的中断系统结构:外部中断0、定时/计数器中断0、外部中断1、定时/计数器中断1、串口中断、AD转换中断的中断触发条件、中断标志;中断的优先级、自然优先级:中断响应过程。0. 引入本节课我们将学习中断的管理以及外部中断0、外部中断1的编程方法。1.中断标志的记录1
1 第十三次课(共 2 学时) 一、授课题目:STC15F2K60S2 的中断系统(下) 二、教学目标和任务: 1. 掌握 STC15F2K60S2 的中断系统中断标志位管理、中断 允许管理、中断优先级的管理; 2. 掌握中断函数编写方法; 3. 充分掌握外部中断 0、外部中断 1 的触发条件,能利 用外部中断 0、外部中断 1 编写程序实现简单的现象。 三、教学重难点: 重点:掌握 STC15F2K60S2 的中断系统中断标志位管理、 中断允许管理、中断优先级的管理;利用外部中断 0、外部中 断 1 编写程序实现简单的现象。 难点:利用外部中断 0、外部中断 1 编写程序实现简单的 现象。 四、授课过程: 回顾:中断相关定义;中断系统技术要求;STC15F2K60S2 的中断系统结构;外部中断 0、定时/计数器中断 0、外部中断 1、定时/计数器中断 1、串口中断、AD 转换中断的中断触发条 件、中断标志;中断的优先级、自然优先级;中断响应过程。 0.引入 本节课我们将学习中断的管理以及外部中断 0、外部中断 1 的编程方法。 1.中断标志的记录

外部中断和定时计数器中断的中断标志存在特殊功能寄存器TCON(88H)中,如表所示。TF1TFOTR1TROIE1IT1IEOITOTI溢TI启/TO溢TO启/INT1INT1INT1INT1停停触发出标志出标志请求请求触发从低到高两位一组,分别控制INTO、INT1、TO、T1,可位寻址1)ITO和IT1为外中断INTO和INT1中断触发方式选择,若选下降沿触发则相应位置1:若选双边沿触发,IT相应位置0。2)IEi为外部中断标志,复位后IEi=0,若双边沿(ITi=0)或下降沿(ITi)来时,IEi自动置位为1。3)TRO和TR1为定时器TO和T1工作启动和停止控制。4)5当定时/计数器溢出时置位TFO、TF1。串口1中断控制寄存SCON(98H)TIIR发送完一顿接收完一顿A/D转换中断中断控制寄存器ADCCONTR(BCH)ADC_POWERSPEED1SPEEDOADC_FLAGCHS1CHS1CHSOADC_STRATAD转换完2.中断允许控制位当中断触发后,中断允许位自动置位,STC15F2K60S2的十四个中断源的中断允许标志位分别位于三个SFR,如下表所示:2
2 外部中断和定时计数器中断的中断标志存在特殊功能寄 存器 TCON(88H)中,如表所示。 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 T1 溢 出标志 T1 启/ 停 T0 溢 出标志 T0 启/ 停 INT1 请求 INT1 触发 INT1 请求 INT1 触发 从低到高两位一组,分别控制 INT0、INT1、T0、T1,可位 寻址 1) IT0 和 IT1 为外中断 INT0 和 INT1 中断触发方式选 择,若选下降沿触发则相应位置 1;若选双边沿触发 ,IT 相 应位置 0。 2)IEi 为外部中断标志,复位后 IEi=0,若双边沿(ITi=0) 或下降沿(ITi)来时,IEi 自动置位为 1。 3) TR0 和 TR1 为定时器 T0 和 T1 工作启动和停止控 制。 4) 当定时/计数器溢出时置位 TF0、TF1。 串口 1 中断控制寄存 SCON(98H) - - - - - - TI IR - - - - - - 发送完一帧 接收完一帧 A/D 转换中断中断控制寄存器 ADC_CONTR(BCH) ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_STRAT CHS1 CHS1 CHS0 AD 转换完 2. 中断允许控制位 当中断触发后,中断允许位自动置位,STC15F2K60S2 的十 四个中断源的中断允许标志位分别位于三个 SFR,如下表所示:

BAB7B6B5B3B2B1BOIEEAESELVDEADCETIEX1ETOETOA8HIE2ET2ESPIES2AFHINT_CLKOEX4EX3EX28FH1)值为1表示允许响应相应中断,为0表示不允许响应相应中断;2)复位后所有中断允许位均为0:3)EA为总中断,只有EA=1,才可以响应中断;4)一个中断要处于允许状态,需要总中断为1,且响应中断允许位为1。注意:需要掌握的中断允许位有EA、EADC、ES、ET1、EX1、ETO、EXO。例题1:打开外部中断0,并将其设置为下降沿触发。EA=1:EXO=l:IT1=l:3.中断优先级管理B7B6B5B4B3B2B1BOIPPCCAPLVDPSPT1PADCPX1PTOPXOB8HIP2PSPIPS2B5H1)2个中断优先级0和1,0为低优先级,1为高优先级3
3 B7 B6 B5 B4 B3 B2 B1 B0 IE A8H EA ELVD EADC ES ET1 EX1 ET0 ET0 IE2 AFH - - - - - ET2 ESPI ES2 INT_CLKO 8FH - EX4 EX3 EX2 - - - - 1) 值为 1 表示允许响应相应中断,为 0 表示不允许响应 相应中断; 2) 复位后所有中断允许位均为 0; 3) EA 为总中断,只有 EA=1,才可以响应中断; 4) 一个中断要处于允许状态,需要总中断为 1,且响应 中断允许位为 1。 注意:需要掌握的中断允许位有 EA、EADC、ES、ET1、EX1、 ET0、EX0。 例题 1:打开外部中断 0,并将其设置为下降沿触发。 EA=1;EX0=1;IT1=1; 3.中断优先级管理 B7 B6 B5 B4 B3 B2 B1 B0 IP B8H PCCA PLVD PADC PS PT1 PX1 PT0 PX0 IP2 B5H - - - - - - PSPI PS2 1)2 个中断优先级 0 和 1,0 为低优先级,1 为高优先级

2)可实现二级嵌套3)优先级为1的中断源高于优先级为0的中断源,当中断源级别相同时,按照自然优先级判别,从高到低依次为INTO、TO、INT1、T1、串口1中断、A/D转换中断4)自然优先级是硬件决定的。注意:需要掌握的中断优先级位有PADC、PS、PT1、PX1、PTO、PXO。例题2:打开串口1中断,优先级设置为1,打开TO中断,优先级设置为0。EA=1: ES=1: ETO=1: PS=1:PTO=0:3.中断函数的编写中断服务函数的一般形式为:函数类型函数名(形式参数表)interruptn(usingm)函数类型需要时void,不返回值。参数列表void,不传递参数。关键字interrupt后面的n是中断号,单片机,n的取值为0~16,编译器将程序放在8×n+3处,以便中断触发后从该处调用相应函数。关键字using后面的m用来选择4个工作寄存器区。using是一可选项。4.外部中断的应用例题3:如图所示,在单片机P1口上接有8只LED。在外部中断0输入引脚(P3.2)接一只按钮开关K1。要求将外部中断0设置为下降沿触发。程序启动时,P1口上的8只LEL4
4 2)可实现二级嵌套 3)优先级为 1 的中断源高于优先级为 0 的中断源,当中 断源级别相同时,按照自然优先级判别,从高到低依次为 INT0、 T0、INT1、T1、串口 1 中断、A/D 转换中断 4)自然优先级是硬件决定的。 注意:需要掌握的中断优先级位有 PADC、PS、PT1、PX1、 PT0、PX0。 例题 2:打开串口 1 中断,优先级设置为 1,打开 T0 中 断,优先级设置为 0。 EA=1;ES=1;ET0=1;PS=1;PT0=0; 3. 中断函数的编写 中断服务函数的一般形式为: 函数类型 函数名(形式参数表)interrupt n (using m ) 函数类型需要时 void,不返回值。 参数列表 void,不传递参数。 关键字 interrupt 后面的 n 是中断号,单片机,n 的取值 为 0~16,编译器将程序放在 8×n+3 处,以便中断触发后从 该处调用相应函数。 关键字 using 后面的 m 用来选择 4 个工作寄存器区。using 是一可选项。 4. 外部中断的应用 例题 3:如图所示,在单片机 P1 口上接有 8 只 LED。在外 部中断 0 输入引脚(P3.2)接一只按钮开关 K1。要求将外部 中断 0 设置为下降沿触发。程序启动时,P1 口上的 8 只 LED

全亮。每按一次按钮开关K1,让低4位的LED与高4位的LED交替闪烁5次。然后从中断返回,控制8只LED再次全亮。DEDVELLON中KTAL#建####票TAL044###美#热#1.8e8?1.012PsDT3609R14.470图1分析:P3.2引脚上按键按下,会有一个下降沿,将触发外部中断0,因此我们在主函数中打开外部中断0,将其设置为下降沿触发,再点亮8只LED灯,中断函数中高低四位交替闪烁五次。程序如下:#include#defineucharunsigned char#defineuintunsignedintvoidDelay(uinti)//延时函数Delay(),i形式参数1uint j:for(;i> 0;i--)for(j=0;j<333;j++)(:)//空函数5
5 全亮。每按一次按钮开关 K1,让低 4 位的 LED 与高 4 位的 LED 交替闪烁 5 次。然后从中断返回,控制 8 只 LED 再次全亮。 图 1 分析:P3.2 引脚上按键按下,会有一个下降沿,将触发外 部中断 0,因此我们在主函数中打开外部中断 0,将其设置为 下降沿触发,再点亮 8 只 LED 灯,中断函数中高低四位交替闪 烁五次。程序如下: #include #define uchar unsigned char #define uint unsigned int void Delay(uint i) //延时函数 Delay( ),i 形式参数 { uint j; for(;i > 0;i-) for(j=0;j<333;j++) {;} //空函数

1voidmain()//主函数1//总中断允许EA=1:EX0=1://允许外部中断0中断ITO=1://选择外部中断0为跳沿触发方式while(1)//循环( P1=0:)//P1口的8只LED全亮1void into()interrupt0//外中断0的中断服务函数1uchar m;for (m=0;m<5;m++)//交替闪烁5次P1=0x0f;//低4位LED灭,高4位LED亮1/延时Delay(400);P1=0xf0://高4位LED灭,低4位LED亮/ /延时Delay(400) ;1)例题4:如图,在单片机P1口上接有8只LED。在外部中断0输入引脚(P3.2)接有一只按钮开关K1。在外部中断1输入引脚(P3.3)接有一只按钮开关K2。要求K1和K2都未按下时,P1口的8只LED呈流水灯显示,仅K1(P3.2)按下再6
6 } void main( ) //主函数 { EA=1; //总中断允许 EX0=1; //允许外部中断 0 中断 IT0=1; //选择外部中断 0 为跳沿触发方式 while(1) //循环 { P1=0;} // P1 口的 8 只 LED 全亮 } void int0( ) interrupt 0 //外中断 0 的中断服务函数 { uchar m; for(m=0;m<5;m++) //交替闪烁 5 次 { P1=0x0f; //低 4 位 LED 灭,高 4 位 LED 亮 Delay(400) ; //延时 P1=0xf0; //高 4 位 LED 灭,低 4 位 LED 亮 Delay(400); //延时 } } 例题 4:如图,在单片机 P1 口上接有 8 只 LED。在外部中 断 0 输入引脚(P3.2)接有一只按钮开关 K1。在外部中断 1 输 入引脚(P3.3)接有一只按钮开关 K2。要求 K1 和 K2 都未按 下时,P1 口的 8 只 LED 呈流水灯显示,仅 K1(P3.2)按下再

松开时,上下各4只LED交替闪烁10次,然后再回到流水灯显示。如果按下再松开K2(P3.3)时,P1口的8只LED全部闪烁10次,然后再回到流水灯显示。设置两个外中断的优先级相同。DYBLLON0.Q:0:0:U11STAL18688868L886686A82491#####666##精保复 集0R14470图2分析:主程序中开外部中断0、外部中断1,设置为下降沿触发,再实现流水灯,外部中断0函数中,交替闪烁10次,外部中断1函数中,全部闪烁10次。参考程序如下:#include#defineucharunsigned char#define uint unsigned intvoid Delay(uint i)1uchar j:for(;i>0;i--)for(j=0:j<125;j++)7
7 松开时,上下各 4 只 LED 交替闪烁 10 次,然后再回到流水灯 显示。如果按下再松开 K2(P3.3)时,P1 口的 8 只 LED 全部 闪烁 10 次,然后再回到流水灯显示。设置两个外中断的优先 级相同。 图 2 分析:主程序中开外部中断 0、外部中断 1,设置为下降 沿触发,再实现流水灯,外部中断 0 函数中,交替闪烁 10 次, 外部中断 1 函数中,全部闪烁 10 次。参考程序如下: #include #define uchar unsigned char #define uint unsigned int void Delay(uint i) { uchar j; for(;i>0;i-) for(j=0;j<125;j++)

(:)//空函数1voidmain()//主函数1uchar codedisplay[9]={oxff,Oxfe,Oxfd,Oxfb,Oxf7,Oxef,Oxdf,Oxbf,0x7f) ://流水灯显示数据数组unsigned int a;EA=1//总中断允许EX0=1://允许外部中断0中断EX1-1://允许外部中断1中断ITO=1://选择外部中断0为跳沿触发方式IT1=1://选择外部中断1为跳沿触发方式PX0=0:PX1=0:for(;:)ffor(a=0;a<9:a++)(Delay(500) ;P1=display[a]:]11voidintoisr(void)interrupto//外中断o的中断服务函数1uchar n;for (n=0;n<10;n++)//高、低4位显示10次8
8 {;} //空函数 } void main( ) //主函数 { uchar code display[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf, 0xbf,0x7f}; //流水灯显示数据数组 unsigned int a; EA=1; //总中断允许 EX0=1; //允许外部中断 0 中断 EX1=1; //允许外部中断 1 中断 IT0=1; //选择外部中断 0 为跳沿触发方式 IT1=1; //选择外部中断 1 为跳沿触发方式 PX0=0; PX1=0; for(;;) { for(a=0;a<9;a++) {Delay(500); P1=display[a];} } } void int0_isr(void) interrupt 0 //外中断 0 的中断服务函数 { uchar n; for(n=0;n<10;n++) //高、低 4 位显示 10 次

P1=0x0f;//低4位LED灭,高4位LED亮//延时Delay(500) :P1=0xf0://高4位LED灭,低4位LED亮//延时Delay (500) :11void intl isr(void)interrupt2//外中断1中断服务函数1ucharm;for(m=0;m<10;m++)//闪烁显示10次1//全灭P1=0xff;/ /延时Delay(500) ;P1=0;//全亮Delay(500) ;//延时11五、作业1、P3.2P3.3上接有按键,请用外部中断及按键消抖防误触发程序分别编程实现可加减循环计数器。要求用数码管显示,并画出整个电路图。2、P3.2P3.3上接有按键,请用外部中断及按键消抖防误触发程序分别编程实现按键控制不同花色LED显示。要求画9
9 { P1=0x0f; //低 4 位 LED 灭,高 4 位 LED 亮 Delay(500); //延时 P1=0xf0; //高 4 位 LED 灭,低 4 位 LED 亮 Delay(500); //延时 } } void int1_isr (void) interrupt 2 //外中断 1 中断服务函数 { uchar m; for(m=0;m<10;m++) //闪烁显示 10 次 { P1=0xff; //全灭 Delay(500); //延时 P1=0; //全亮 Delay(500); //延时 } } 五、作业 1、P3.2 P3.3 上接有按键,请用外部中断及按键消抖防 误触发程序分别编程实现可加减循环计数器。要求用数码管显 示,并画出整个电路图。 2、P3.2 P3.3 上接有按键,请用外部中断及按键消抖防 误触发程序分别编程实现按键控制不同花色 LED 显示。要求画

出整个电路图。3、P3.2P3.3上接有按键,请用中断程序实现value初值100.00,按下按键分别加减0.25。数码管显示。六、参考文献1.丁向荣编,单片机微机原理与接口技术(第2版),北京:电子工业出版社,20182.张毅刚编,单片机原理及应用:C51编程+Proteus仿真(第2版),北京:高等教育出版社,20163.丁元杰编,单片微机原理及应用(第三版),北京:机械工业出版社,20114.郭文川编,MCS-51单片机原理接口及应用,北京:电子工业出版社,20135.周航慈编,单片机应用程序设计技术(修订版),北京:北京航天航空大学出版社,20026.严洁编,单片机原理及其接口技术,北京,机械工业出版社,2010.七、课后记1.本节课介绍了外部中断编程方法,从硬件结构出发,使同学们在掌握中断原理的基础上,理解编程语句。2.将编程语句总结为固定套路,方便同学们使用。3.通过分组讨论作答,加深理解,巩固知识。10
10 出整个电路图。 3、P3.2 P3.3 上接有按键,请用中断程序实现 value 初 值 100.00,按下按键分别加减 0.25。数码管显示。 六、参考文献 1. 丁向荣编,单片机微机原理与接口技术(第 2 版),北京:电子 工业出版社,2018. 2. 张毅刚编, 单片机原理及应用:C51编程+Proteus仿真(第2版), 北京:高等教育出版社,2016. 3. 丁元杰编,单片微机原理及应用(第三版),北京:机械工业出 版社,2011. 4. 郭文川编,MCS-51 单片机原理接口及应用,北京:电子工业出 版社,2013. 5. 周航慈编, 单片机应用程序设计技术(修订版),北京:北京航 天航空大学出版社,2002. 6. 严洁编, 单片机原理及其接口技术,北京,机械工业出版社, 2010. 七、课后记 1.本节课介绍了外部中断编程方法,从硬件结构出发,使 同学们在掌握中断原理的基础上,理解编程语句。 2.将编程语句总结为固定套路,方便同学们使用。 3.通过分组讨论作答,加深理解,巩固知识