📄 sqeledtable.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;实例八:取表实现流水灯 sequencer performed by looking up the table (《51单片机应用从零开始》 6.4小节实例)
;
;现象:用取表的方式,将显示数据输出至发光二极管,以实现流水灯的效果
;
;作者:杨欣,刘长焕,张延强 电路飞翔网 eedesign@163.com
;
; http://www.circuitfly.com
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 00H
START: ;程序一开始装表,即把DPRT指到表TABLE的开头
MOV DPTR, #TABLE ; 数据指针寄存器DPTR指向表TABLE
LOADTABLE: ;取表程序段,表中的数据载入累加器ACC中,并判断是否已经完成
CLR A ; 累加器ACC清0
MOVC A, @A+DPTR ; 基址加变址寻址,将表中数据加载到ACC
CJNE A, #88H, DISPLAY ; 如果取到88H表明表已经取完,否则显示
JMP START ; 如果取完,跳回START重新开始
DISPLAY: ;显示程序段,将从数据表中载入累加器ACC的数据输出到P0
MOV P1, A ; 将ACC中数据输出至P0口
CALL DELAY ; 调延时子程序
INC DPTR ; 数据指针寄存器自加1,准备取表中的下一个数据
JMP LOADTABLE ; 跳到取表程序段
DELAY: ;延时200ms的子程序
MOV R3, #20
D1:
MOV R4, #20
D2:
MOV R5, #248
DJNZ R5, $ ;R5减1,如果不为0,就执行本行
DJNZ R4, D2
DJNZ R3, D1
RET ;子程序结束标志,返回主程序
TABLE: ;本程序的数据表
DB 0FEH, 0FDH, 0FBH, 0F7H ; 左移
DB 0EFH, 0DFH, 0BFH, 07FH
DB 07FH, 0BFH, 0DFH, 0EFH ; 右移
DB 0F7H, 0FBH, 0FDH, 0FEH
DB 88H ; 结束码
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -