谁能帮我解释一下这个框图的原理。关于单片机原理及应用中断的。

谁能帮我解释一下这个有关51单片机的红外解码的部分程序_百度知道
谁能帮我解释一下这个有关51单片机的红外解码的部分程序
void IR_IN() interrupt 2 using 0{
unsigned char j,k,N=0;
delay(15); if (IRIN==1)
//确认IR信号出现
while (!IRIN)
//等IR变为高电平,跳过9ms的前导低电平信号。
{delay(1);} for (j=0;j&4;j++)
//收集四组数据
收集数据是怎么完成的,具体过程是什么呢!!!!!!!!!!!!!!!! {
for (k=0;k&8;k++)
//每组数据有8位
while (IRIN)
//等 IR 变为低电平,跳过4.5ms的前导高电平信号。
{delay(1);}
while (!IRIN)
//等 IR 变为高电平
{delay(1);}
while (IRIN)
//计算IR高电平时长
//这里的N++是如何工作的,每次自加1吗?!!!!!!!!!
if (N&=30)
//这里不理解,,为什么是N&=30呢!!!!!!!!!! { EX1=1; }
//0.14ms计数过长自动离开。
//高电平计数完毕
IRCOM[j]=IRCOM[j] && 1;
//数据最高位补“0”
这里不理解!!!!!
if (N&=8) {IRCOM[j] = IRCOM[j] | 0x80;}
//数据最高位补“1”
这里不理解!!!!!
}//end for k }//end for j
if (IRCOM[2]!=~IRCOM[3])
goto LOOP; }
switch(IRCOM[2])
case 0x16:
distemp = 0;
case 0x0c:
distemp = 1;
case 0x18:
distemp = 2;
case 0x5e:
distemp = 3;
case 0x08:
distemp = 4;
case 0x1c:
distemp = 5;
case 0x5a:
distemp = 6;
case 0x42:
distemp = 7;
case 0x52:
distemp = 8;
case 0x4a:
distemp = 9;
L1602_char(2,15,distemp+48);
EX1 = 1; LOOP:; }就是帮我解释下那几个打了!!!号的注释的语句即可
这个问题我也有过,当时是用430单片机,F149的代码移植到F2618就是不行,最后发现,2618的速度比149快的多,后来把红外解码部分的一些延时的时间做了一下改动就正常了。你也试试吧,很可能是这个原因!
其他类似问题
51单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁中国最专业,功能最全面的教育网络平台!
热门搜索:
您当前位置: >>
>> 单片机的中断系统
单片机的中断系统
本文来源:天才网
点击量:172
发布日期: 10:46:26
有关单片机中断系统的概念:什么是中断,我们从一个生活中的例程引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。
第一、什么可经引起中断,生活中很多事件能引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了….等等诸如此类的事件,我们把能引起中断的称之为中断源,单片机中也有一些能引起中断的事件,8031中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。
第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你常常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。
第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不一样的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不一样的中断,我们要在不一样的地点处理,而这个地点常常还是固定的。计算机中也是采用的这种办法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应能分为以下几个步骤:1、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。2、寻找中断入口,根据5个不一样的中断源所产生的中断,查找5个不一样的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。3、执行中断处理程序。4、中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。究竟单片机是怎么样找到中断程序所在位置,又怎么返回的呢?我们稍后再谈。
MCS-51单片机中断系统的结构:5个中断源的符号、名称及产生的条件如下。INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。T0:定时器/计数器0中断,由T0计满回零引起。T1:定时器/计数器l中断,由T1计满回零引起。TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。整个中断系统的结构框图见下图一所示。
&51单片机中断系统结构&
如图所示,由与中断有关的特殊功能寄存器、中断入口、次序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断类弄、中断的开、关和各种中断源的优先级确定。
中断请求源:
(1)外部中断请求源:即外中断0和1,经由外部管脚引入的,在单片机上有两个管脚,名称为INT0、INT1,也就是P3.2、P3.3这两个管脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。(2)内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断,在串行口中再讲解。2、中断允许寄存器IE在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表EAX
其中EA是总开关,如果它等于0,则所有中断都不允许。ES-串行口中断允许ET1-定时器1中断允许EX1-外中断1中断允许。ET0-定时器0中断允许EX0-外中断0中断允许。如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE能是EAX
即8CH,当然,我们也能用位操作指令SETB EA
SETB ET1SETB EX1
来实现它。3、五个中断源的自然优先级与中断服务入口地址外中断0:0003H定时器0:000BH外中断1:0013H定时器1:001BH串行口:0023H它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写:
ORG 0000HLJMP START
这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即能由程序员设定那些中断是高优先级、哪些中断是低优先级,由于只有两级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。
开机时,每个中断都处于低优先级,我们能用指令对优先级进行设置。看表2中断优先级中由中断优先级寄存器IP来高置的,IP中某位设为1,对应的中断就是高优先级,不然就是低优先级。
例:设有如下要求,将T0、外中断1设为高优先级,其它为低优先级,求IP的值。IP的首3位没用,可任意取值,设为000,后面根据要求写就能了XX
因此,最终,IP的值就是06H。例:在上例中,如果5个中断请求同时发生,求中断响应的次序。响应次序为:定时器0->外中断1->外中断0->实时器1->串行中断。
MCS-51的中断响应过程:
1、中断响应的条件:讲到这儿,我们依然对于计算机响应中断感到神奇,我们人能响应外界的事件,是因为我们有多种“传感器“DD眼、耳能接受不一样的信息,计算机是如何做到这点的呢?其实说穿了,一点都不希奇,MCS51工作时,在每个机器周期中都会去查询一下各个中断标记,看他们是否是“1“,如果是1,就说明有中断请求了,所以所谓中断,其实也是查询,不过是每个周期都查一下而已。这要换成人来说,就相当于你在看书的时候,每一秒钟都会抬起头来看一看,查问一下,是不是有人按门铃,是否有电话。。。。很蠢,不是吗?可计算机本来就是这样,它根本没人聪明。了解了上述中断的过程,就不难解中断响应的条件了。在下列三种情况之一时,CPU将封锁对中断的响应:
CPU正在处理一个同级或更高级别的中断请求。
现行的机器周期不是当前正执行指令的最后一个周期。我们知道,单片机有单周期、双周期、三周
上一篇: 下一篇:
读完这篇文章后,您愿意分享吗?独乐乐,不如众乐乐!
12345678910
电话热线:广州(020) 东莞(3
邮箱: 天才网学习群:
网络实名:天才培训网 2006 天才网版权所有 技术支持: 。菜鸟 请各位大虾帮忙解释一下 关于外部中断_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:60,854贴子:
菜鸟 请各位大虾帮忙解释一下 关于外部中断收藏
不是单片机 控制整个电路的运行吗 外部中断是哪发出的
单片机要检测外部中断信号然后执行中断服务程序
是单片机控制外部某些部件发信号吗
外部中断是外部给单片机一个信号,单片机检测到后执行中断服务。前提是单片机要提供外部中断的引脚,打开外部中断。
外部中断有对应的引脚,引脚被拉至低电平时,可进入中断函数
外部中断0和外部中断1的中断信号引入脚是单片机的P3.2和P3.3引脚;当需要用到外部中断时,可先对相应的控制寄存器进行设置,开中断。当单片机检测到P3.2(int0)或P3.3(int1)有下降沿或低电平时(可用软件设置),就停止当前的工作,进入中断程序。当然前提是要有中断程序。外部中断信号当然是外部设备发出的,比如电脑正在运行,你通过键盘按了关机键,就是给电脑CPU发了一个中断信号,然后电脑就停止当前正在做的事,进入中断程序,即关机。单片机就是一个小小的电脑了,只是没接外设而已嘛。
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或基于51单片机的自动记数系统的原理框图和程序编写?_百度知道
基于51单片机的自动记数系统的原理框图和程序编写?
以此为例说明:当生产线上有物品通过时,光电传感器捕捉到该信号,形成一系列脉冲。脉冲信号在MCS--8051单片机中产生中断,其每产生一次中断,单片机通过软件加一,然后把数值存储在显示存储区,再输出,通过LED进行显示.从而实现自动计数。
我觉得我的这个号你可以直接拿去了,才注册啥都没有的
提问者采纳
这个我说一下我的想法在P3.?是一个外中断请求引脚 使用你的外信号从这进入 产生中断(这个我做过了简单)中断处理程序就很简单了~~ 只要对inc **h就可以了
再经过DAA转换 成10进制(记得考虑益出)(这个我已经做过了不难) 至于数子显示也不是很难 将对应的内存输出到P2口 (连接LED) 要更详细的请+QQ
提问者评价
谢谢你总结性的答案!可能由于我学的不够透彻,可能还需要请教.不过你给了我信心,在这里说声THANK YOU!
其他类似问题
51单片机的相关知识
按默认排序
其他1条回答
至少悬赏200吧
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁这个是一氧化碳传感器与单片机的连接原理图,谁能帮我解释一下这个电路图吗,out是连接单片机的数据线。_百度知道
这个是一氧化碳传感器与单片机的连接原理图,谁能帮我解释一下这个电路图吗,out是连接单片机的数据线。
解释越详细越些电阻电容选择<img class="word-replace" src="/api/getdecpic?picenc=0ad5各引脚功能啥要连神马非谢答必定追加悬赏
提问者采纳
电路画准确555管脚、连线误输调节误1、555电路构振荡电路高电平15S(0.693*(43+180)*0.1)低电平5S电阻取值:实际555芯片8脚7脚外接电阻180K7脚6脚外接电阻43K2、经反向电路并电阻压调节幅度0.2~0.9V波给CO传器3脚1脚加热3、传器输2脚(接压电阻R400)1脚电压送比较器接单片机外部断检测2脚电压低说明CO超标调节R405R406获理想波幅度
提问者评价
谢了,还是有些不明白。
其他类似问题
一氧化碳传感器的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 单片机课后习题答案 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信