应用程序设计实例

来源:百度文库 编辑:神马文学网 时间:2024/04/27 14:51:05

应用程序设计实例灯的设计              

;键盘控制的花样彩灯。按p32,p33,p34,p35,p1口8个灯分别作左移动右移动,跑马,停止
;***************************************************************************
;* sxj1974@163.com (51c51 test web) www.8951.com *
;* Create by :石学军 www.51c51.com 更多例程请登陆网站 *
;***************************************************************************
;
;亮灯控制程序;
;************;
;
ORG 0000H
LJMP START
org0030h
;************;
; 主 程 序 ;
;************;
START:
MOV P3,#0FFH
JNB P3.4,FUN0;检测按键
JNB P3.5,FUN1
JNB P3.2,FUN2
JNB P3.3,FUN3 ;关闭按纽
AJMPSTART
FUN0:LCALL DL10MS ;消岸抖动
JB P3.4,START
WAITL0:JNB P3.4,WAITL0 ;等待键释放
FUN01:LCALL FUN00
AJMPSTART
FUN1:LCALL DL10MS ;消岸抖动
JB P3.5,START
WAITL1:JNB P3.5,WAITL1 ;等待键释放
FUN10:LCALL FUN11
AJMPSTART
FUN2:LCALL DL10MS ;消岸抖动
JB P3.2,START
WAITL2:JNB P3.2,WAITL2 ;等待键释放
FUN20:LCALL FUN22
AJMPSTART

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