STARTMOV
ACC0FEH
ACC中先装入LED1亮的数据(二进制的11111110)
MOVP1ACC
将ACC的数据送P1口
MOVR07
将数据再移动7次就完成一个8位流水过程
LOOPRL
A
将ACC中的数据左移一位
MOVP1A
把ACC移动过的数据送p1口显示
ACALLDELAY
调用延时子程序
DJNZR0LOOP
没有移动够7次继续移动
AJMPSTART
移动完7次后跳到开始重来,以达到循环流动效果
延时子程序
DELAYMOVR0255
延时一段时间
D1MOVR1255
DJNZR1
DJNZR0D1
RET
子程序返回
END
程序结束
fSTARTCLRP10ACALLDELAYSETBP10CLRP11ACALLDELAYSETBP11CLRP12ACALLDELAYSETBP12CLRP13ACALLDELAYSETBP13CLRP14ACALLDELAYSETBP14CLRP15ACALLDELAYSETBP15CLRP16ACALLDELAYSETBP16CLRP17ACALLDELAYSETBP17ACALLDELAYAJMPSTART延时子程序
DELAYMOVR0255D1MOVR1255
DJNZR1DJNZR0D1RETEND
P10输出低电平使LED1点亮调用延时子程序
P10输出高电平使LED1熄灭P11输出低电平使LED2点亮
调用延时子程序P11输出高电平使LED2熄灭P12输出低电平使LED3点亮
调用延时子程序P12输出高电平使LED3熄灭P13输出低电平使LED4点亮
调用延时子程序P13输出高电平使LED4熄灭P14输出低电平使LED5点亮
调用延时子程序P14输出高电平使LED5熄灭P15输出低电平使LED6点亮
调用延时子程序P15输出高电平使LED6熄灭P16输出低电平使LED7点亮
调用延时子程序P16输出高电平使LED7熄灭P17输出低电平使LED8点亮
调用延时子程序P17输出高电平使LED8熄灭
调用延时子程序8个LED流了一遍后返回到标号START处再循环
延时一段时间
子程序返回程序结束
f
ORG0000H
上电复位,程序从0000H开始执行
STARTMOVSP60H
堆栈初始化为60H
MOV
DPTRLIU_TAB
流水花样表首地址送DPTR
LOOPCLRA
MOVCAADPTR
CJNEA0FFHSHOW
检查流水结束标志
AJMPSTART
所有花样流完则从头开始重复流
SHOWMOVP1A
将数据送到P1口
ACALLDELAY
INCDPTR
AJMPLOOP
延时子程序
DELAYMOVR0255
延时一段时间
D1MOVR1255
DJNZR1
DJNZR0D1
RET
子程序返回
下面是流水花样数据表
LIU_TAB
DB01111111B
二进制表示的流水花样数据
DB10111111B
DB11011111B
DB11101111B
DB11110111B
DB11111011B
DB11111101B
DB11111110B
DB11111110B
DB11111101B
DB11111011B
DB11110111B
DB11101111B
DB11011111B
DB10111111B
DB01111111B
DB7FH0BFH0DFH0EFH0F7H0FBH0FDH0FEH十六进制表示
DB0FEH0FDH0FBH0F7H0EFH0DFH0BFH7FH
DB7EH0BDH0DBH0E7H0E7H0DBH0BDH7EH
DB7FH3FH1FH0FH07H03H01H00H
DB0FFH
流水花样结束标志0FFH
END
程序结r