4个中断应用实例讲解
【例1】 利用单片机的外部中断0响应按键开关的按键信号,当有按键按下时,单片机响应中断,并使内部某变量加1,硬件电路如图4-4所示。
图4-4 单片机外部中断检测按键电路图
C51源程序如下:
提示
将按键电路改为其他传感器电路,如光电传感器检测电路,霍尔传感器检测电路,热释电传感器检测电路等即可实现不同的检测控制功能。
【例2】 2个按健中断控制流水等灯的速度,按健K0用以减慢速度控制,按健K1用以加快速度控制,硬件电路如图4-5所示。
图4-5 流水灯控制电路图
C51源程序如下:
【例3】 利用单片机外部中断即时实现不同方式的流水灯控制,L2开关实现2只灯循环亮,L1开关实现1只灯循环亮,两个控制开关具有不同的优先级别,L2比L1具有更高的优先级。硬件电路如图4-6所示。
C51源程序如下:
图4-6 不同优先级别控制流水灯电路图
【例4】 利用单片机外部中断实现遥控解码。具体功能:通过电视机遥控器向单片机系统板上的一体化红外线接收头发射红外遥控编码信号,由于一体化红外线接收头的输出端与单片机的外部中断0相连,从而触发单片机产生中断,单片机根据红外遥控信号的组成对功能码进行识别,并通过P1口的发光二极管显示该功能码。
单片机与一体化红外接收头HS0038的引脚连接如图4-7所示,单片机与发光二极管的连接可以参照本章之前案例中的硬件电路图,这里省略未画出。
图4-7 HS0038引脚连接图
系统分析如下:
遥控编码脉冲信号通常由引导码、系统码、系统反码、功能码和功能反码组成。引导码由宽度为9ms的高电平和宽度为4.5ms的低电平组成。8位的系统码又称为识别码,主要是为了区分不同的控制系统,防止误动作。8位功能码也称为数据码,其代表相应的控制功能。8位的系统反码和功能反码的加入是为了校对传输过程中产生的差错提高抗干扰性能,遥控编码脉冲信号组成如图4-8所示。
图4-8 遥控编码脉冲信号的组成图
当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。
解码的关键是如何识别“0”和“1”,采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。其串行码波形如图4-9所示。
图4-9 0和1的构成串行码波形图
从上图中可以发现,位“0”、“1”均以0.565ms的高电平开始,不同的是低电平的宽度不同,“0”为0.56ms,“1”为1.685ms,所以可以根据低电平的宽度区别“0”和“1”。如果从0.565ms高电平过后,开始延时,0.56ms以后,若读到的电平为高,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.125ms,否则如果该位为“0”,读到的已是下一位的低电平,因此一般取(1.125ms+0.56ms)/2≈0.84ms。
C51源程序如下:
单片机的中断现象是什么?他又为什么会中断呢?怎样解决就是关键
先来卖个关子, 什么是中断呢
在我们的日常生活中,经常会遇到这样的情况:我们正在看书,突然客厅的电话响了,这时往往会停止看书,转而去接电话,接完电话后又接着看书。这种停止当前工作,转而去做其他工作,做完后又返回来做先前工作的现象称为中断。所以
单片机虽然是个机器,它也有类似的中断现象,当单片机正在执行某程序时,如果突然出现意外情况,它就需要停止当前正在执行的程序,转而去处理意外情况,处理完后又接着执行原来的程序。
我们先看看中断的有关概念
1.中断源
要让 CPU 中断当前的程序去做其他事情,需要向它发出请求信号,CPU 接收到中断请求信号后才能产生中断。让CPU产生中断的信号称为中断源(又称中断请求源)。
MCS-51系列单片机的中断源包括:两个外部中断源、两个定时器/计数器中断源和一个串行通信口中断源,如果它们向 CPU 发出中断请求信号,CPU 就会产生中断,停止执行当前的程序,转而去执行指定的程序(又称中断服务程序或中断子程序),执行完后又返回来执行原来的程序。
2.中断的优先级别
单片机内的CPU在工作时,如果一个中断源向它发出中断请求信号,它就会产生中断;如果同时有两个或两个以上的中断源发出中断请求信号,CPU会怎么办呢?CPU会先接受优先级别高的中断源请求,然后再接受优先级别低的中断源请求。
MCS-51系列单片机5个中断源的优先级别顺序见表
明天我们继续分享中断后怎样处理,有兴趣的朋友烦请点点关注,点点转发,点点赞!
相关问答
单片机 应用中 按键 的 中断 控制方式?在单片机应用中,按键的中断控制方式是一种常见的处理按键输入的方法。其主要思想是,当按键被按下或释放时,会产生一个电信号,这个信号可以被单片机检测到,并...
单片机按键 选择外部 中断 0和1混合使用,下降沿触发,寄存器是否出现触发信号锁存?你看来还没有理解“中断”的真谛,之所以要用中断,就是用来处理“不确定”事件的,如果都是可以预知的按“时序”运行的事件,那么就没有必要用“中断”了。你看...
51 单片机 ,用 按键 实现外部 中断 ,软件如何去抖?定时中断里设置一个记录按下时间的static变量t按下按键则将t++(注意不要加到溢出)松开按键,检测tt定时中断里设置一个记录按下时间的static变量t按下...
单片机 如何 按键 中止-ZOL问答if(按键按下){flag=~flag;}明天帮你写就是使用51的中断就可以了!你的其他12个按键也可以使用中断来处理,只是把那个暂停键设为级别最高,不管什么情况下改建按...
单片机按键 计数器的 中断 函数、显示函数怎么写?单片机按键计数器用外部中断每进一次中断,就加一个数,但是要防止重复进入中断,防止重复进入中断你可以把中断源设置成上升沿或者是下降沿。不要设置成高电平和...
51 单片机 , 按键 控制流水灯程序,懂的进!八个LED灯与 单片机 P1口...[最佳回答]假如,你的程序在执行key_scan();是触发了两次中断导致num>20,你的显示函数将永远被跳过,你应该写成if(num>20)��{���num=0;���display();�.....
按钮点灯程序,按一下按钮灯亮(一直亮),再按一下灭,51 单片机 ...对于51单片机的按钮点灯程序设计,你可以用P0口接LED并配置成输入模式。每当有外部中断触发(比如按键),进入中断服务子程序后点亮灯;返回主循环后检测该状态...
c51 单片机中断 系统应用介绍?c51单片机中断系统就是打断当前要做的事,转而去执行别的事情。单片机中断就是当单片机正在执行程序的时候,突然某个按键按下了(产生外部中断),单片机就必须...
51 单片机 的 按键 控制小灯亮灭的问题(程序类型:c语言)?51单片机的IO口接按键,实现外部触发(外部中断,高低电平,上下降沿),触发后再通过IO控制LED的开关即可。51单片机的IO口接按键,实现外部触发(外部中断,高低电平...
什么是 单片机 的 中断 序号? 中断 序号1表示什么?指单片机多个中断源的先后顺序,如果中断优先级相同,哪一个中断序号小,同时发生中断时哪一个就优先响应。例如51单片机的中断顺序是:外中断0定时器0外中...