51單片機(jī)的中斷有:外部中斷2個(gè),定時(shí)器/計(jì)數(shù)器 中斷2個(gè)(8051或類似)3個(gè)(8052或類似),串口一個(gè),都有對應(yīng)的中斷向量,也就是當(dāng)某一個(gè)中斷發(fā)生時(shí),單片機(jī)會把其他的程序暫停一下,轉(zhuǎn)到這個(gè)中斷的對應(yīng)的地址(向量)來執(zhí)行程序。執(zhí)行完中斷處理子程序以后(到RETI)再回到之前暫停的地方繼續(xù)進(jìn)行之前的工作。(當(dāng)然:單片機(jī)在響應(yīng)這個(gè)中斷之前所做的工作,在有些情況下是不能被中斷的,要等這些情況處理完以后才行)
但是51單片機(jī)給每一個(gè)中斷所留的間隔只有8個(gè)字節(jié),一般是寫不完中斷處理程序的(也可以說是中斷服務(wù)程序),所以大都是在這里寫上一個(gè)跳轉(zhuǎn)指令,跳到你自己寫的中斷處理程序的標(biāo)號處。
中斷程序結(jié)束處有一語句是必須的:RETI
下面是例子。用不到的中斷可以不用寫。也可以注釋掉。
;******************初始化*********************** ORG 0000H ;上電或復(fù)位時(shí),單片機(jī)從這里開始執(zhí)行程序 JMP MAIN
ORG 0003H JMP INT12887 ;外部中斷0發(fā)生中斷時(shí),從這里開始執(zhí)行程序
ORG 000BH JMP TIMER0 ;定時(shí)器/計(jì)數(shù)器0發(fā)生中斷時(shí),從這里開始執(zhí)行程序
ORG 0013H JMP INTnnn ;外部中斷1發(fā)生中斷時(shí),從這里開始執(zhí)行程序
ORG 001BH JMP TIMER1 ;定時(shí)器/計(jì)數(shù)器1發(fā)生中斷時(shí),從這里開始執(zhí)行程序
ORG 0023H JMP S_INIT ;串口中斷發(fā)生中斷時(shí),從這里開始執(zhí)行程序
ORG 002BH JMP TIMER2 ;定時(shí)器/計(jì)數(shù)器2發(fā)生中斷時(shí),從這里開始執(zhí)行程序
ORG 0030H ;
;*********************主程序********************* MAIN:
[此貼子已經(jīng)被作者于2012-3-1 12:17:29編輯過]
|