proteus使用教程视频,proteus使用入门教程电子版

首页 > 经验 > 作者:YD1662022-10-30 07:01:59

1. 基于proteus的51单片机开发实例(13)-LED指示那个按键被按下

1.1. 实验目的

本实例将实现两路外部中断的检测和识别,让我们能够更好地理解51单片机的外部中断以及中断优先级的概念。在上一实例中,我们利用下降沿触发外部中断,在本实例中,使用低电平触发外部中断。通发光二极管分别指示那一路外部中断被触发。

proteus使用教程视频,proteus使用入门教程电子版(1)

图1 两路外部中断电路图

1.2. 设计思路

本实例通过判断连接在单片机的两个外部中断引脚P3.2和P3.3上的按键那个被按下,然后控制相应的连接在单片机P1.0和P1.4引脚上的发光二极管闪烁来指示电路及程序的运行情况。

1.3. 基础知识

单片机与外部设备之间的数据交换有两种方式:查询方式和中断方式。

查询方式也称为条件判断,通过查询外设的状态(一般是判断端口的电平状态),如果外设状态满足要求,则单片机会控制执行相应的流程。查询方式的优点是通用性强、直观性好,缺点是需要单片机有一个等待查询的过程。CPU在查询期间不能进行其它操作,从而导致单片机的工作效率低下。(为什么查询器件不能进行其它操作呢?因为有时候外设的状态变化是很快的,很多都是毫秒级或者微秒级、甚至更短的时间,如果在这么短的时间内单片机刚好去处理别的事情了,那么就错过了这个变化)。

中断方式则可以有效地提高单片机的工作效率,非常适合实时控制,因而在单片机系统中,中断用途非常广泛,基本上每个单片机系统都会用到中断。

查询方式是单片机主动检测外设状态,而中断则是外设主动向单片机发出请求处理的信号。CPU在收到中断信号之前,一直在执行其它程序,只有在收到外设触发的中断信号后,才中断正在执行的程序,暂时去执行外设的请求,执行完后,立即又返回主程序继续执行刚才中断的程序。中断方式完全消除了CPU在查询方式中需要一直等待的现象,极大地提高了CPU的工作效率。

下图是中断处理的流程。

proteus使用教程视频,proteus使用入门教程电子版(2)

图2 中断处理流程

下图是51单片机的中断系统结构,从图中可以看出,两个外部中断源分别从P3.2和P3.3引脚输入。外部中断请求信号有两种方式:电平触发方式、负边沿触发方式。如果是电平触发方式,则只要在引脚上检测到低电平就会产生有效的中断请求。如果是负边沿触发方式,则需要在引脚上检测到从1到0(高电平到低电平的跳变)才会产生中断申请。

proteus使用教程视频,proteus使用入门教程电子版(3)

图3 51单片机中断结构

单片机在复位后,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单片机的外部中断。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.