历史上的今天
今天是:2025年04月01日(星期二)
2021年04月01日 | 单片机中断问题
2021-04-01 来源:eefocus
简介:51单片机中断不就是中间发生什么事情,跳转到另外一处,执行完在返回么?为什么还要中断专门拿出来用啊,直接跳转指令不就行了么?
首先要搞清中断,就要先说一说单片机P3口的几个引脚;P30到P35是中断的输入引脚。包括串行口、定时器(计数器)、外部中断等等。这些中断的特点是当中断的条件满足时,会执行相应的中断程序。注意中断程序的执行和汇编语言的子程序有一个重要区别:(多数教科书都没提这一点)子程序必须有调用语句ACALL之类的调用它,它才能执行;而中断不是!它是满足中断条件后,自动执行的。比如:定时器计数满;外部中断引脚低电平触发;串行口接受到数据....,此时程序自动跳到中断入口:03H,0BH,....23H。进入中断入口后一般要跳转一下再转到相应的中断子程序里去(除非你的中断程序很短,不会进入别的中断)。拿C语言来说,就是在C51里,中断函数不需要主函数main()调用,自动执行(前提是触发中断的条件出现时)。
中断不就是中间发生什么事情,跳转到另外一处,执行完在返回么?
这里的“中间发生什么事情”,就是触发的中断,根据触发中断的类型,程序自动跳转到入口程序(比如,触发外部中断0,则跳到03H,串行口中断则是23H,这些入口地址一般安排跳转指令)
为什么还要中断专门拿出来用啊,直接跳转指令不就行了么?
单片机要用中断这种方式工作呀!比如单片机在处理数据时,外部设备传来一个信号,要求启动,这是一个外部中断信号,单片机收到后进入相应中断程序,启动设备,或者监测设备等等。没有中断,单片机的功能大大降低。 意思是不是就是说一个是已知的条件跳转,一个是未知的,所以才采用中断 有这个意思,但不准确。中断是外部信号引起的,或者时钟计时到、或者串行接收到数据,总之中断的产生不由程序里的代码决定。
史海拾趣
|
德国mandia大功率LED专用荧光粉 一、简介 德国mandia大功率LED荧光粉是(Deutschland Mandia Materials Development Co., Ltd)德国mandia公司应对新世纪的照明工业的发展研制而成,该产品粒径15±0.1mil,适用于450-470NM芯片,亮度与市场上小功率 ...… 查看全部问答> |
|
wince c# 求替代 datagrid 的自定义控件或源码. wince c# 求替代 datagrid 的自定义控件或源码. 平台:wince vs 2008 c# vs自带的datagrid编辑表格真的是非常不好用。 行表头不行,使某列,某格不可编辑,不行。 等等 功能真的是太弱了. 求其替代控件或自定义控件. 不胜感激.… 查看全部问答> |
|
用max712为核心,设计了一个镍氢电池组充电电路,实测充电电流和资料上介绍的计算公式计算值相差很大,另外快速充电指示灯常亮不灭,电路是参考网上的,根据自己的实际情况稍微改动,现具体说明如下: 1,设计充电器支持的电池组为10节5#电池,组 ...… 查看全部问答> |
|
下面是处理电源irp的代码节选,问题是:为什么提高电源级别时使用完成例程,而降低电源级别时直接使用PoSetPowerState( pDevObj, type, newState);?请高手赐教! if (newState < pDevExt->currentPowerState) {& ...… 查看全部问答> |
|
怎么找到一个正数第一个1前面的0的个数的VERILOG 算法 比如 16‘b0001 1011 0的个数是3,怎么用verilog去描述这个算法呢? 其实很简单: 如果是串行输入的,从低到高位,需要一个起始信号,然后用16的计数器,逐个判断即可。 如果并行数据,直接如下判断: i ...… 查看全部问答> |
|
uC/OS-II官方STM32版本修改后在万利的STM32开发板上运行 bh3nvn:您好,学习单片机和ARM也都四五年了,我本身电气工程毕业的,所以操作系统的东西一直没时间琢磨,也一直想 ...… 查看全部问答> |




