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