;实用的查表方式多功能流水灯程序 liu03.asm
;----- 主程序开始 -----
ORG 0000H ;上电复位,程序从0000H开始执行
START: MOV SP,#60H ;堆栈初始化为60H
MOV DPTR,#LIU_TAB ;流水花样表首地址送DPTR
LOOP: CLR A
MOVC A,@A+DPTR
CJNE A,#0FFH,SHOW ;检查流水结束标志
AJMP START ;所有花样流完,则从头开始重复流
SHOW: MOV P0,A ;将数据送到P1口
ACALL DELAY
INC DPTR
AJMP LOOP
;----- 延时子程序 -----
DELAY: MOV R0,#255 ;延时一段时间
D1: MOV R1,#255
DJNZ R1,$
DJNZ R0,D1
RET ;子程序返回
;----- 下面是流水花样数据表 -----
LIU_TAB:
DB 01111111B ;二进制表示的流水花样数据
DB 10111111B
DB 11011111B
DB 11101111B
DB 11110111B
DB 11111011B
DB 11111101B
DB 11111110B
DB 11111110B
DB 11111101B
DB 11111011B
DB 11110111B
DB 11101111B
DB 11011111B
DB 10111111B
DB 01111111B
DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;十六进制表示
DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH
DB 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,7EH
DB 7FH,3FH,1FH,0FH,07H,03H,01H,00H
DB 0FFH ;流水花样结束标志0FFH
END ;程序结束