?? 中斷系統的應用(二).asm
字號:
ORG 0000H ;主程序起始地址設置
AJMP START ;跳到主程序入口
ORG 0003H ; 中斷子程序矢量地址(K1鍵鈕)
AJMP INTR0 ;跳到 中斷子程序入口
ORG 0013H ; 中斷矢量地址(K2鍵鈕)
AJMP INTR1 ;跳到 中斷子程序入口
START: MOV IE,#85H ;設定 和 中斷使能
MOV IP,#04H ; 優先設置為最高
MOV TCON,#00H ; 和 電平觸發
MOV SP,#60H
MOV P0,#0FFH
MOV P1,#0FFH
MOV R0,#00H ;設置K1按鍵初值
MOV A,#00H ;設置D0~D7初始狀態
LP1: MOV P0,A ;將A送至P0口
LCALL DELAY
CPL A ;D0~D7閃爍
SJMP LP1 ;等待按鍵按下中斷
INTR0: PUSH Acc ;將A壓入堆棧暫時保存
PUSH PSW ;將PSW壓入堆棧暫時保存
SETB RS0 ;使用工作寄存器組1
INC R0 ;K1鍵值加1
MOV A,#00H ;判斷K1鍵值的奇偶性
ORL A, R0
JNB PSW.0,DOUBLE ;PSW的D0=0,即K1鍵值為偶數,跳轉
SINGLE:MOV P0,#00H ;D0~D3、 D4~D7交叉點亮程序
MOV A,#0FH
MOV R4,#03H ;設定交叉點亮3次
SINGLE1:MOV P0,A
LCALL DELAY
SWAP A ;A高、低字節交換
DJNZ R4,SINGLE1
AJMP LP5 ;交叉次數到,退出
DOUBLE:MOV P0,#00H ;D0~D7進行左移和右移程序
MOV R1,#02H ;設定移動2次
DOUBLE1:MOV A, #01H
MOV R2,#08H ;左移8個燈
SETB C
MOV P0,A
LP2: RLC A
LCALL DELAY
DJNZ R2,LP2
MOV A, #01H
MOV R2,#08H ;右移8個燈
CLR C
LP3: MOV P0,A
LCALL DELAY
RRC A
DJNZ R2,LP3
DJNZ R1,DOUBLE1 ;判移動次數是否達到,否,繼續
LP5: NOP ;退出INT0中斷子程序
POP PSW ;取回PSW暫時保存的值
POP Acc ;取回A暫時保存的值
RETI ;返回主程序
INTR1:PUSH Acc ;K2鍵下時,報警子程序
PUSH PSW
CLR P1.0 ;報警
LCALL DELAY ;延時
SETB P1.0
POP PSW
POP Acc
RETI ; 中斷返回
DELAY:MOV R7,#20 ;延時0.2s子程序
DELA1:MOV R6,#20
DELA2:MOV R5,#248
DJNZ R5,$
DJNZ R6,DELA2
DJNZ R7,DELA1
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -