经典按键防抖动
经典按键防抖动.txt你看得见我打在屏幕上的字,却看不到我掉在键盘上的泪~自己选择45?仰视别人,就休怪他人135?俯视着看你。经典按键防抖动51汇编程序 作者:不详 来源:本站整理 发布时间:2006-11-22 12:46:24 发布人:admin
减小字体 增大字体
;四独立按键控制四LED;
;四个独立按键对应四个独立的LED.
;当某一按键按下时对应的LED亮,当第二次按下时灭。 ;四个LED只能有一个亮,初学者可以参考以下程式: ;当一直按下某一按键时对应的LED会闪动。
;---------------------------------------------------------
K1 BIT P1.4
K2 BIT P1.5
K3 BIT P1.6
K4 BIT P1.7
FLAG0 BIT 20H.0 ;LED0标记
FLAG1 BIT 20H.1 ;LED1标记
FLAG2 BIT 20H.2 ;LDE2标记
FLAG3 BIT 20H.3 ;LED3标记
K_OLD EQU 30H
K_NEW EQU 31H
;---------------------------------------------------------
ORG 0000H
JMP MAIN
ORG 0030H
;--------------------------------------------------------- MAIN:
MOV SP,#60H
MOV P1,#0FFH
MOV P0,#0FFH
MOV K_OLD,#00H
MOV 20H,#0FFH
MAIN1:
CALL K_SCAN ;键扫描
MOV A,K_NEW
CJNE A,K_OLD,MAIN2
JMP MAIN1
MAIN2:
CALL DELAY ;延时示去抖动
CALL K_SCAN ;再判断键是否按下
MOV A,K_NEW
CJNE A,K_OLD,MAIN3
JMP MAIN1
MAIN3:
JB ACC.0,LOOP1 ;K1按下
JB ACC.1,LOOP2 ;K2按下
JB ACC.2,LOOP3 ;K3按下
JB ACC.3,LOOP4 ;K4按下
JMP MAIN1
LOOP1:
JNB FLAG0,LOOP1A
MOV P0,#0FEH
MOV 20H,#0EH ;FLAG0=0
JMP MAIN1
LOOP1A:
MOV P0,#0FFH
MOV 20H,#0FH
JMP MAIN1
LOOP2:
JNB FLAG1,LOOP1A
MOV P0,#0FDH
MOV 20H,#0DH ;FLAG1=0
JMP MAIN1
LOOP2A:
MOV P0,#0FFH
MOV 20H,#0FH
JMP MAIN1
LOOP3:
JNB FLAG2,LOOP3A
MOV P0,#0FBH
MOV 20H,#0BH ;FLAG2=0
JMP MAIN1
LOOP3A:
MOV P0,#0FFH
MOV 20H,#0FH
JMP MAIN1
LOOP4:
JNB FLAG3,LOOP4A
MOV P0,#0F7H ;FLAG3=0
MOV 20H,#07H
JMP MAIN1
LOOP4A:
MOV P0,#0FFH
MOV 20H,#0FH
JMP MAIN1
;---------------------------------------------------------
; 键扫描子程序
;---------------------------------------------------------
K_SCAN:
MOV P1,#0FFH
MOV K_NEW,#00H
MOV A,#00H
MOV C,K4
CPL C
RLC A
MOV C,K3
CPL C
RLC A
MOV C,K2
CPL C
RLC A
MOV C,K1
CPL C
RLC A
MOV K_NEW,A
RET
;---------------------------------------------------------
;延时子程序
;---------------------------------------------------------
DELAY:
MOV R6,#200 DEL:
MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,DEL
RET
;---------------------------------------------------------
;可以将 K_SCAN 子程序更改为: ;K_SCAN:
; MOV P1,#0FFH ; MOV K_NEW,#00H ; MOV A,P1 ; CPL A ; ANL A,#0F0H
; SWAP A
; MOV K_NEW,A
; RET