51内核的最基础的中断源请求有外部中断、定时器中断和串口中断,这也是学习和开发者最长用的。当然还有其他的中断源,比如ADC、SPI、PWM等。以外部中断0为例,在编程中常使用的方式为:
void INT0()interrupt 0 using 1
{
……
}
在这里特别做上笔记:其中前面的void INT0() 只是代表一个普通没有形参的函数而已,函数名写成什么都是可以的,这个到不重要。那么后面的就一个一个词的扣把:(2-1-i-c-中国-电子网,防抓取)
其中 interrupt n 组成一组,n用来指明中断号,在函数后使用了interrupt关键字后,就会自动的生成中断向量,51内核中断号如下图,这是我今天查的正在使用的MCU:
例如:
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的优先级高。没办法,只好接着啃数据手册,还好这寄存器不多,一会就查到了下表和相关的描述:
所以按照描述修改下优先级就可以达到目的了。
总结:用到回过头来用到51的中断,发现有些东西在之前学习的时候并没有太在意,导致现在在开发产品上使用的时候不清楚用途。因为工作跟学习性质是不一样的,作为开发者的角度来说,质量往往是第一要求。同时会接触到很多新鲜的事物和技术,但是话又说回来了,最基本的知识还是需要打牢。
上一篇:51单片机最小系统原理图、PCB及组成
下一篇:51单片机定时器使用经验总结
推荐阅读
史海拾趣
2019年,中环公司发布了210mm尺寸G12超大硅片“夸父”系列产品。这一创新产品凭借其高效、高质的特点,迅速获得了市场的认可。G12超大硅片的推出不仅引领了光伏材料的发展方向,也进一步巩固了中环在光伏领域的领先地位。
经过数年的研发和技术积累,ENPIRION公司在2004年推出了其首款革命性的产品——将电感集成的DCDC芯片。这款产品的问世引起了业界的广泛关注,因为它极大地减小了负载点稳压所需要的PCB面积和高度,实现了最高功率密度和最小外形封装。这一创新不仅获得了EDN 2004年度全球电源IC最佳产品奖,还赢得了其他众多国际大奖,为ENPIRION公司赢得了业界的广泛认可。
普芯达电子的“中国风”系列产品是公司发展历程中的一个重要里程碑。该系列产品经过严格的质量控制和品质检测,以其优异的性能和可靠的品质赢得了市场的广泛认可。通过一系列的市场推广活动,“中国风”品牌逐渐深入人心,成为国产集成电路产品的代表之一。同时,普芯达电子还通过不断创新和优化产品,满足了客户日益增长的需求,进一步巩固了市场地位。
随着云计算的普及,企业对于云安全的需求日益增长。Defender Security公司敏锐地捕捉到了这一市场趋势,迅速推出了云安全服务产品。他们通过整合先进的安全技术和专业的安全团队,为企业提供了全方位的云安全保护。随着云安全服务的不断拓展和优化,Defender Security逐渐成为了云安全领域的领军企业。
面对工业4.0的浪潮,乾坤公司积极响应国家智能制造的号召,开始进行智能制造的转型。公司引进了先进的自动化设备,对生产线进行了全面升级,实现了生产过程的自动化、信息化和智能化。通过智能制造的转型,乾坤不仅提高了生产效率,还降低了生产成本,同时提升了产品的一致性和可靠性。这一转型为乾坤公司的持续发展注入了新的动力,使其在激烈的市场竞争中保持了领先地位。
随着国内市场的逐渐饱和,Abundance Enterprise Company开始积极拓展国际市场。公司积极参与国际电子展览和交流活动,与全球知名电子企业建立了广泛的合作关系。同时,公司还在海外设立了多个分支机构,进一步拓展国际业务。这些举措不仅提升了公司的国际影响力,也为公司的长期发展奠定了坚实基础。
这个网站里的高手是那么的可爱可敬, 刚注册几天的菜鸟发现在这里有这么多的高手帮忙解决问题,从不嫌弃问题的弱智! 有几个人的名字我都记下来了。 不要对我这么的好哦 我怕我会迷恋哦!!! 嘻嘻嘻… 查看全部问答∨ |
|
想写一个支持4bpp灰度的基于GPE的display driver要怎么做?怎么让OS知道我支持哪16种颜色? 是不是要创建一个调色板,我需要算出这16种灰度颜色对应的RGB值,然后放在调色板里么?还是只要设置成4bpp,OS就默认是灰度颜色?谢谢~~… 查看全部问答∨ |
|
最近在捣鼓STM32的CAN 模块。虽然算是基本上能够发送接收数据了,但是总觉得对他的发送和接收比较模糊。问题就出在了对过滤器的设置 以及接收中的某些设置上,长话短说。大家看一下代码就明白我的疑问了。代码如下: void CAN_Configuration ...… 查看全部问答∨ |
|
本帖最后由 paulhyde 于 2014-9-15 09:26 编辑 小弟真心想学习430,苦于找不到软件,还希望哪位大哥相助一下,小弟谢过。 hao9003@163.com小弟邮箱,要是有,还望传一份给小弟。 … 查看全部问答∨ |
ADI的电源管理芯片相对来说是高端的,但价格比 TI的还好点。TI的也不错。 哈哈。可以一试哦。 2380是4A 20V 但要加外部MOS管 2301 是1.2 A, 20 V,这个不错。内部MOS管,适合普通应用 1.2A够了。 … 查看全部问答∨ |
replyreload += \',\' + 1513442;学习达芬奇系列的朋友们,我又来给大家分享资料了。。。。 前面的分享没有得到大家的权利顶起。。。。 这次,大家帮忙一定顶起来。。。。 继续分享的动力啊。。。。 Timson,如果您要查看本帖隐藏内容请回复… 查看全部问答∨ |
这个电路输入电压是24~240V,文献中说的是这个电路中由Q1 R1 D2 D4 D5 D1构成了恒流源电路,请问这个VOUT不随着输入电压而变吗?这个恒流源是怎么工作的?谢谢!… 查看全部问答∨ |