外部中斷舉例 【例6-3】使用外部中斷0,當每次響應中斷時,P1口依次輸出高電平,使8個發光二極管依次循環熄滅閃爍。

2) 程序設計
ORG 0000H LJMP MAIN ;轉主程序 ORG 0003H ;外部中斷0入口地址 LJMP EXTER ;轉中斷程序 ORG 1000H MAIN: SETB IT0 ;外部中斷0下降沿有效 SETB EX0 ;外部中斷0允許 SETB EA ;總中斷允許 LOOP: AJMP LOOP ;等待中斷 ORG 1050H ;中斷程序入口 EXTER: MOV R2, #0FFH ;置循環次數 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 ;循環 RETI ;中斷返回 END
6.4.2 定時器舉例 【例6-4】 通過定時器1來產生中斷,控制P1.0線上的脈沖輸出,并經三極管驅動揚聲器,發出音調信號。
1) 電路設計

2) 程序設計
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 ;取數 INC R0 ;修改指針 MOVC A, @A+PC ;查表 JZ MAIN MOV R1, A ;計算計數初值 MOV A, #0FFH CLR C SUBB A, R1 RL A MOV TH1, A ;置計數初值 SETB TR1 ;開始計數 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 |