网站首页 > 技术教程 正文
1. 基于proteus的51单片机开发实例(13)-LED指示那个按键被按下
1.1. 实验目的
本实例将实现两路外部中断的检测和识别,让我们能够更好地理解51单片机的外部中断以及中断优先级的概念。在上一实例中,我们利用下降沿触发外部中断,在本实例中,使用低电平触发外部中断。通发光二极管分别指示那一路外部中断被触发。
1.2. 设计思路
本实例通过判断连接在单片机的两个外部中断引脚P3.2和P3.3上的按键那个被按下,然后控制相应的连接在单片机P1.0和P1.4引脚上的发光二极管闪烁来指示电路及程序的运行情况。
1.3. 基础知识
单片机与外部设备之间的数据交换有两种方式:查询方式和中断方式。
查询方式也称为条件判断,通过查询外设的状态(一般是判断端口的电平状态),如果外设状态满足要求,则单片机会控制执行相应的流程。查询方式的优点是通用性强、直观性好,缺点是需要单片机有一个等待查询的过程。CPU在查询期间不能进行其它操作,从而导致单片机的工作效率低下。(为什么查询器件不能进行其它操作呢?因为有时候外设的状态变化是很快的,很多都是毫秒级或者微秒级、甚至更短的时间,如果在这么短的时间内单片机刚好去处理别的事情了,那么就错过了这个变化)。
中断方式则可以有效地提高单片机的工作效率,非常适合实时控制,因而在单片机系统中,中断用途非常广泛,基本上每个单片机系统都会用到中断。
查询方式是单片机主动检测外设状态,而中断则是外设主动向单片机发出请求处理的信号。CPU在收到中断信号之前,一直在执行其它程序,只有在收到外设触发的中断信号后,才中断正在执行的程序,暂时去执行外设的请求,执行完后,立即又返回主程序继续执行刚才中断的程序。中断方式完全消除了CPU在查询方式中需要一直等待的现象,极大地提高了CPU的工作效率。
下图是中断处理的流程。
下图是51单片机的中断系统结构,从图中可以看出,两个外部中断源分别从P3.2和P3.3引脚输入。外部中断请求信号有两种方式:电平触发方式、负边沿触发方式。如果是电平触发方式,则只要在引脚上检测到低电平就会产生有效的中断请求。如果是负边沿触发方式,则需要在引脚上检测到从1到0(高电平到低电平的跳变)才会产生中断申请。
单片机在复位后,IE寄存器中各位的状态都是0,所以CPU是处于总中断关闭的状态。
1.4. 电路设计
本实例的电路图如图1所示。电路中两个按键分别接单片机的两个外部中断引脚P3.2和P3.3。单片机P1.0和P1.4通过灌电流的方式连接两个发光二极管。
1.5. 程序设计
本实例的程序代码如下。程序中有两个中断服务程序,注意中断服务程序的书写方法。
#include<AT89x52.h>
//宏定义
#define ON0
#define OFF 1//LED开、闭定义
//端口定义
sbit LED1=P1^3;
sbit LED2=P1^7; //LED驱动引脚定义
int main(void)
{
IT0=0; //设置外部中断0触发方式为低电平
IT1=0; //设置外部中断1触发方式为低电平
EX0=1; //使能外部中断0
EX1=1; //使能外部中断1
EA=1;//使能总中断
LED1=OFF;
LED2=OFF;
while(1)
{
}
}
//
EX_INT0() interrupt 0 using 1 //外部中断0服务函数
{
LED1=~LED1; //进入中断之后LED1翻转
}
//
EX_INT1() interrupt 2 using 2//外部中断1服务函数
{
LED2=~LED2; //进入中断之后LED2翻转
}
1.6. 实例仿真
将程序编译后生成hex文件,然后本例的proteus电路中,将程序装入单片机中。运行仿真,如下面视频所示。
1.7. 总结
通过本实例,我们学习了单片机中多中断服务函数的编写方法。更加熟悉了51单片机的外部中断。
猜你喜欢
- 2024-11-03 同学先别急着看单片机,先看看这个软件吧
- 2024-11-03 基于proteus的51单片机开发实例37-DAC0832
- 2024-11-03 单片机常用电路3-按键检测、LED驱动电路
- 2024-11-03 51单片机教程 第一个51程序 :点亮一个发光二极管(含代码)
- 2024-11-03 1. 基于proteus的51单片机开发实例(2)--闪烁的灯光
- 2024-11-03 1. 基于proteus的51单片机开发实例30-模块化程序设计
- 2024-11-03 从一个简单的项目,学会单片机的使用:51单片机设计的8路抢答器
- 2024-11-03 PROTEUS仿真DHT11(1)(proteus仿真dht11一直为0)
- 2024-11-03 售前/售后技术支持工程师简历专业技能怎么写
- 2024-11-03 proteus软件下载教程:proteus的电路仿真和虚拟模型仿真的区别
你 发表评论:
欢迎- 最近发表
-
- linux日志文件的管理、备份及日志服务器的搭建
- Linux下挂载windows的共享目录操作方法
- Linux系统中的备份文件命令(linux系统中的备份文件命令有哪些)
- 麒麟KYLINOS|通过不同方法设置用户访问文件及目录权限
- 「Linux笔记」系统目录结构(linux目录的结构及含义)
- linux中修改归属权chown命令和chgrp命令
- 工作日报 2021.10.27 Android-SEAndroid权限问题指南
- Windows和Linux环境下,修改Ollama的模型默认保存路径
- 如何强制用户在 Linux 上下次登录时更改密码?
- 如何删除Linux文件夹中除某些扩展名之外的所有文件?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)