【蓝桥杯单片机笔记4】中断系统与外部中断系统应用

本文介绍了如何在Atmel AVR单片机中利用中断系统INT0实现延时,包括中断配置、中断函数编写规则,并展示了如何结合LED控制进行实战示例。

内容来自小蜜蜂老师~

中断系统

外部中断0 INT0 、0(中断号)

定时计数器0 TF0、1

外部中断1 INT1、2

定时计数器1 TF1、3

串口中断 RI/TI、4

与中断相关的寄存器

​ 

 中断系统结构

中断函数编写规则


1.相关配置初始化   2.中断功能执行函数

中断函数框架
void 函数名() interrupt 中断号
{

}

中断的优先级:
外部中断0 > 定时/计数器0 >外部中断1 > 定时/计数器1 >串口中断

题目要求:

直接在中断函数中延时 

#include "reg52.h"

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


void Delay(unsigned int t)
{
	while(t--);
}

void HC138(unsigned char n)
{
 	switch(n)
	{
	 	case 4: P2 = P2 |0x1f; P2 = 0x80; break;
		case 5: P2 = P2 |0x1f; P2 = 0xa0; break;
		case 6: P2 = P2 |0x1f; P2 = 0xc0; break;
		case 7: P2 = P2 |0x1f; P2 = 0xe0; break;
	}

}

void Init_INT0()
{
 	 EX0 = 1; //使能外部中断0
	 IT0 = 1; //下降沿触发
	 EA = 1;  //中断总开关
}

void ServerINT0() interrupt 0
{
	L8 = 0;
	Delay(60000);
	L8 = 1;
	Delay(60000);
}


void LED1_Work(void)
{
 	L1 = 0;
	Delay(60000);
	L1 = 1;
	Delay(60000);

}

void Initsystem()
{
	HC138(5);
	P0=0x00;
	HC138(4);
	P0=0xff;
}

void main()
{
	Init_INT0();
	Initsystem(); 
 	while(1)
	{
		 LED1_Work();

	}

}

在外部执行延时

#include "reg52.h"

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


void Delay(unsigned int t)
{
	while(t--);
}

void HC138(unsigned char n)
{
 	switch(n)
	{
	 	case 4: P2 = P2 |0x1f; P2 = 0x80; break;
		case 5: P2 = P2 |0x1f; P2 = 0xa0; break;
		case 6: P2 = P2 |0x1f; P2 = 0xc0; break;
		case 7: P2 = P2 |0x1f; P2 = 0xe0; break;
	}

}

void Init_INT0()
{
 	 EX0 = 1; //使能外部中断0
	 IT0 = 1; //下降沿触发
	 EA = 1;  //中断总开关
}
unsigned char stat_int = 0;
void ServerINT0() interrupt 0
{
	stat_int = 1;
}

void LEDINT()
{
	if(stat_int == 1)
	{
		L8 = 0;
		Delay(60000);
		L8 = 1;
	}
	stat_int = 0;
}

void LED1_Work()
{
 	L1 = 0;
	Delay(60000);
	L1 = 1;
	Delay(60000);

}

void Initsystem()
{
	HC138(5);
	P0=0x00;
	HC138(4);
	P0=0xff;
}

void main()
{
	Init_INT0();
	Initsystem(); 
 	while(1)
	{
		 LED1_Work();
		 LEDINT();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值