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的解釋

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM