;键盘控制的花样彩灯。 ;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站开发套件 * ;* E-mail:sxj1974@163.com (51c51 test web) 51单片机学习网,自学单片机的网站 * ;* Create by :石学军 www.51c51.com www.8951.com 更多例程请登陆网站 * ;***************************************************************************
;亮灯控制程序; ;************; ; ORG 0000H LJMP START org 0030h ;************; ; 主 程 序 ; ;************; START: MOV P3,#0FFH JNB P3.4,FUN0 ;检测按键 JNB P3.5,FUN1 JNB P3.2,FUN2 JNB P3.3,FUN3 ;关闭按纽 AJMP START FUN0: LCALL DL10MS ;消岸抖动 JB P3.4,START WAITL0: JNB P3.4,WAITL0 ;等待键释放 FUN01: LCALL FUN00 AJMP START FUN1: LCALL DL10MS ;消岸抖动 JB P3.5,START WAITL1: JNB P3.5,WAITL1 ;等待键释放 FUN10: LCALL FUN11 AJMP START FUN2: LCALL DL10MS ;消岸抖动 JB P3.2,START WAITL2: JNB P3.2,WAITL2 ;等待键释放 FUN20: LCALL FUN22 AJMP START
FUN3: LCALL DL10MS ;消岸抖动 JB P3.3,START WAITL3: JNB P3.3,WAITL3 ;等待键释放 MOV P1,#0FFH ;关显示 LJMP START
FUN00: MOV A,#0FEH ;左移子程序 FUN000: MOV P1,A LCALL DL05S JNB ACC.7,OUT ;检测是否结束 RL A AJMP FUN000 OUT: RET
FUN11: MOV A,#07FH ;右移子程序 FUN111: MOV P1,A LCALL DL05S JNB ACC.0,OUT ;检测是否结束 RR A AJMP FUN111
FUN22:MOV A,#0AAH ;间隔显示子程序 MOV P1,A LCALL DL30S CPL A MOV P1,A LCALL DL30S RET
;************; ; 延时程序 ; ;************; DL512:MOV R2,#0FFH ;延时500US LOOP1: DJNZ R2,LOOP1 RET
DL10MS:MOV R3,#14H ;延时10MS LOOP2: LCALL DL512 DJNZ R3,LOOP2 RET
DL05S:MOV R4,#0AH ;延时100MS LOOP3: LCALL DL10MS DJNZ R4,LOOP3 RET
DL30S:MOV R5,#03H ;延时300MS. LOOP4:LCALL DL05S DJNZ R5,LOOP4 RET
end |
|