⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qscode.asm

📁 十五个关于AT89S51的源代码
💻 ASM
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;实例:快速启动quick start(STK 0707学习板)
;
;现象:8发光二极管向两个方向流动后数字8在6位七段数码管之间流动一次后循环
;
;作者:杨欣,刘长焕,张延强  电路飞翔网    eedesign@163.com
;
;				http://www.circuitfly.com
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


		ORG	   00H		;起始地址
START:					;程序一开始,初始一些所需要变量,如进位CY的清0等
		MOV    	A, #0FFH	;累加器ACC中8位全置1(FFH),发光二极管全熄灭
		CLR    	C		;进位CY被清0,CY=0
		MOV    	R1, #8		;R1=8,循环8次(左移8次),用R1作计数器

LEFT:					;这是发光二极管向左"流动"的循环体
		RLC    	A		;把进位CY在累加器ACC中从右向左轮换一位
		MOV    	P1, A		;输出至P1口
		CALL   	DELAY		;调延时子程序,延时200ms
		DJNZ   	R1, LEFT	;R1减1,如果不为0跳回LEFT继续执行,否则执行下一行
		MOV    	R2, #7		;R2=7,为向右"流动"设置次数,考虑一下为什么不是8?

RIGHT:					;这是发光二极管向右"流动"的循环体
		RRC     A		;把进位CY在累加器ACC中从左向右轮换一位
		MOV     P1, A		;输出至P1口
		CALL    DELAY		;调延时子程序,延时200ms
		DJNZ    R2, RIGHT	;是否右移了7次,如果不是则跳回RIGHT继续执行
		
LEDDIS:
		MOV	P0, #00H	;P0清0 
		MOV	P2, #8		;P2口输出显示数据8
		MOV	R2, #6		;R2=6,为6位七段数码管计数器
		MOV	A, #00H		;A=00H,七段数码管选通起始地址
		SETB	C		;CY=1

NEXT:
		RLC	A		;把进位CY在累加器ACC中从右向左轮换一位 
		MOV	P0, A		;输出至P0口
		CALL	DELAY		;调延时子程序,延时200ms
		DJNZ	R2,NEXT		;是否右移了6次,如果不是则跳回NEXT继续执行
		JMP     START		;跳回一开始,重复执行该程序
		
		
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			;子程序结束标志,返回主程序
		END			;程序结束点

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -