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

📄 test3.asm

📁 基于AT89S52控制6路led--走马灯和依次亮起(速度可调)
💻 ASM
字号:
;/* 名称:基于AT89S52控制6路led--走马灯和依次亮起(速度可调)					
;/* 程序概述:单片机AT89S52,晶振24.000MHz。从P1口的输出,高电平有效			

;/*************************************************************************/
SX_F		BIT	07H		;time0延时标志位,time0

DL_Z		DATA	38H	

DL_J		DATA	45H		;TIME0中断内计数暂存

XSBU3		DATA	50H
;=====================================================
		ORG	0000H
		LJMP	MAIN
		ORG	000BH	        ;Timer0 interrupt enter address
		LJMP	DLT0
		ORG 	0030H		
;=====================================================
;定时器timer0中断服务程序,定时10ms,晶振24.000MHz
;=====================================================
DLT0:		MOV	TH0,#0B1H	;0xB1DFH=(65535-20000)=45535
		MOV	TL0,#0DFH
		CLR	TR0
		MOV	XSBU3,#1
		
DT0:		DJNZ	DL_J,DT0BM_M
		MOV	DL_J,DL_Z	;计数次
		SETB	SX_F		;TIME0延时标志位置1

DT0BM_M:   				;慢速判断
		JB	P3.5,DT0BM_F
		INC	XSBU3
		MOV	DL_Z,#200	;延时2s

DT0BM_F:				;快速判断
		JB	P3.4,DT0_0V
		INC	XSBU3
		MOV	DL_Z,#30	;延时0.3s


DT0_0V:		MOV	A,XSBU3		;常规速度判断
		CJNE	A,#1,DT0_0VER
		MOV	DL_Z,#100 	;延时1s
DT0_0VER:	SETB	TR0
		NOP
		NOP
		NOP
		RETI
;=====================================================
;主程序
;=====================================================
MAIN:		
	//	MOV 	P1,#0FFH
	//	MOV	TALL,#191	;PWM控制数,最大值255,灰度级别控制

		MOV	DL_Z,#100	;time0延时计数(延时定时使用)T=2S
		MOV	DL_J,DL_Z
		MOV	SP,#60H
		MOV	TMOD,#11H	;手动
		

		MOV	TH0,#0B1H	;10MS定时控制
		MOV	TL0,#0DFH
		SETB	EA
		SETB	ET0
		CLR	TR0

		CLR	SX_F		;time0延时标志位(延时定时使用)


;=====================================================
;LED单个亮起和依次亮起程序
;=====================================================
START:		MOV		P1,#10000000B
		ACALL	ZDLT0
		MOV		P1,#01000000B
		ACALL	ZDLT0
		MOV		P1,#00100000B
		ACALL	ZDLT0
		MOV		P1,#00010000B
		ACALL	ZDLT0
		MOV		P1,#00001000B
		ACALL	ZDLT0
		MOV		P1,#00000100B
		ACALL	ZDLT0
		MOV		P1,#10000000B
		ACALL	ZDLT0
		MOV		P1,#11000000B
		ACALL	ZDLT0
		MOV		P1,#11100000B
		ACALL	ZDLT0
		MOV		P1,#11110000B
		ACALL	ZDLT0
		MOV		P1,#11111000B
		ACALL	ZDLT0
		MOV		P1,#11111100B
		ACALL	DEL
		AJMP	START

;=====================================================
;time0延时控制,
;=====================================================
ZDLT0:		MOV	DL_J,DL_Z
		CLR	SX_F
		SETB	TR0
ZDLT0_1:	JB	SX_F,ZDLT0_ED		;计数由DL_J控制,基本t为10ms
		AJMP	ZDLT0_1
ZDLT0_ED:			
		CLR	SX_F
		CLR	TR0
		
		RET
/*延时2.5s子程序*/
DEL:		MOV	R5,#28H
DEL1:		MOV	R6,#0FFH
DEL2:		MOV	R7,#0FFH
DEL3:		DJNZ	R7,DEL3
		DJNZ	R6,DEL2
		DJNZ	R5,DEL1
		RET
  

⌨️ 快捷键说明

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