该程序示例了单片机键盘控制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轮流点亮
该程序在本站XP开发套件上调试通过:
;************;
;亮灯控制程序;
;************;
;
;************;
;中断入口程序;
;************;
;
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
以下是他的HEX文件, 复制到记事本并存为TXT文件,烧入XP开发套件即可!
:03000000020025D6
:0100030032CA
:01000B0032C2
:0100130032BA
:01001B0032B2
:100023003222112475B0FF30B40D30B51E30B22F1B
:1000330030B34030D5EE221200B620B4E730B4FD21
:10004300D2D51200871200270200451200B620B550
:10005300D330B5FDD2D512009512002702005912F4
:1000630000B620B2BF30B2FDD2D51200A3120027D2
:1000730002006D1200B620B3AB30B3FDC2D575904C
:10008300FF02002774FEF5901200BE30E703230140
:10009300892274FEF5901200BE60F62355900197F5
:1000A30074AAF5901200C6F4F5901200C6227AFFE6
:1000B300DAFE227B141200B1DBFB227C0A1200B6AB
:0B00C300DCFB227D031200BEDDFB22EF
:00000001FF