蓝桥杯单片机小蜜蜂学习笔记--中断系统

本笔记仅供学习交流

学习视频链接

【基础技能08】中断系统与外部中断应用

【基础技能09】定时器的基本原理与应用

大家可以参考一下欧老师的博客资料 https://bbs.21ic.com/icview-2477100-1-1.html

基本原理

中断

我不会讲那么学术化,我全部是按照自己的理解来讲的hhhhhh 野路子了

中断其实就和自定函数的感觉差不多

只不过中断的触发条件不需要我们自己设定 单片机帮你设定好了

代码部分中,我们需要设定中断函数,其实就是当你触发中断了,你想让单片机做点啥就写在这个函数里面就可以了

然后我们还需要打开中断的开关,让单片机处于中断可以被触发的状态

具体一点的比喻就是 (借用一下MC 哈哈哈)

你布置了一个活塞机(中断函数)但是你没有红石没有压力板(没有打开中断开关),用不了活塞机,所以你需要布置红石线路和压力板(打开中断开关)。当你踩到压力板上(触发中断),活塞机开始工作(中断函数工作)。大概就是这样,应该可以理解吧hhhhh。

(图片来自网络)

看一下中断的结构

(图片来自欧老师博客)

中断是存在优先级的 优先级从高到低依次是外0 定时器0 外部1 定时器1 串口

这个是控制开关的寄存器(图片来自欧老师博客)

这个是控制优先级的寄存器 (就是说万一多个中断同时触发,优先执行哪个中断函数)

这个是与中断初始化设置有关的寄存器

先上要求

好了直接上代码吧

代码

#include "reg52.h"
#include <intrins.h>
sbit l1=P0^0;
sbit l8=P0^7;

void delay(void)	//@11.0592MHz
{
	unsigned char data i, j, k;

	_nop_();
	_nop_();
	i = 43;
	j = 6;
	k = 203;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void selecthc573(unsigned char channel){
	switch(channel){
		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(){
	l1=0;
	delay();
	l1=1;
	delay();
}

void init_it0(){
	IT0=1;//设置为下降沿触发
	EX0=1;//外部中断0开关打开
	EA=1;//总中断开关打开
}
void inter_1() interrupt 0{// there must be the sign "interrupt 0"
	l8=0;
	delay();
	l8=1;
}
void main (){
	init_it0();
	selecthc573(4);
	while(1){
		LED();
	}
}

结果展示

中断功能演示

OK 下篇文章见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值