zoukankan      html  css  js  c++  java
  • 51内核单片机中断函数编号的理解与设定(eg: void int1(void)interrupt 2)

      N年不用51单片机之后,突然公司给了一个51内核的单片机让我改程序,顿时束手无策,本来是要写一个串口收发函数的,看了一眼51的的中断,竟然觉得无从下手,不知道串口对应的中断编号是多少x(void xx(void)interrupt x),感觉大学的51都白学了,看了一些资料以后终于重新理解,并写下这边文章供日后回忆。

      keil4的uVision Help里面其实有详细的解说这个void xx(void)interrupt x为什么要这么写的。

      里面写的意思其实就是根据芯片手册提供的中断向量表来计算我们void xx(void)interrupt x中x的数字是多少,比如51单片机的数据手册图下图,外部中断INT0的中断向量地址为0003H,所以他的中断编号就是0,Timer0的地址为0003H+8=000BH,他的编号就是2,以此类推

        

      然后在看一下我现在用的单片机的中断向量表,就和上面的8051单片机不一样了,多了好几个中断,但是他的中断号的定义规则还是一样的,比如我现在的串口2中断向量地址是0x0063,那我的中断号码就是12((0x0063-0x0003)/0x0008)

      附上一张keil Help里对interrupt x的解释

          

  • 相关阅读:
    Linux基础知识[1]【ACL权限】
    docker 入门学习篇【基本命令与操作】
    centos7.1下 Docker环境搭建
    RHEL6.5下更新python至2.7版本
    Github初学者探索
    vmware下linux虚拟机传文件解决方案之 xftp
    mysql 常用操作命令
    常用DNS记录
    常见网络协议端口号整理
    DNS原理及其解析过程 精彩剖析
  • 原文地址:https://www.cnblogs.com/isyefeng/p/13158747.html
Copyright © 2011-2022 走看看