中斷系統的應用舉例 (含源程序)
6.4.1? 外部中斷舉例
【例6-3】使用外部中斷0,當每次響應中斷時,P1口依次輸出高電
平,使8個發光二極管依次循環熄滅閃爍。
1)? 電路設計
?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
定時器舉例
?
通過定時器1來產生中斷,控制P1.0線上的脈沖輸出,并經三極管驅動揚聲器,發出音調信號。
1) 電路設計
?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
??
評論