1、经典按键防抖动.txt 你看得见我打在屏幕上的字,却看不到我掉在键盘上的泪!自己选择45仰视别人,就休怪他人 135俯视着看你。经典按键防抖动 51 汇编程序 作者:不详 来源:本站整理 发布时间:2006-11-22 12:46:24 发布人:admin 减小字体 增大字体 ;四独立按键控制四 LED;四个独立按键对应四个独立的 LED.;当某一按键按下时对应的 LED 亮,当第二次按下时灭。;四个 LED 只能有一个亮,初学者可以参考以下程式:;当一直按下某一按键时对应的 LED 会闪动。;-K1 BIT P1.4K2 BIT P1.5K3 BIT P1.6K4 BIT P1.7FLAG0
2、 BIT 20H.0 ;LED0 标记FLAG1 BIT 20H.1 ;LED1 标记FLAG2 BIT 20H.2 ;LDE2 标记FLAG3 BIT 20H.3 ;LED3 标记K_OLD EQU 30HK_NEW EQU 31H;-ORG 0000HJMP MAINORG 0030H;-MAIN:MOV SP,#60HMOV P1,#0FFHMOV P0,#0FFHMOV K_OLD,#00HMOV 20H,#0FFHMAIN1:CALL K_SCAN ;键扫描MOV A,K_NEWCJNE A,K_OLD,MAIN2JMP MAIN1MAIN2:CALL DELAY ;延时示去抖动CA
3、LL K_SCAN ;再判断键是否按下MOV A,K_NEWCJNE A,K_OLD,MAIN3JMP MAIN1MAIN3:JB ACC.0,LOOP1 ;K1 按下JB ACC.1,LOOP2 ;K2 按下JB ACC.2,LOOP3 ;K3 按下JB ACC.3,LOOP4 ;K4 按下JMP MAIN1LOOP1:JNB FLAG0,LOOP1AMOV P0,#0FEHMOV 20H,#0EH ;FLAG0=0JMP MAIN1LOOP1A:MOV P0,#0FFHMOV 20H,#0FHJMP MAIN1LOOP2:JNB FLAG1,LOOP1AMOV P0,#0FDHMOV 20
4、H,#0DH ;FLAG1=0JMP MAIN1LOOP2A:MOV P0,#0FFHMOV 20H,#0FHJMP MAIN1LOOP3:JNB FLAG2,LOOP3AMOV P0,#0FBHMOV 20H,#0BH ;FLAG2=0JMP MAIN1LOOP3A:MOV P0,#0FFHMOV 20H,#0FHJMP MAIN1LOOP4:JNB FLAG3,LOOP4AMOV P0,#0F7H ;FLAG3=0MOV 20H,#07HJMP MAIN1LOOP4A:MOV P0,#0FFHMOV 20H,#0FHJMP MAIN1;-; 键扫描子程序;-K_SCAN:MOV P1,#0FFHMOV K_NEW,#00HMOV A,#00HMOV C,K4CPL CRLC AMOV C,K3CPL CRLC AMOV C,K2CPL CRLC AMOV C,K1CPL CRLC AMOV K_NEW,ARET;-;延时子程序;-DELAY:MOV R6,#200DEL:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DELRET;-;可以将 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