?? lsj.asm
字號:
ORG 0000H
LJMP MAIN ;設置主程序入口
ORG 0003H ;外部中斷INT0
LJMP INTO
ORG 0030H
MAIN: SETB IT0 ;設置邊沿觸發方式
SETB EX0 ;允許中斷
SETB EA
MOV A, #0FEH ;設置LED最低位亮,”0“亮
LOOP: MOV P1, A ;輸出P1口
MOV 30H, #10 ;設置延時時間,0.5s
LCALL DELAY
RL A ;左移1位
SJMP LOOP
INTO: CLR EA ;關閉中斷
PUSH ACC
MOV 30H, #1 ;延時50ms
LCALL DELAY
JB P3.2, INT0_RET ;若主持人鍵沒按下,認為是一次干擾,中斷返回
JNB P3.2, $ ;按下,等待釋放
MOV P2, #0BFH ;主持人鍵已按下,顯示"-"
INT0_1: MOV A, P0 ;讀P0口內容
JNB ACC.0,LP1 ;若甲按下,轉LP1
JNB ACC.1,LP2 ;若乙按下,轉LP2
JNB ACC.2,LP3 ;若丙按下,轉LP3
JNB ACC.3,LP4 ;若丁按下,轉LP4
SJMP INT0_1 ;繼續等待搶答
LP1: MOV P2, #0F9H ;顯示"1"
SJMP LP_C0M
LP2: MOV P2, #0A4H ;顯示"2"
SJMP LP_C0M
LP3: MOV P2, #0B0H ;顯示"3"
SJMP LP_C0M
LP4: MOV P2, #99H ;顯示"4"
LP_C0M:CLR P3.4 ;開喇叭
MOV 30H, #20 ;設置喇叭響的時間
LCALL DELAY ;延時1s
SETB P3.4 ;關喇叭
MOV 30H, #60H ;設置結果顯示時間
LCALL DELAY
MOV P2, #0FFH ;數碼管全黑
INT0_RET: SETB EA ;關中斷
POP ACC
RETI
;-------------------------------延時子程序---------------------------------
DELAY: MOV R4, 30H ;延時子程序, 延時時間=(30H)*50ms
DEL0: MOV R5,#50
DEL1: MOV R6,#250
DEL2: NOP
NOP
DJNZ R6,DEL2
DJNZ R5,DEL1
DJNZ R4,DEL0
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -