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