前言:单片机的中断系统(一)


80C51单片机提供两个外部中断口:  INT0(P3.2)和INT1(P3.3)引脚输入。这两个引脚是功能复用引脚,既可以作为普通V0口,也可作为外部中断输入引脚。下面以部中断0来讲述。80C51单片机在每个机器周期的S5P2期间扫描外部中断输入引脚的电平状态。当外部中断设置为下降沿触发时,若处理器在连续两个机器周期扫描到INT0引脚的电平先后为高电平和低电平时,就会设置中断标志位IE0为1,表示外部有中断申请,该中断申请信号会一直保持,直到该中断被响应,该标志由内部硬件自动清除。当外部中断设置为电平触发方式时,在外部中断引脚INTo变为低电平时,IE0变为1,并一直保持为1,直到引脚INTo的输入变为高电平时,IE0位才清0。因此,选择低电平触发方式时,对INT0的电平持续时间有严格要求,必须保持INTo引脚为低电平,直到中断被响应才 能变高,而且在中断返回前必须变成高电平,以撤销中断请求。若低电平时问太短,则可能导致中断不会被响应;若太长,在中断子程序执行完后仍为低电平,则IE0会一直保持为1,这时会导致一次中断请求,得到多次响应。 ——————http://www.51dzw.com/embed/embed_110007.html


外部中断0实验 


按键作为外部中断的产生源,按下按键,led状态反转。

图一:单片机引脚图

图二:独立按键接线图

图三:LED引脚图


程序:


#include

 

sbit key3=P3^2;//外部中断0的引脚接口

sbit led=P2^0;

 

void delay(int dat)

{

while(dat--);

}

 

void Int0Init()

{

IT0=1;//下降沿触发

//IE0=0;请求标志位,无触发,或响应中断后,硬件自动置0

EX0=1;//外部中断0允许标志

EA=1;//打开总终端

}

 

void main(void)

{

Int0Init();

while(1);//如果不写while(1),单片机在主程序中会不断循环执行,导致不断初始化

}

 

void LedRever() interrupt 0 //0是外部中断的中断号

{

delay(1000);

if(key3==0)

{

led=~led;

}

}

 

 比较有意思的是,中断函数中增加了消抖部分。


如果不加消抖,可能想程序可能想多次执行这个中断。如果消抖在外面,可能已经进入中断了,还没进行消抖。


 


外部中断1实验:


接线引脚图如图一、二、三。


普中教程代码:


/**************************************************************************************

*               外部中断1实验   *

实现现象:下载程序后按下K4按键可以对D1小灯状态取反。

注意事项:无。   

***************************************************************************************/

 

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

 

typedef unsigned int u16;   //对数据类型进行声明定义

typedef unsigned char u8;

 

sbit k4=P3^3;  //定义按键K4

sbit led=P2^0; //定义P20口是led

 

/*******************************************************************************

* 函 数 名         : delay

* 函数功能    : 延时函数,i=1时,大约延时10us

*******************************************************************************/

void delay(u16 i)

{

while(i--);

}

 

/*******************************************************************************

* 函 数 名         : Int1Init()

* 函数功能    : 设置外部中断1

* 输    入         : 无

* 输    出         : 无

*******************************************************************************/

void Int1Init()

{

//设置INT1

IT1=1;//跳变沿出发方式(下降沿)

EX1=1;//打开INT1的中断允许。

EA=1;//打开总中断

}

 

/*******************************************************************************

* 函 数 名       : main

* 函数功能 : 主函数

* 输    入       : 无

* 输    出    : 无

*******************************************************************************/

void main()

{

Int1Init();  // 设置外部中断1

while(1);

}

 

/*******************************************************************************

* 函 数 名         : Int1() interrupt 2

* 函数功能    : 外部中断0的中断函数

* 输    入         : 无

* 输    出         : 无

*******************************************************************************/

 

void Int1() interrupt 2 //外部中断1的中断函数

{

delay(1000); //延时消抖

if(k4==0)

{

led=~led;

}

}

关键字:单片机  外部中断  80C51 引用地址:单片机的外部中断(二)

上一篇:【自学51单片机】1 -- 初步认识单片机和单片机基础知识介绍
下一篇:单片机的中断系统(一)

推荐阅读

