蓝桥杯STC15单片机复习——外部中断

发布者:创新脑细胞最新更新时间:2022-08-15 来源: csdn关键字:STC15  单片机  外部中断 手机看文章 扫描二维码
随时随地手机看文章

前言

终于到外部中断了,其实从往届赛题来看,外部中断的使用比较少(也可能是我太菜了),不过咱得秉着宁错勿漏的精神来复习才行。

在这里插入图片描述

如上图所示,STC15的单片机的外部中断分别位于P32、P33(EX0、EX1),其中,外部中断0的中断号为0,外部中断1的中断号为2.

1、通过外部中断0控制LED亮灭


/*

彭某的蓝桥杯复习——外部中断

1、外部中断按键控制LED亮灭

*/


#include

#define uint unsigned int

#define uchar unsigned char


void ALL_Init();

void EX0_Init();


void main()

{

ALL_Init();

EX0_Init();

while(1)

{

}

}


void EX0_run() interrupt 0

{

P25 = 0;P26 = 0;P27 = 1;

P00 = !P00;

}


void EX0_Init()

{

EX0 = 1;

EA = 1;

IT0 = 1;

}


void ALL_Init()

{

P25 = 0;P26 = 1;P27 = 1;

P0 = 0x00;

P25 = 1;P26 = 0;P27 = 1;

P0 = 0x00;

P25 = 0;P26 = 0;P27 = 1;

P0 = 0xff;

}


2、通过外部中断1控制流水灯流水方向

前面做流水灯测试的时候,由于延时函数的干扰,当流水速度不那么快的时,按键存在被延时函数阻塞而无法检测,这次我们通过外部中断进行控制,可以直接打断延时函数,提高按键检测是实时性。


uchar flag = 0;


void main()

{

ALL_Init();

EX0_Init();

EX1_Init();

P25 = 0;P26 = 0;P27 = 1;

P00 = 0;

while(1)

{

liushui();

}

}


void delay_ms(uint ms)

{

int i;

for(;ms>0;ms--)

for(i = 864;i>0;i--);

}


void liushui()

{

if(flag)

P0 = _cror_(P0,1);

else

P0 = _crol_(P0,1);

delay_ms(1000);

}


void EX1_run() interrupt 2

{

flag = !flag;

}


结语

至此,外部中断测试结束。

关键字:STC15  单片机  外部中断 引用地址:蓝桥杯STC15单片机复习——外部中断

上一篇:蓝桥杯STC15单片机复习——DS18B20
下一篇:蓝桥杯STC15单片机复习——矩阵按键使用

小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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