基于小蜜蜂蓝桥杯单片机的外部中断的基本操作

本文介绍了如何在CT107D单片机上利用S4和S5按键作为外部中断源,通过下降沿触发INT0和INT1,实现LED灯的控制和中断服务函数的编写。涉及51单片机的中断系统原理及应用实践。
摘要由CSDN通过智能技术生成

2.8 【基础 08】外部中断的基本操作 新建工程,以 I/O 模式编写代码,在 CT107D 单片机综合训练平台上,实现以下功能:

1、将 CT107D 上 J5 处跳帽接到 2~3 引脚,使 S4 和 S5 按键一端接地,S4 按键的另一 端接到单片机的 P32/INT0 引脚,S5 按键的另一端接到单片机的 P33/INT1 引脚。

2、系统上电后,关闭蜂鸣器,关闭继电器,关闭 8 个 LED 灯。

3、控制 L1 指示灯循环闪烁。

4、将 P32/INT0 引脚定义成外部中断,下降沿触发,使能相关中断控制位。即按下 S5 按键就会产生一个外部中断触发信号,进入外部中断服务函数。

5、在外部中断服务函数中,点亮 L8 指示灯,延时片刻后,熄灭。

【训练要点】: 51 单片机的中断结构与工作原理,中断服务函数的编写规则。 51 单片机的外部中断原理与基本应用。

【参考资源】: B 站视频教程

【基础技能 08】中断系统与外部中断应用 B 站视频教程【外部中断 02】51 单片机的中断系统 B 站视频教程【外部中断 03】51 单片机的外部中断原理与应用。

限于个人水平,难于做到尽善尽美,且本专栏主要起练习笔记作用。如有前辈发现代码错误或可以优化的地方,还请不吝赐教,学生感激不尽。

#include<STC15F2K60S2.h>

void SelectHc573(unsigned char num1,num2)
{
	P2=(P2&0x1f)|0x00;
	P0=num2;
	switch(num1)
	{
		case 0:
			P2=(P2&0x1f)|0x00;
		break;
		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;
	}
	P2=(P2&0x1f)|0x00;
}

void Init()
{
	SelectHc573(4,0xff);
	SelectHc573(5,0x00);
}


void Delay(unsigned int t)
{
	while(t--);
}
	
void Working()
{
  SelectHc573(4,~(0x01));
	Delay(50000);
	Delay(50000);
	Delay(50000);
	SelectHc573(4,0xff);
	Delay(50000);
	Delay(50000);
	Delay(50000);
}



void InitInt0()
{
	IT0=1;
	EX0=1;
	EA=1;
}

unsigned char flag=0;
void ServiceInt0() interrupt 0
{
	flag=1;
}

void LED()
{
	if(flag==1)
	{
		SelectHc573(4,~(0x80));
		Delay(50000);
		Delay(50000);
		Delay(50000);
		Delay(50000);
		SelectHc573(4,0xff);
		Delay(50000);
		Delay(50000);
		Delay(50000);
	}
	flag=0;
}


void main()
{
	Init();
	InitInt0();
	while(1)
	{
		Working();
		LED();
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值