查表法
上面的两个程序都是比较简单的流水灯程 序,“流水”花样只能实现单一的
“从左到右”流方式。运用查表法所编写的流水灯程序,能够实现任意方式流水,
而且流水花样无限,只要更改流水花样数据表的 流水数据就可以随意添加或改
变流水花样,真正实现随心所欲的流水灯效果。我们首先把要显示流水花样的
数据建在一个以 TAB 为标号的数据表中,然后通过查表指令“MOVC
A,@A+DPTR”把数据取到累加器 A 中,然后再送到 P1 口进行显示。具体源
程序如下,TAB 标号处的数据表可以根据实现效果的要 求任意修改。
ORG 0000H ;单片机上电后从 0000H 地址执行
AJMP START ;跳转到主程序存放地址处
ORG 0030H ;设置主程序开始地址
START:MOV SP,#60H ;设置堆栈起始地址为 60H
MOV DPTR,# TAB ;流水花样表首地址送 DPTR
LOOP: CLR A ;累加器清零
MOVC A,@A+DPTR ;取数据表中的值
CJNE A,#0FFH,SHOW;检查流水结束标志
AJMP START ;所有花样流完,则从 头开始重复流
SHOW: MOV P1,A ;将数据送到 P1 口
ACALL DELAY ;调用延时子程序
INC DPTR ;取数据表指针指向下一数据
AJMP LOOP ;继续查表取数据
DELAY: ;延时子程序
MOV R0,#255 ;延时一段时间
D1: MOV R1,#255
DJNZ R1,$
DJNZ R0,D1
评论1