单片机实验----控制流水灯

这篇博客介绍了单片机实验中控制流水灯的具体实现,涉及MOVC、INC、CJNE和DB指令的运用。通过查表法,解释了如何利用这些指令实现流水灯的动态效果,并详细解析了每个指令的功能和操作。此外,还讨论了AT89C51单片机中数据比较和加1操作的相关细节。
摘要由CSDN通过智能技术生成

单片机实验----控制流水灯


效果:
如图:
效果
(上传的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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值