51内核单⽚机中断函数编号的理解与设定(eg:
voidint1(void)interrupt2)
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的解释