学习笔记-中断初步设计

本文详细介绍了中断服务函数的执行过程,包括中断向量的概念、如何在51单片机中定义中断服务函数,以及volatile和const关键字在中断处理中的作用。还探讨了原子操作和可重入设计在嵌入式系统中的重要性。
摘要由CSDN通过智能技术生成
       中断对于嵌入式设计的重要性不言而喻,但是以前没有深入的理解和掌握,最近重新回顾了这块知识,结合书本和网上的知识,进行了一些归纳和整理,以便梳理。
1、中断服务函数的执行过程
        其实,关于中断在很多教材中都会涉及到,但很多教材讲的基本千遍一律,无非对“中断发生->保护现场->执行中断->现场恢复”的讲解。那回归到实际操作,在自己编写的ISR中硬件是怎样执行的呢?在《项目驱动-单片机应用设计基础》中是这样描述的:
        在SDCC-51编译器环境下,中断服务函数一般定义如下;
void time0ISR(void)  __interrupt 1
{
      .......
}
(1)__interrupt或interrupt是扩展关键字,表明这个函数时中断服务函数。后面紧跟的“1”是中断编号。不同的中断源是有不同编号的,以便在程序设计中甄别,在此,编号“1”表示T0中断。还有,可选关键字using用以告诉编译器是选用那组寄存器,但书中作者不推荐使用using关键字,除非ISR对速度要求非常高且代码不简单。
(2)需要注意的是,中断服务函数是没有输入参数和返回值的。
(3)中断服务函数的执行机制:当中断被响应时,会根据中断编号将PC指向中断向量(中断向量的定义如下),其实,编译器已经在对应的中断向量处放置了一条长跳转指令(LJMP),这样,程序就可以跳到中断服务函数地址处执行中断服务程序,执行完毕会在程序末位自动添加中断返回指令RET
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值