51单片机中断笔记

理解中断

在软件开发的过程中,比如有一个线程正在执行,突然有个紧急任务执行,那么哪个线程先停一下,然这个紧急任务执行完它才执行。
在硬件中,中断也是这种意思,如果有紧急任务,其他的任务先放一放,先干这个紧急任务。

如下的代码表示,中断初始化需要设置寄存器的流程

void Timer0_init(void)
{
	//设置定时器0为工作模式1,在机器刚刚初始化的时候TMOD为0x00
	TMOD &= 0xF0;		//设置定时器模式,低四位清0
	TMOD |= 0x01;		//设置定时器模式,低四位置为0001

	//设定起始时间
	TL0 = 0x18;
	TH0 = 0xFC;

	//Timer0定时器溢出标志位置0
	TF0 = 0;
	//启动Timer0定时器
	TR0 = 1;

	//开启Timer0定时器中断
	ET0 = 1;
	//开启外部中断
	EA = 1;
}

在进入中断函数后所做的处理的代码例子

void Timer0_Routine(void) interrupt 1 
{
	static unsigned char KeyCounter, NixieCounter;
	//设定起始时间 定时器时间长度 999 us
	TL0 = 0x18;
	TH0 = 0xFC;
	
	// KeyCounter++;
	// if (KeyCounter >= 20) {
	// 	KeyCounter = 0;
	// 	Key_Loop();
	// }
	// //定时器关灯与灭灯
	// Counter++;
	// if (Counter >= 500) 
	// {
	// 	P2_0 = ~P2_0;
	// 	Counter = 0;
	// }

	NixieCounter++;
	if (NixieCounter >= 2) 
	{
		Nixie_Loop();	
		NixieCounter = 0;	
	}
}
中断笔记

如下图
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
如下图TCON寄存器就是前文说的 控制单片机的定时与计数 开与关闭的寄存器。那个时候的开与关闭只是用到了高4位,它的低4位是中断所需要的。
下图中的9.3节,9.3节就是 51单片机的定时任务 这篇博客中说到的定时任务。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关验证性的代码下载,添加了vs code代码提示配置,做到了vs code编辑 keil编译(是免费的):https://download.csdn.net/download/Hello_Ray/41141041

至此 51单片机 计时、串行数据传递和中断 三板斧介绍完成了,后面将介绍关于这三部分的代码与电路远离图来解释他们真实的使用情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值