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編輯過]
|