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还真不是那么好找出来的(今天我就遇到了这个问题)。
其次就是中断优先级的问题了,如图上面的中断表,在右侧第二栏标的很清楚,除了复位之外,就数外部中断0优先级最高了,依次往下排列,那么问题来了,今天刚好就碰到了需要串口0的优先级比定时器0的优先级高。没办法,只好接着啃数据手册,还好这寄存器不多,一会就查到了下表和相关的描述:
所以按照描述修改下优先级就可以达到目的了。
总结:用到回过头来用到51的中断,发现有些东西在之前学习的时候并没有太在意,导致现在在开发产品上使用的时候不清楚用途。因为工作跟学习性质是不一样的,作为开发者的角度来说,质量往往是第一要求。同时会接触到很多新鲜的事物和技术,但是话又说回来了,最基本的知识还是需要打牢。
上一篇:51单片机的内部组成及应用原理解析
下一篇:单片机pt2262无线遥控解码器制作源程序
推荐阅读最新更新时间:2024-10-30 20:00
设计资源 培训 开发板 精华推荐
- MPC86XADS、XPC8xx 参考板,基于 XPC855T MPU PowerQUICC MPC8xx 处理器
- LTC1864、16 位、250ksps、1/2 通道 ADC 的典型应用
- 使用具有 PowerPath 和 2A 输入限制的 LTC4162EUFD-L40M 9V 至 35V、2 节、3.2A 充电器的典型应用
- AM1D-4809S-RZ 9V 1W DC/DC 转换器的典型应用
- DS21401C,基于 TC649B PWM 风扇电机控制器的演示板
- EVAL-ADUM3481EBZ,用于评估 iCoupler ADuM3480 四通道数字隔离器的评估板
- TWR-K22F120M,基于 MK22FN512 MCU 的 Kinetis K22 塔式系统模块
- USB-POWER V1.2
- 使用 Infineon Technologies AG 的 IRU3072 的参考设计
- LTC3538 的典型应用 - 800mA 同步降压-升压型 DC/DC 转换器
- 【干货视频】走进TE智能制造工厂,追踪连接器绿色生产全过程
- TI有奖直播:使用 MSPM0 AEC-Q100 MCU 设计更智能的汽车系统
- 畅游安富利人工智能云会展,挑战60天打卡学习养成记!冲击华为Mate40 Pro、Apple iPad Air等豪礼啦!
- 有奖直播|TI 工业多协议通信应用中的优化解决方案
- 【温故喝新之单片机版块】温2016年MCUs,喝2017年版块新篇章
- TI 样片免费申请,晒样片赢好礼☞2
- 下载 Intel白皮书 多重好礼等你拿!
- 极简主义,足不出户,看东芝在线展会,安心答题送好礼!
- 有奖直播|安森美高能效产品在智能快充的应用
- 理想中的开发板、万用表,好用不贵? e络盟11.11抢购,给你机会!