有八盏灯,全亮,每隔五秒灭一盏
希望有大侠帮忙解决一下
顶一下,希望版主能看到帮忙解决一下
ORG 0000H
CLR P1.4
START: MOV A,#0H ;全部点亮
MOV P0,A
LCALL DEL_5S
MOV A,#00000001B ;灭一盏灯
MOV P0,A
LCALL DEL_5S
MOV A,#00000011B ;灭两盏灯
MOV P0,A
LCALL DEL_5S
MOV A,#00000111B ;灭三盏灯
MOV P0,A
LCALL DEL_5S
MOV A,#00001111B ;灭四盏灯
MOV P0,A
LCALL DEL_5S
MOV A,#00011111B ;灭五盏灯
MOV P0,A
LCALL DEL_5S
MOV A,#00111111B ;灭六盏灯
MOV P0,A
LCALL DEL_5S
MOV A,#01111111B ;灭七盏灯
MOV P0,A
LCALL DEL_5S
MOV A,#11111111B ;灭八盏灯
MOV P0,A
LCALL DEL_5S
SJMP START ;循环
;-----------------------------------------------------------------
ORG 1000H ;5秒延时程序
DEL_5S: MOV TMOD,#10H ;定时器1、方式1、定时状态
MOV TL1,#0B0H
MOV TH1,#3CH ;送50ms定时初值
MOV R2,#0AH ;设置软件计数器,使10*5ms=0.5s
MOV R3,#0AH ;设置软件计数器,使10*0.5s=5s
SETB TR1 ;启动定时器1
LOOP: JNB TF1,$ ;判断基时是否到
MOV TL1,#0B0H
MOV TH1,#3CH ;再赋初值
CLR TF1 ;清溢出标志
DJNZ R2,LOOP ;判断0.5s是否到
MOV R2,#0AH
DJNZ R3,LOOP ;判断5s是否到
CLR TR1 ;关闭定时器1
RET ;定时结束
此程序根据51hei电路板线路编成,仅供参考
ORG 0000H
CLR P1.4
MOV R4,#00H
START: MOV A,#0H ;全部点亮
MOV P0,A
LCALL DEL_5S
MOV DPTR,#TAB
LOOP1: MOV A,R4
MOVC A,@A+DPTR
MOV P0,A
LCALL DEL_5S
INC R4 ;灭n盏
CJNE R4,#8H,LOOP1
MOV R4,#0H
SJMP START ;循环
;-----------------------------------------------------------------
ORG 1000H ;5秒延时程序
DEL_5S: MOV TMOD,#10H ;定时器1、方式1、定时状态
MOV TL1,#0B0H
MOV TH1,#3CH ;送50ms定时初值
MOV R2,#0AH ;设置软件计数器,使10*5ms=0.5s
MOV R3,#0AH ;设置软件计数器,使10*0.5s=5s
SETB TR1 ;启动定时器1
LOOP: JNB TF1,$ ;判断基时是否到
MOV TL1,#0B0H
MOV TH1,#3CH ;再赋初值
CLR TF1 ;清溢出标志
DJNZ R2,LOOP ;判断0.5s是否到
MOV R2,#0AH
DJNZ R3,LOOP ;判断5s是否到
CLR TR1 ;关闭定时器1
RET ;定时结束
;---------------------------------------------------------------
TAB: DB 01H,03H,07H,0FH
DB 1FH,3FH,7FH,0FFH
这个看起简洁些
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |