单片机中断及外部中断程序设计实践
上一页 下一页 返回
第一节 单片机中断及中断优先级的概念
• 80C51 单片机的中断优先级有以下三条原则: • (1) CPU 同时接收到几个中断时. 首先响应优先级别最高的中断请
求. • (2) 正在进行的中断过程不能被新的同级或低优先级的中断请求所中
断. • (3) 正在进行的低优先级中断服务. 能被高优先级中断请求所中断. • 为了实现上述后两条原则. 中断系统内部设有两个用户不能寻址的优
先级状态触发器.其中一个置“1”. 表示正在响应高优先级的中断. 它将阻断后来所有的中断请求. 另一个置“1”. 表示正在响应低优先 级中断. 它将阻断后来所有的低优先级中断请求.
下一页 返回
第一节 单片机中断及中断优先级的概念
• 实现上述中断功能的部件称为中断系统(中断机构). 随着计算机技术 的应用. 人们发现中断技术不仅解决了快速主机与慢速I/ O 设备的 数据传送问题. 而且还具有如下优点:
• (1) 分时操作. CPU 可以分时为多个I/ O 设备服务. 提高了计算机 的利用率.
上一页
• IE1 (TCON.3). 外部中断1 中断请求标志位.
• TF0 (TCON.5). 定时/ 计数器T0 溢出中断请求标志位.
• TF1 (TCON. 7). 定时/ 计数器T1 溢出中断请求标志位.
• 2. SCON 的中断标志
• 如图8. 4 所示为SCON 的中断标志位.
上一页 下一页 返回
第一节 单片机中断及பைடு நூலகம்断优先级的概念
• IT0 (TCON. 0). 外部中断0 触发方式控制位.
•
当IT0 =0 时. 为电平触发方式.
•
当IT0 =1 时. 为边沿触发方式(下降沿有效).
• IE0 (TCON.1). 外部中断0 中断请求标志位.
• IT1 (TCON. 2). 外部中断1 触发方式控制位.
第一节 单片机中断及中断优先级的概念
• RI (SCON.0). 串行口接收中断标志位. 当允许串行口接收数据 时. 每接收完一个串行帧. 由硬件置位RI. 同样. RI 必须由软件清 除.
• TI (SCON.1). 串行口发送中断标志位. 当CPU 将一个发送数 据写入串行口发送缓冲器时. 就启动了发送过程. 每发送完一个串行帧. 由硬件置位TI. CPU 响应中断时. 不能自动清除TI. TI 必须 由软件清除.
• (2) 实时响应. CPU 能够及时处理应用系统的随机事件. 系统的实 时性大大增强.
• (3) 可靠性高. CPU 具有处理设备故障及掉电等突发性事件的能力. 从而使系统可靠性提高.80C51 的中断系统有5 个中断源(80 52 有6 个). 2 级优先级. 可实现二级中断嵌套.单片机中断系统的 结构如图8. 2 所示.
• (3) TF0 (TCON.5). 片内定时/ 计数器T0 溢出中断请求标志. 当定时/ 计数器T0 发生溢出时. 置位TF0. 并向CPU 申请中断.
上一页 下一页 返回
第一节 单片机中断及中断优先级的概念
• (4) TF1 (TCON.7). 片内定时/ 计数器T1 溢出中断请求标志. 当定时/ 计数器T1 发生溢出时. 置位TF1. 并向CPU 申请中断.
第八章 单片机中断及外部中断程序设 计实践
• 第一节 单片机中断及中断优先级的概念 • 第二节 单片机中断的条件及服务程序 • 第三节 外部中断的程序设计及实践
返回
第一节 单片机中断及中断优先级的概念
• 一、中断的概念 • CPU 在处理某一事件A 时. 发生了另一事件B 请求CPU 迅速去
处理(中断发生). CPU暂时中断当前的工作. 转去处理事件B (中断 响应和中断服务). 待CPU 将事件B 处理完毕后. 再回到原来事件A 被中断的地方继续处理事件A (中断返回). 这一过程称为中断. 处理过 程如图8. 1 所示. • 引起CPU 中断的根源. 称为中断源. 中断源向CPU 提出中断请求. CPU 暂时中断原来的事务A. 转去处理事件B. 对事件B 处理完毕 后. 再回到原来被中断的地方(即断点). 称为中断返回.
上一页 下一页 返回
第一节 单片机中断及中断优先级的概念
• (1) (P3.2). 可由IT0 (TCON.0) 选择其为低电平有效还是下 降沿有效. 当CPU 检测到P3.2 引脚上出现有效的中断信号时. 中 断标志IE0 (TCON.1) 置“1”. 向CPU 申请中断.
• (2) (P3.3). 可由IT1 (TCON.2) 选择其为低电平有效还是下 降沿有效. 当CPU 检测到P3.3 引脚上出现有效的中断信号时. 中 断标志IE1 (TCON.3) 置“1”. 向CPU 申请中断.
• (5) RI (SCON.0) 或TI (SCON.1). 串行口中断请求标志. 当串行口接收完一帧串行数据时置位RI 或当串行口发送完一帧串 行数据时置位TI. 向CPU 申请中断.
• 二、中断请求的标志 • 1. TCON 的中断标志 • 如图8.3 所示为TCON 的中断标志位.
上一页 下一页 返回
上一页 下一页 返回
第一节 单片机中断及中断优先级的概念
• 三、中断允许控制 • CPU 对中断系统的所有中断以及某个中断源的开放和屏蔽是由中
断允许寄存器IE 控制的. 如图8. 5 所示为中断允许控制标志位.
上一页 下一页 返回
第一节 单片机中断及中断优先级的概念
• EX0 (IE.0). 外部中断0 允许位. • ET0 (IE.1). 定时/ 计数器T0 中断允许位. • EX1 (IE.2). 外部中断1 允许位. • ET1 (IE.3). 定时/ 计数器T1 中断允许位. • ES (IE. 4). 串行口中断允许位. • EA (IE. 7). CPU 中断允许(总允许) 位. • 四、中断优先级控制 • 80C51 单片机有两个中断优先级. 即可实现二级中断服务嵌套.
外部中断计数实验报告
一、实验目的1. 理解单片机外部中断的工作原理和触发条件。
2. 掌握如何通过外部中断实现计数功能。
3. 学习中断服务程序的设计方法。
4. 提高单片机编程和调试能力。
二、实验环境1. 单片机:80C512. 开发工具:Keil uVision3. 实验电路:按键、LED灯、单片机及其相关外围电路三、实验原理外部中断是指单片机通过外部引脚接收到的中断信号,使得CPU暂停当前程序,转而执行中断服务程序。
本实验通过外部中断实现计数功能,具体原理如下:1. 将单片机的某个外部引脚(如P3.2)设置为外部中断0(INT0)的触发引脚。
2. 在外部中断0的中断服务程序中,设置一个计数变量,每次中断发生时,计数变量加1。
3. 将计数变量的值通过LED灯显示出来,以观察计数过程。
四、实验步骤1. 创建Keil uVision项目,并添加80C51固件库。
2. 编写C语言程序,实现以下功能:- 初始化外部中断0,设置中断触发方式为下降沿触发。
- 初始化定时器,用于产生中断。
- 编写外部中断0的中断服务程序,实现计数功能。
- 编写主函数,用于设置单片机的工作状态和显示计数结果。
3. 编译并下载程序到单片机。
4. 连接实验电路,包括按键、LED灯和单片机及其相关外围电路。
5. 观察实验现象,验证计数功能是否实现。
五、实验结果与分析1. 实验现象:按下按键,LED灯显示的计数值加1。
2. 分析:- 外部中断0的中断服务程序被正确调用。
- 计数变量在每次中断发生时加1。
- LED灯能够正确显示计数结果。
六、实验总结1. 本实验成功实现了通过外部中断实现计数功能,验证了单片机外部中断的工作原理。
2. 通过编写中断服务程序,掌握了中断编程方法。
3. 实验过程中,遇到了一些问题,如中断服务程序编写错误、程序编译错误等,通过查阅资料和调试,最终解决了问题。
4. 通过本次实验,提高了单片机编程和调试能力,加深了对单片机外部中断的理解。
51单片机中断程序例子
51单片机中断程序例子
1. 外部中断:当外部信号引脚检测到高电平时,单片机会触发外部中断服务程序。
可以利用外部中断实现按键扫描功能,当按键按下时,触发中断程序对按键进行处理。
2. 定时器中断:利用定时器中断可以实现精确的时间控制。
例如,我们可以设置定时器中断为1秒,当定时器溢出时,触发中断程序,实现1秒钟执行一次的任务。
3. 串口中断:当接收到串口数据时,单片机会触发串口中断服务程序,可以利用串口中断实现串口通信功能。
4. ADC中断:当模数转换器完成一次转换时,单片机会触发ADC中断服务程序,可以利用ADC中断实现模拟信号的采集和处理。
5. 看门狗中断:看门狗定时器溢出时,单片机会触发看门狗中断服务程序,可以利用看门狗中断实现系统复位或其他相关功能。
6. 外部中断优先级:当多个外部中断同时触发时,可以通过设置外部中断的优先级来确定触发的顺序和优先级。
7. 定时器中断优先级:当多个定时器中断同时触发时,可以通过设置定时器中断的优先级来确定触发的顺序和优先级。
8. 中断嵌套:单片机支持中断嵌套,即在一个中断服务程序中触发
另一个中断服务程序,可以通过中断嵌套实现复杂的任务处理。
9. 中断屏蔽:单片机支持对中断的屏蔽,即可以通过设置中断屏蔽标志位来屏蔽某些中断,使其暂时不被触发。
10. 中断标志位:单片机提供中断标志位,用于标识中断是否被触发。
在中断服务程序中,可以通过读取和清除中断标志位来判断中断是否发生。
以上是根据51单片机中断程序的例子进行的描述,这些例子涵盖了常见的中断类型和相关功能。
通过学习和理解这些例子,可以更好地掌握51单片机中断编程的原理和方法。
单片机外部中断实验报告
单片机外部中断实验报告实验三外部中断实验报告班级:学号:姓名:教师:一、实验LI的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管DPD8O每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3 口是8位准双向口,具有双重功能:第一功能和P1 口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3. 0RXD串行输入口P3. 1TXD串行输出口P3. 2INTO外部中断0请求输入线P3. 3INT1外部中断1请求输入线P3.4TO定时器/计数器TO外部计数器脉冲输入线P3. 5T1定时器/计数器T1外部计数器脉冲输入线P3. 6WR外部数据存贮器写脉冲输出线P3. 7RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断003H定时器/计数器T1溢出中断OBH外部中断113H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EAESET1EX1ET0EX0(1)外部中断源允许中断(中断0: EX0=l;中断1: EXl=l)o(2)CPU 开中断(EA二1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCOX:TF1TR1TF0TR0IE1IT1IE0IT0IT0是选择文字则外部中断0请求(INTO)边沿触发方式或电平触发方式的控制位。
前一方式IT0二1,后一方式IT0二0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式ITl=0o当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
单片机中断实验实训报告
一、实验背景随着电子技术的飞速发展,单片机因其体积小、成本低、功能强大等优点,在各个领域得到了广泛应用。
中断技术是单片机设计中非常重要的一部分,它允许单片机在执行程序的过程中,能够及时响应外部事件,从而提高系统的实时性和效率。
本实训旨在通过实验,加深对单片机中断系统的理解,掌握中断系统的使用方法,并学会在实际应用中灵活运用中断技术。
二、实验目的1. 熟悉单片机中断系统的基本概念和原理。
2. 掌握中断源、中断优先级、中断服务程序等基本概念。
3. 学会使用单片机的中断系统实现实时响应外部事件。
4. 培养动手实践能力和问题解决能力。
三、实验器材1. 单片机实验板2. 示波器3. 电源4. 连接线5. 逻辑分析仪(可选)四、实验内容1. 实验一:外部中断实验(1)实验目的:验证外部中断功能,实现按键控制LED灯的点亮和熄灭。
(2)实验步骤:a. 将外部中断0(INT0)引脚连接到按键,按键按下时产生低电平信号。
b. 编写中断服务程序,实现按键按下时点亮LED灯,按键释放时熄灭LED灯。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的点亮和熄灭情况。
2. 实验二:定时器中断实验(1)实验目的:验证定时器中断功能,实现LED灯的定时闪烁。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断,编写定时器中断服务程序,实现LED灯的定时闪烁。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的闪烁情况。
3. 实验三:中断嵌套实验(1)实验目的:验证中断嵌套功能,实现定时器中断和外部中断的嵌套。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断和外部中断,设置中断优先级。
c. 编写定时器中断服务程序和外部中断服务程序,实现中断嵌套。
d. 编译程序,下载到单片机实验板上。
单片机外部中断实验程序
单片机外部中断实验程序单片机外部中断是一种常用的硬件中断方式,可以使单片机在执行主程序的同时,及时响应外部设备的信号,并进行相应的处理。
在本实验中,我们将编写一段简单的程序,用于实现单片机外部中断的功能。
首先,我们需要明确实验的硬件配置。
本实验中,我们使用的是STC89C52单片机,其中P3.2引脚作为外部中断0的引脚。
接下来,我们将详细介绍实验的步骤。
首先,在主程序中,我们需要首先对单片机的外部中断进行初始化设置。
具体的设置步骤如下:1.设置外部中断引脚的工作方式。
我们需要将P3.2引脚设置为外部中断0的工作模式。
可以通过将P3.2引脚对应的P3CON寄存器位设置为1来实现。
2.设置外部中断的触发方式。
单片机外部中断可以通过电平触发或边沿触发来响应外部设备的信号。
在本实验中,我们选择边沿触发方式。
可以通过将IE寄存器中的EX0位设置为1来实现。
然后,在程序的主循环中,我们可以编写一个简单的实验程序,用于验证外部中断的功能。
具体的步骤如下:1.在主循环中,我们可以设置一个循环延时函数,用于模拟主程序的执行过程。
2.在循环延时函数的适当位置,可以编写一段代码来模拟外部设备的信号触发。
可以通过向P3.2引脚输出一个高电平信号来触发外部中断。
3.在外部中断的中断服务函数中,我们可以编写一段简单的代码,用于处理外部中断触发时的操作。
可以通过向LED等外设输出一个特定的信号,以验证中断服务函数的正确性。
最后,在程序的尾部,我们可以添加一个死循环,用于保证程序的持续运行。
具体的代码如下所示:```#include<reg52.h>sbit LED=P1^0;void delay(unsigned int t){unsigned int i,j;for(i=t;i>0;i--)for(j=110;j>0;j--);}void ExternalInterrupt0()interrupt0{LED=~LED;delay(100);}void main(){IT0=1;//设置外部中断0为边沿触发EX0=1;//允许外部中断0EA=1;//允许总中断while(1){//主循环中的其他操作delay(1000);}}```通过以上的程序,我们可以实现单片机的外部中断功能。
中断原理实验报告总结(3篇)
第1篇一、实验目的本次实验旨在通过实际操作,加深对中断原理的理解,掌握单片机中断系统的工作机制,学会外部中断和定时/计数器的使用,以及串口数据发送和接收的方法。
二、实验内容1. 外部中断原理及使用(1)实验原理:通过实验,了解外部中断的工作原理,掌握外部中断的使用方法,包括中断源的设置、中断服务程序的编写和中断请求的处理。
(2)实验步骤:设置外部中断源,编写中断服务程序,实现按键控制LED灯亮灭。
2. 定时/计数器的使用(1)实验原理:通过实验,了解定时/计数器的工作原理,掌握定时/计数器的使用方法,包括定时/计数器的初始化、定时/计数器的启动和停止、定时/计数器的中断处理。
(2)实验步骤:设置定时/计数器,实现LED灯的闪烁。
3. 串口数据发送和接收(1)实验原理:通过实验,了解串口通信的工作原理,掌握串口数据发送和接收的方法,包括串口初始化、发送和接收数据的流程。
(2)实验步骤:实现单片机与计算机之间的串口通信,发送和接收数据。
三、实验结果及分析1. 外部中断实验结果及分析实验中,通过按键控制LED灯亮灭,实现了外部中断的基本功能。
实验结果表明,当按键被按下时,外部中断请求信号被触发,中断服务程序被执行,LED灯状态发生改变。
2. 定时/计数器实验结果及分析实验中,通过定时/计数器实现LED灯的闪烁,实现了定时功能。
实验结果表明,定时/计数器能够按照设定的周期产生中断,中断服务程序能够按照要求执行。
3. 串口数据发送和接收实验结果及分析实验中,通过串口通信实现单片机与计算机之间的数据传输。
实验结果表明,单片机能够按照设定的波特率发送和接收数据,计算机端能够正确接收并显示数据。
四、实验总结1. 通过本次实验,加深了对中断原理的理解,掌握了单片机中断系统的工作机制。
2. 掌握了外部中断、定时/计数器和串口通信的使用方法,为后续学习和实践打下了基础。
3. 在实验过程中,培养了动手实践能力,提高了解决问题的能力。
单片机 实验2-外部中断程序设计-中断按键按下次数计数数码管显示-硬件和程序设计参考
硬件电路参考如下:程序参考如下:#pragma sfr#pragma interrupt INTP0 LED_INTP0 /* 定义使用INTP0中断,中断函数名LED_INTP0*/ #pragma di /*禁止使用中断功能声明*/#pragma ei /*允许使用中断功能声明*//*数码管编码数组*/unsigned char LED_light[10]={0x30,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x3F}; unsigned char j=0; /*按键次数变量*/void hdinit() /*硬件初始化*/{PM1=0; /*P1口输出数码管字型码,所以设置为输出*/PU1=0XFF; /*由于P1口直接驱动数码管显示,为增大驱动,设置为内部上拉*/PM12.0=0; /*P12.0口线要作为中断多功能,设置为输出和内部上拉 */PU12.0=1;PIF0=0; /*中断请求标志,没有中断请求*/PMK0=0; /*中断屏蔽标志,允许中断*/PPR0=1; /*中断优先级,低优先级*/EGP.0=1; /*与EGN组合,上升沿有效*/EGN.0=0;}void main (void){DI(); /*首先做准备,禁止中断*/IMS=0XCC;IXS=0X00;hdinit();EI(); /*准备完成,允许中断*/while(1){ /*啥也不干,就等待中断,仅是在这个实验中使用中断,实际不是这样/*}}__interrupt void LED_INTP0() /*中断函数*/{ P1= LED_light[j]; /*P1赋值,数码管显示相应数值*/j++; /*按键次数加一*/if(j==10) /*如果按键次数达到十次,按键计数归0*/{j=0;} }思考: 如果用两位数码管,从0—99循环计数又该怎样设计硬件和软件呢?。
单片机外部中断实训报告
一、实训目的1. 理解单片机外部中断的概念和作用。
2. 掌握单片机外部中断的配置方法。
3. 学会编写外部中断服务程序。
4. 通过实际操作,提高单片机编程和调试能力。
二、实训内容1. 单片机外部中断原理2. 单片机外部中断配置3. 外部中断服务程序编写4. 实验验证与调试三、实训环境1. 单片机开发板:选用STC89C52单片机。
2. 仿真软件:Proteus。
3. 实验工具:示波器、电源、连接线等。
四、实训步骤1. 理解单片机外部中断原理外部中断是单片机中断系统中的一种,用于响应外部事件。
当外部事件发生时,单片机会暂停当前程序,转去执行外部中断服务程序。
外部中断有多个中断源,如INT0、INT1等。
2. 单片机外部中断配置(1)设置外部中断触发方式:根据需要选择上升沿触发、下降沿触发或双边沿触发。
(2)设置外部中断优先级:根据实际需求设置中断优先级。
(3)设置外部中断使能:通过设置IE寄存器使能外部中断。
3. 外部中断服务程序编写编写外部中断服务程序,用于处理外部中断事件。
在服务程序中,完成相关处理逻辑,如记录外部事件发生次数、控制LED灯闪烁等。
4. 实验验证与调试(1)搭建实验电路:将单片机开发板与外部设备(如按钮)连接,设置好外部中断配置。
(2)在Proteus中搭建仿真电路,编写代码。
(3)下载代码到单片机开发板,观察实验现象。
(4)根据实验现象,调试程序,确保外部中断功能正常。
五、实验结果与分析1. 实验现象:按下外部按钮,单片机进入外部中断服务程序,控制LED灯闪烁。
2. 分析:通过设置外部中断触发方式、优先级和使能,成功实现外部中断功能。
在服务程序中,完成相关处理逻辑,达到预期效果。
六、实训总结1. 通过本次实训,掌握了单片机外部中断的配置方法,学会了编写外部中断服务程序。
2. 熟悉了外部中断在实际应用中的重要作用,提高了单片机编程和调试能力。
3. 在实训过程中,遇到了一些问题,如外部中断响应不及时、LED灯闪烁不稳定等。
单片机实验报告四 外部中断实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019. 4.30 实验成绩:实验四外部中断实验(一)实验目的1.掌握单片机外部中断原理;2.掌握数码管动态显示原理。
(二)设计要求1.使用外部中断0和外部中断1;2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。
(三)实验原理1.中断:计算机执行主程序过程中,由于临时重要事件,需要暂停当前程序的运行,转到中断服务程序去处理临时事件,处理完后又返回原程序的断点处继续运行。
图1STC15单片机的中断系统包含21个中断源,2个中断优先级,二级中断服务嵌套,中断允许寄存器IE、IE2和INT_CLKO控制中断允许。
中断优先级寄存器IP、IP2管理中断优先级。
同优先级中断同时提出中断请求时,由内部的查询逻辑确定响应次序。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下:1)外部中断0(INT0):中断信号由P3.2引脚输入。
通过IT0来设置中断请求的触发方式。
当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2)外部中断1(INT1):中断信号由P3.3引脚输入。
通过IT1来设置中断请求的触发方式。
当IT1为“1”时,外部中断0为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2.LED数码管是显示数字和字母的常见显示器件,由8个发光二极管构成,结构如图2:图2段码:a、b、c、d、e、f、g、dp段的二进制代码(a为最低位),控制显示字型。
位选:公共端com,控制数码管是否显示。
3.数码管动态显示原理:任何时刻只有一个数码管处于显示状态,单片机采用“扫描”方式控制各个数码管轮流显示,通常将所有数码管段码线的相应段并联在一起,由一个8位I/O 端口控制。
实验四-MCS-51单片机外部中断实验
实验四-MCS-51单片机外部中断实验实验目的:1. 学习MCS-51单片机的外部中断原理和使用方法;2. 掌握如何通过硬件中断和软件中断实现MCS-51单片机的响应机制;3. 了解MCS-51单片机外部中断的实际应用。
实验器材:MCS-51单片机开发板、按键开关、调试器。
实验原理:MCS-51单片机通过INT0和INT1两个硬件中断引脚实现外部中断。
当INT0外部中断线检测到低电平信号时,中断向量为0x0003;当INT1外部中断线检测到低电平信号时,中断向量为0x0013。
通过配置中断控制寄存器IE和TCON,可以实现对外部中断的使能、触发方式和优先级等的控制。
MCS-51单片机还可以通过软件方式实现外部中断,即通过软件方式扫描外部信号,并在检测到信号发生变化时触发相应的中断处理程序。
实现软件中断的方法是使用定时器功能,通过定时器中断触发中断服务程序,该程序扫描外部信号,并根据需要触发软件中断。
实验步骤:1. 将开发板上的按键开关连接到开发板的P3.2引脚。
按键开关按下时,P3.2引脚被拉低,可以触发外部中断。
2. 打开Keil μVision5软件,新建工程,选择芯片型号为STC89C52,保存并命名为“Exp4”。
3. 在主函数中声明中断函数,并在中断函数中打印提示信息。
4. 在主函数中初始化中断控制寄存器IE和TCON,开启INT0外部中断,并将中断优先级设置为最高。
5. 在主函数中使用无限循环,来保持程序一直运行,并定时打印提示信息,以验证程序是否正常运行。
6. 烧录程序到开发板上,先在开发板上不按下按键,观察是否正常打印提示信息。
然后按下按键,观察是否触发外部中断,进入中断函数并打印提示信息。
实验代码:#include<STC89C52.h>#include<stdio.h>// 定义外部中断0的中断服务函数void Interrupt0() interrupt 0{printf("External interrupt 0 has occured!\n");}// 打印提示信息printf("Program is running...\n");while(1){// 定时打印提示信息printf("Hello!\n");delay_ms(1000);}}注意事项:1. 写中断程序时,一定要注意将中断函数的声明放在程序开头,否则可能会出现中断无法触发的情况;2. 在使用中断相关功能的时候,务必仔细阅读数据手册中的相关章节,以确保正确使用并且避免出现不必要的错误;3. 在进行外部中断实验的时候,可以使用按键开关、光敏电阻等外部器件来模拟外部信号的变化,以测试程序的正确性。
