【蓝桥杯—单片机学习笔记(八)】外部中断的应用

本文介绍了蓝桥杯单片机综合训练平台上的外部中断应用,通过连接S5按键到P3.2口,设置中断功能。按下S5时,触发外部中断0,点亮L8并延时熄灭。详细阐述了外部中断概念和硬件电路分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、要求

在CT107D单片机综合训练平台上,先将J5处的跳线帽接到2~3引脚,使S5按键接到单片机P3.2口(P3.2功能复用时是外部中断0触发端口)。定义一个working()函数,使L1不断闪烁。将P3.2引脚定义为外部中断功能,按下S5就会产生外部中断0信号,进而触发外部中断0.在中断响应函数中,点亮L8,延时较长一段时间后熄灭。

二、外部中断

外部中断相关概念参考:

​​​​​​【蓝桥杯—单片机学习笔记(七)】什么是中断_Backlight__的博客-优快云博客

三、硬件电路分析

如图所示按键S5直接接在单片机P3.2,所以在程序中可以直接将P3.2口定义为外部中断功能即实现上述要求。

 本次实验中还涉及到使用LED,LED相关硬件电路分析可以参考:

【蓝桥杯—单片机学习笔记(一)】LED指示灯的基本控制_Backlight__的博客-优快云博客

四、程序

#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char

sbit L1 = P0^0;
sbit L8 = P0^7;

void delay_ms(uchar xms)		//@11.0592MHz
{
	uchar i,j;
    while(xms)
    {    
        _nop_();
        _nop_();
        _nop_();
        i = 11;
        j = 190;
        do
        {
            while (--j);
        } while (--i);
        xms--;
    }
}

void channel_select(uchar n)   //开启LED数码管的译码器通道
{
    switch(n)
    {
        case 4 :
            P2 = (P2 & 0x1f) | 0x80; 
        break;
        case 5 :
            P2 = (P2 & 0x1f) | 0xa0; 
        break;
        case 6 :
            P2 = (P2 & 0x1f) | 0xc0; 
        break;
        case 7 :
            P2 = (P2 & 0x1f) | 0xe0; 
        break;
    }
    
}

void led_working()  //LED不断闪烁
{
    channel_select(4);
    L1 = 0;
    delay_ms(1000);
    L1 = 1;
    delay_ms(1000);
}

void int0_init()    //初始化外部中断0
{
    IT0 = 1;     //设置外部中断0是下降沿触发
    EA = 1;     //开总中断
    EX0 = 1;    //使能外部中断0
}

void system_init()  //系统初始化
{
    channel_select(5);  //关闭蜂鸣器和继电器
    P0 = 0x00;
    channel_select(4);  //关闭LED
    P0 = 0xff;
}

void main()
{
    system_init();
    int0_init();
    while(1)
    {
        led_working();
    }
}

void service_int0() interrupt 0     //外部中断0服务函数
{
    L8 = 0;
    delay_ms(3000); //让L8点亮久一些
    delay_ms(3000);
    delay_ms(3000);
    delay_ms(3000);
    L8 = 1;
}    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机学习之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值