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电路板线路编成,仅供参考 |