文章介绍

先复习案例案例8_1:控制2个LDE(外部中断)

仿真图

在这里插入图片描述

需要实现的效果

按下key1时(P32)小灯D1闪烁(亮1秒灭1秒)【按下不松手】

按下key2时(P33)小灯D2闪烁(亮1秒灭1秒)【按下不松手】

在这里插入图片描述

代码提示

当前只写了KEY1的代码,请你补充KEY2

#include <reg51.h>
sbit LED = P0^0;      // LED连接到P0.0

//================= 延时函数 =================
void Delay(unsigned int ms)
{
    unsigned int i, j;
    for(i = ms; i > 0; i--)
    {
        for(j = 110; j > 0; j--);
    }
}
//================= 外部中断0服务函数 =================
void EX0_ISR() interrupt 0
{
    LED = ~LED;       // LED状态取反
    Delay(1000);       // 简单消抖延时
}

//================= 主函数 =================
void main(void)
{
    LED = 1;          // LED初始熄灭(低电平点亮时可根据实际修改)
    EA  = 1;          // 开总中断
    EX0 = 1;          // 开外部中断0
    IT0 = 0;          // 低电平触发方式

    while(1)
    {
        // 保持LED默认状态
        // 等待外部中断触发
    }
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