单片机实验----控制流水灯
效果:
如图:
(上传的gif,好像不太支持)
知识点:
- 学习MOVC,INC,CJNE,DB指令
- 学习一种新的编程方法——查表法
代码展示:
ORG 0000H
MAIN: MOV DPTR,#TAB ;数据指针中装人表格的初始地址#TAB
MOV R0,#0 ;数据表指针取初值0
LOOP: MOV A,R0 ;将指针的值转送给累加器
MOVC A,@ A+DPTR ;将(A+DPTR)作为地址查找到表格中的并放回A中
MOV P0,A ;将查表得到的数据传送给P1口使小灯点亮
LCALL DELAY ;调用延时子程序
MOV P0,#0FFH ;按要求点亮后关闭所有小灯
INC R0 ;查表指针加1
CJNE R0,#28,LOOP ;判断RO中的数是否为最后一个(这里为28),
若是则顺序往下执行,若否就跳转执行LOOP标号指令
LJMP MAIN ;流水灯循环点亮
DELAY: MOV R1,#200 ;延时子程序
D1: MOV R2,#150
D2: DJNZ R2,D2
DJNZ R1,D1
RET ;返回延时程序
TAB: DB 0FH,0F0H,0FH,0F0H
DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0DFH,07FH
DB 07FH,0BFH,0DFH,0F7