历史上的今天
返回首页

历史上的今天

今天是:2024年11月19日(星期二)

正在发生

2018年11月19日 | 51单片机内核的中断基础知识

2018-11-19 来源:eefocus

51内核的最基础的中断源请求有外部中断、定时器中断和串口中断,这也是学习和开发者最长用的。当然还有其他的中断源,比如ADC、SPI、PWM等。以外部中断0为例,在编程中常使用的方式为:


void INT0()interrupt 0 using 1


{


……


}


在这里特别做上笔记:其中前面的void INT0() 只是代表一个普通没有形参的函数而已,函数名写成什么都是可以的,这个到不重要。那么后面的就一个一个词的扣把:(2-1-i-c-中国-电子网,防抓取)

其中 interrupt n 组成一组,n用来指明中断号,在函数后使用了interrupt关键字后,就会自动的生成中断向量,51内核中断号如下图,这是我今天查的正在使用的MCU:


1.png?imageView2/2/w/550


例如:


12


interrupt 1 指明是定时器中断0;


interrupt 2 指明是外部中断1;


interrupt 3 指明是定时器中断1


。。。


对于51内核的MCU,不同厂家及不同型号的内部资源会有所不同,上图是我正在开发的一款中颖SH88F516单片机,由上图可见内部资源还算可以,能够满足一般的产品。后面的using n 指的是使用第n组寄存器。这个之前我在使用的过程中往往忽略了这个,也没有出现什么问题。但是今天注意到这个问题,查完资料后用上发现效果还不如不用,很有肯能是没有把这个知识用好的原因把。对比之后给我的感觉是在使用C语言写程序时,能不用就不用吧。查资料解释说假如在中断函数中使用了using n,中断不再保存R0-R7的值,这也就意味着假如一个高优先级的中断及一个低优先级的中断同时使用了using n,而这个n恰恰相等,那就等着哭把,因为这个BUG还真不是那么好找出来的(今天我就遇到了这个问题)。21ic整理


其次就是中断优先级的问题了,如图上面的中断表,在右侧第二栏标的很清楚,除了复位之外,就数外部中断0优先级最高了,依次往下排列,那么问题来了,今天刚好就碰到了需要串口0的优先级比定时器0的优先级高。没办法,只好接着啃数据手册,还好这寄存器不多,一会就查到了下表和相关的描述:


2.png?imageView2/2/w/550


所以按照描述修改下优先级就可以达到目的了。


总结:用到回过头来用到51的中断,发现有些东西在之前学习的时候并没有太在意,导致现在在开发产品上使用的时候不清楚用途。因为工作跟学习性质是不一样的,作为开发者的角度来说,质量往往是第一要求。同时会接触到很多新鲜的事物和技术,但是话又说回来了,最基本的知识还是需要打牢。


推荐阅读

史海拾趣

Aristo-Craft/ L M P Inc公司的发展小趣事

面对未来电子行业的快速发展和变革,Aristo-Craft/L M P Inc制定了明确的战略规划。他们将继续加大在研发和创新方面的投入,推出更多具有创新性和竞争力的产品。同时,公司还将积极拓展新的应用领域和市场,寻求更多的合作机会,以实现更加广泛的发展。

请注意,这些故事仅为概述性的框架,并非具体的事实描述。如果您需要更详细、具体的故事内容,建议查阅Aristo-Craft/L M P Inc公司的官方资料、新闻报道或行业分析报告等,以获取更准确的信息。

General Cable公司的发展小趣事
可能是由于编码逻辑错误、引脚连接错误或外部输入数据错误等原因导致的。解决方法包括检查编码逻辑、重新连接引脚、验证外部输入数据等。
佰宏(BHFUSE)公司的发展小趣事

BHFUSE佰宏实业成立于2013年,创立之初,公司便确立了专注于大电流、高电压、低内阻的PPTC自恢复保险丝的研发与生产。面对激烈的市场竞争,佰宏团队凭借对技术的深刻理解和对市场的敏锐洞察,逐步赢得了客户的认可。在创立初期,佰宏便与多家知名代工厂建立了合作关系,为其提供优质的保护器件,逐步在行业中树立了良好的口碑。

Frequency Management International公司的发展小趣事

FMI深知技术创新是企业发展的核心动力。因此,公司一直致力于在石英晶体和晶体振荡器领域进行技术研发和创新。通过不断的技术积累和优化,FMI成功开发出了一系列高性能、高稳定性的产品,如压控温度补偿晶体振荡器(VCTCXO)、压控晶体振荡器(VCXO)、温度补偿晶体振荡器(TCXO)等。这些产品的推出不仅丰富了FMI的产品线,还进一步提升了公司在行业内的竞争力。

Antiference公司的发展小趣事

随着技术的不断进步,Antiference公司开始将目光投向国际市场。公司积极参与国际电子展,展示其先进的电磁干扰抑制技术,并成功吸引了众多国外客户的关注。通过与国外知名企业的合作,Antiference的产品逐渐打入国际市场,品牌知名度也大幅提升。

FERYSTER公司的发展小趣事

FERYSTER公司的创始人在一次国际电子展览会上,被一款新型半导体芯片技术深深吸引。他意识到这项技术将引领电子行业的新一轮革命。于是,他果断决定投入大量资金和资源,组建研发团队,对该技术进行深入研究。经过数年的努力,FERYSTER公司成功掌握了这项技术,并推出了基于该技术的全新产品系列。这些产品以其卓越的性能和稳定性,迅速在市场上取得了成功,为公司的快速发展奠定了坚实基础。

问答坊 | AI 解惑

基于凌阳SPCE061A语音芯片的医疗模型人训练系统设计

0 引言 医疗模型人训练系统是为满足广大医学生的需要而设计的。我国现代医疗模拟技术的发展处于刚刚起步阶段,大部分仿真系统产品都源于国外,虽然对于模拟人仿真已经出现一些产品,但那些产品只是就模拟人的某一部分,某一个功能实现的仿真,没 ...…

查看全部问答>

MC55 TCP/IP 数据到达后不提示URC

我连上服务器后,为什么在接收服务器消息时有时有提示URC(“^SISR: 0, 1”)有时就没有提示?我每次都把数据取空了。还是不能保证每次都有URC提示。…

查看全部问答>

请问,vxworks仿真器加载不成功,怎么回事?

刚学不久,已经配置好了仿真之前的工作 但是就是到开启仿真器这一步时,过不去 不知道是怎么回事? 请问各位高手,非常感谢!…

查看全部问答>

菜鸟求教有关rtlinux开发问题

请问rtlinux下打开fifo都与那些东西相关啊?我的代码 if( ( fd0 = open( \"/dev/rtf0\", O_RDONLY) ) < 0 )     {         printf( \"Error open RT FIFO 0. Exit...\\n\" ) ;      ...…

查看全部问答>

16路量入,16路量出。IO不够用了,用什么芯片扩展呢??

有的人说PCA9534A,有的说输入用244,输出用373。怎么选择呢??…

查看全部问答>

STM32以太网驱动是采用查询方式还是中断方式来接收数据的?

STM32以太网驱动是采用查询方式还是中断方式来接收数据的? 如果是中断方式,那么中断处理函数是那个?我用的版本是:stm32_eth_lib [ 本帖最后由 vikione 于 2012-11-10 01:48 编辑 ]…

查看全部问答>

急求!!我用LM317做的转24V的稳压电源,为什么一加上负载就

一加上负载电压就会被拉低,,这是什么原因,求请教  谢谢   这是电路图 …

查看全部问答>