单片机小键盘控制的花样彩灯--手把手教你学单片机

该程序示例了单片机键盘控制p1口流水灯花样的方法;具体表现为:p3.2 3.2 3.4 3.5四个小按键

分别实现了四个控制:

1启动,停止;在任何状态下按此键程序停止运行.

2 跑灯,p1.0---1.7亮点流动:

3 流水灯; p1.0-1.7 依次点亮

4 交错等; p0.O,P0.2,P0.4,P0.6和p0.1,P0.3,P0.5,P0.7轮流点亮

该程序调试通过:


;************;

;亮灯控制程序;

;************;

;

;************;

;中断入口程序;

;************;

;

ORG 0000H

LJMP START

ORG 0003H

RETI

ORG 000BH

RETI

ORG 0013H

RETI

ORG 001BH

RETI

ORG 0023H

RETI

;

;************;

; 初始化程序 ;

;************;

;

CLEAR: RET

;

;************;

; 主 程 序 ;

;************;

;

START:ACALL CLEAR

STAR1:MOV P3,#0FFH

JNB P3.4,FUN0

JNB P3.5,FUN1

JNB P3.2,FUN2

JNB P3.3,FUN3 ;关闭按纽

JNB F0,STAR1 ;曾经有键按下F0置1

RET

;

FUN0:LCALL DL10MS ;消岸抖动

JB P3.4,STAR1

WAITL0:JNB P3.4,WAITL0 ;等待键释放

SETB F0

FUN01:LCALL FUN00

LCALL STAR1

LJMP FUN01

;

FUN1:LCALL DL10MS ;消岸抖动

JB P3.5,STAR1

WAITL1:JNB P3.5,WAITL1 ;等待键释放

SETB F0

FUN10:LCALL FUN11

LCALL STAR1

LJMP FUN10

;

FUN2:LCALL DL10MS ;消岸抖动

JB P3.2,STAR1

WAITL2:JNB P3.2,WAITL2 ;等待键释放

SETB F0

FUN20:LCALL FUN22

LCALL STAR1

LJMP FUN20

;

FUN3:LCALL DL10MS ;消岸抖动

JB P3.3,STAR1

WAITL3:JNB P3.3,WAITL3 ;等待键释放

CLR F0

MOV P1,#0FFH ;关显示

LJMP STAR1

;

FUN00:MOV A,#0FEH

FUN000:MOV P1,A

LCALL DL05S

JNB ACC.7,OUT

RL A

AJMP FUN000

OUT: RET

;

FUN11:MOV A,#0FEH

FUN111:MOV P1,A

LCALL DL05S

JZ OUT

RL A

ANL A,P1

AJMP FUN111

;

FUN22:MOV A,#0AAH

MOV P1,A

LCALL DL30S

CPL A

MOV P1,A

LCALL DL30S

RET

;

;************;

; 延时程序 ;

;************;

;

DL512:MOV R2,#0FFH

LOOP1: DJNZ R2,LOOP1

RET

DL10MS:MOV R3,#14H

LOOP2: LCALL DL512

DJNZ R3,LOOP2

RET

DL05S:MOV R4,#0AH

LOOP3: LCALL DL10MS

DJNZ R4,LOOP3

RET

DL30S:MOV R5,#03H

LOOP4:LCALL DL05S

DJNZ R5,LOOP4

RET

end