三星在西安举行了一场三星 Galaxy A 系列的发布会。在发布会上,三星正式发布了国行版本的后置四摄手机三星 Galaxy A9s 以及三星 Galaxy A6s 。这次三星 A 系列的两款手机主打的都是年轻人市场。为此,三星在软件和硬件上都下了不少功夫。三星 Galaxy A9s :作为智能手机市场上市场份额相对较大的厂商之一,中端手机毫无疑问是新技术的一块...
杭州士兰微电子近期推出了ASOP7+桥堆+二极管/SOP7+二极管/SOP4+二极管多系列LED照明驱动方案,方案集成化程度高,芯片外围高度简化,减少了元器件数量,相当大程度上降低了BOM成本,兼容DOB和非DOB方案,整体方案非常具有市场竞争力,可广泛应用于球泡灯和T管等多种LED照明市场。 其中ASOP7+桥堆+二极管系列方案包括多款产品,如非隔离低PF单芯片系列(SDH...
尽管有报道称 Redmi K30S 即将在国内正式上市,但 Redmi 仍未官宣。今天在微博上出现的几张图片表明,Redmi K30S 至尊纪念版将于 10 月 27 日正式发布。微博上(来源见图)出现的海报证实了 Redmi K30S 的名称。另外,从图像中可以明显看出,它是9月份在全球市场上发售的小米 10T 的国行版本。海报显示,Redmi K30S 的主要功能包括骁龙...
在自动驾驶普及之后,驾驶员的角色将进入历史尘埃,所有人都会转变为乘客的角色,每辆汽车都会规规矩矩地在道路行驶,每辆汽车都会保持在安全距离内,车联网技术让车辆、交通、行人这些角色融为一个数据整体,从而进行最优道路规划,插空、别车等行为也将不复存在,乘客在车辆内,可以进行读书、听音乐、聊天、看电影、网络购物等娱乐行为,道路交通环境将...

史海拾趣

问答坊 | AI 解惑

新手上路,有Microwave的问题请教

Assume I attempt to cook a steak in a microwave oven at 3.0GHz. The permittivity of round steak at this frequency is ε = ε0*40(1 - j 0.3) . How deep does the power penetrate the steak? What happens if you place your McD ...…

查看全部问答∨

RealView MDK 3.24评估版已正式发布

软件大小:99.14M 下载地址:http://www.realview.com.cn/down-list.asp?id=584 注意:MDK中国版例程服务包请前往http://www.realview.com.cn/down-list.asp?id=585下载 RealView MDK 3.24更新说明 ================== 1. ...…

查看全部问答∨

arm Linux中的IPv6协议怎么用起来?

两块板子,一块单片机板子,一块ARM9板子。单片机板子上没有操作系统,ARM9板子上加载了Linux操作系统。 一方面,在ARM9板子上,需要把单片机板子通过无线传送过来的IPv6包解析,并最终把包中应用层的数据传给PC机服务器;另一方面,ARM9板子要接 ...…

查看全部问答∨

烧写NK.BIN出现的地址错误

用pb自定义了一个Microsoft DeviceEmulator_ARMV4系统,生成SDK,编译都通过,就是在烧写到ARM9板的时候出现错误,以下是串口消息 Now,Downloading [ADDRESS:400000H,TOTAL:0X01C711DF(29823455) bytes] RECEIVED FILE SIZE: 0x00100000Date CRC0 ...…

查看全部问答∨

FPGA板子哪家的板子比较好

本人想买FPGA板子,不知道哪家提供的板子和服务比较好,请大家帮忙说说啊!…

查看全部问答∨

有两个恒流源的运放电路不太理解,希望请教一下大家

书上说左边的电路Io=Vin/R2,我能理解到根据负反馈,运放工作于虚短的状态,R2上的电压为Vin,根据KCL定理,Vin/R2=Io+Ir1(FET 源漏极电流),书里没有说为什么可以忽略这个源漏极电流,想请教一下大家。 另外右边的电路,是引入了正反馈,不能用虚 ...…

查看全部问答∨

51单片机开发板 原理图 集合下载

51单片机开发板 原理图 集合下载 ,欢迎下载学习 [ 本帖最后由 y789 于 2012-5-14 15:33 编辑 ]…

查看全部问答∨

[转]降低 SAR ADC 驱动器的放大器功耗

    由于 SAR ADC 的功耗随着每一代新器件的推出而不断降低,放大器成了功耗敏感型应用的制约因素。那么我们如何才能进一步降低功耗?在寻找可能的解决方案之前,让我们先考虑一下 ADC 功耗降低的原因。下图 1 直接显示了我们 12 位、4MS ...…

查看全部问答∨

I2C读写问题

现在用STM32驱动1音频芯片,初始化已经通过,貌似也能写,为了验证写入数据的正确性,现在要把写的数据读出来加以比较。此时,却发现问题,读出的数据 全部为0,求指教!!! …

查看全部问答∨

SensorTile物联网开发套件(6)——DIY高温报警器

本帖最后由 lb8820265 于 2016-10-29 10:40 编辑 先上效果图:      图中让SensorTile靠近盛着热水杯子,如果温度高于30摄氏度,那么APP界面就显示为红色,低于等于30就显示透明。      这个DIY主要是展 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved