中斷系統(tǒng)的應用舉例 (含源程序)
中斷系統(tǒng)的應用舉例 (含源程序)
6.4.1 外部中斷舉例
【例6-3】使用外部中斷0,當每次響應中斷時,P1口依次輸出高電
平,使8個發(fā)光二極管依次循環(huán)熄滅閃爍。
1) 電路設(shè)計
ORG 0000H
LJMP MAIN ;轉(zhuǎn)主程序
ORG 0003H ;外部中斷0入口地址
LJMP EXTER ;轉(zhuǎn)中斷程序
ORG 1000H
MAIN: SETB IT0 ;外部中斷0下降沿有效
SETB EX0 ;外部中斷0允許
SETB EA ;總中斷允許
LOOP: AJMP LOOP ;等待中斷
ORG 1050H ;中斷程序入口
EXTER: MOV R2, #0FFH ;置循環(huán)次數(shù)
MOV A, #01H ;燈亮初值FLASH: RR A ;右移一位
MOV R7, #0FFH ;定時
LOOP1: MOV R6, #0FFH
LOOP2: NOP
NOP
DJNZ R6, LOOP2
DJNZ R7, LOOP1
MOV P1, A ;控制燈的亮滅
DJNZ R2, FLASH ;循環(huán)
RETI ;中斷返回
END
定時器舉例
通過定時器1來產(chǎn)生中斷,控制P1.0線上的脈沖輸出,并經(jīng)三極管驅(qū)動揚聲器,發(fā)出音調(diào)信號。
1) 電路設(shè)計
ORG 0000H
LJMP MAIN
ORG 001BH ;中斷入口地址
CPL P1.0
RETI
ORG 1000H
MAIN: MOV R1, #00H
MOV R0, #23H
MOV TMOD, #20H ;定時器1工作方式2
MOV IE, #88H ;定時器1允許中斷
L1: MOV DPTR, #3FFFH
MOV A, R0 ;取數(shù)
INC R0 ;修改指針
MOVC A, @A+PC ;查表
JZ MAIN
MOV R1, A ;計算計數(shù)初值
MOV A, #0FFH
CLR C
SUBB A, R1
RL A
MOV TH1, A ;置計數(shù)初值
SETB TR1 ;開始計數(shù)
L2: CLR C
MOV A, DPL ;延時
SUBB A, #01H
MOV DPL, A
MOV A, DPH
SUBB A, #00H
MOV DPH, A
ORL A, DPL
JNZ L2
CLR TR1
SJMP L1
END
ORG 1031H ;歌曲“送別”編碼
DB 33H,33H,3DH,33H,26H
DB 26H, 26H, 26H,2DH,2DH
DB 26H,2DH,33H,33H,33H
DB 33H, 33H,33H,4DH,45H
DB 45H, 45H45H, 45H, 45H
DB 45H, 45H,33H,33H,3DH
DB 33H,26H,26H,26H, 28H
DB 2DH, 2DH, 26H,26H,33H
DB 33H,33H,33H,45H,3DH