51单片机的中断有:外部中断2个,定时器/计数器 中断2个(8051或类似)3个(8052或类似),串口一个,都有对应的中断向量,也就是当某一个中断发生时,单片机会把其他的程序暂停一下,转到这个中断的对应的地址(向量)来执行程序。执行完中断处理子程序以后(到RETI)再回到之前暂停的地方继续进行之前的工作。(当然:单片机在响应这个中断之前所做的工作,在有些情况下是不能被中断的,要等这些情况处理完以后才行)
但是51单片机给每一个中断所留的间隔只有8个字节,一般是写不完中断处理程序的(也可以说是中断服务程序),所以大都是在这里写上一个跳转指令,跳到你自己写的中断处理程序的标号处。
中断程序结束处有一语句是必须的:RETI
下面是例子。用不到的中断可以不用写。也可以注释掉。
;******************初始化*********************** ORG 0000H ;上电或复位时,单片机从这里开始执行程序 JMP MAIN
ORG 0003H JMP INT12887 ;外部中断0发生中断时,从这里开始执行程序
ORG 000BH JMP TIMER0 ;定时器/计数器0发生中断时,从这里开始执行程序
ORG 0013H JMP INTnnn ;外部中断1发生中断时,从这里开始执行程序
ORG 001BH JMP TIMER1 ;定时器/计数器1发生中断时,从这里开始执行程序
ORG 0023H JMP S_INIT ;串口中断发生中断时,从这里开始执行程序
ORG 002BH JMP TIMER2 ;定时器/计数器2发生中断时,从这里开始执行程序
ORG 0030H ;
;*********************主程序********************* MAIN:
[此贴子已经被作者于2012-3-1 12:17:29编辑过]
|