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

📄 main.asm

📁 基于51单片机,利用C语言开发的LED护栏源程序代码??1单片机,利用C语言开发的LED护栏源程序代码
💻 ASM
字号:

tiaoshu	equ	80


;CLK	BIT	P1.3
;STP	BIT	P1.2
;DAT	BIT	P1.4

DAT	bit	P2.5
CLK	bit	P2.6
STP	bit	P2.7


;置位要显示的颜色...
;R G B 对应的位置...
;   R,		G,	   B...
;00000100B  00000010B  00000001B
;置位要显示的底色...
;R G B 对应的位置...
;   R,		G,	   B...
;00100000B  00010000B  00001000B
;显示的次数....
;00xxxxxxB	1次..
;01xxxxxxB	2次..
;10xxxxxxB	3次..
;11xxxxxxB	4次..
CLOUR	EQU	20H


;延时用寄存器...
DBUF1	EQU	30H
DBUF2	EQU	31H
DBUF3	EQU	32H

;显示用寄存器...
XSBF1	EQU	33H
XSBF2	EQU	34H
XSBF3	EQU	35H
XSBF4	EQU	36H














ORG	0000H

AJMP	MAIN

ORG	0050H
MAIN:	MOV	SP,#80H
        acall delay
	LCALL	DISPLAY	
	AJMP	MAIN

DELAY:	MOV	DBUF1,#1
DEL02:	MOV	DBUF2,#2
DEL01:	MOV	DBUF3,#2
	DJNZ	DBUF3,$
	DJNZ	DBUF2,DEL01
	DJNZ	DBUF1,DEL02
        ret

;$include (defin.asm)
;$include (display.asm)
;$include (delay.asm)
;$include (huayang.asm)




DISPLAY:;全显蓝色...
	MOV	CLOUR,#00000001B
	LCALL	DISALL
	LCALL	DELAY_1S
	;全显绿色...
	MOV	CLOUR,#00000010B
	LCALL	DISALL
	LCALL	DELAY_1S
	MOV	CLOUR,#00000011B
	LCALL	DISALL
	LCALL	DELAY_1S
	;全显红色...
	MOV	CLOUR,#00000100B
	LCALL	DISALL
	LCALL	DELAY_1S
	MOV	CLOUR,#00000101B
	LCALL	DISALL
	LCALL	DELAY_1S
	MOV	CLOUR,#00000110B
	LCALL	DISALL
	LCALL	DELAY_1S
	MOV	CLOUR,#00000111B
	LCALL	DISALL
	LCALL	DELAY_1S

	;绿底,红色左堆...
	MOV	CLOUR,#00010100B
	LCALL	DISDJML
	MOV	CLOUR,#00010100B
	LCALL	DISDJM4L


	;红底,蓝色左右扫描...
	MOV	CLOUR,#00100001B
	LCALL	DISXXXR
	LCALL	DISXXXL
	LCALL	DISXXXR
	LCALL	DISXXXL



	;红底,绿色左右扫描...
	MOV	CLOUR,#00100010B
	LCALL	DISXXXR
	LCALL	DISXXXL
	LCALL	DISXXXR
	LCALL	DISXXXL
	;绿底,红色左右扫描...
	MOV	CLOUR,#00010100B
	LCALL	DISXXXR
	LCALL	DISXXXL
	LCALL	DISXXXR
	LCALL	DISXXXL
	;绿底,蓝色左右扫描...
	MOV	CLOUR,#00010001B
	LCALL	DISXXXR
	LCALL	DISXXXL
	LCALL	DISXXXR
	LCALL	DISXXXL
	;蓝底,绿色左右扫描...
	MOV	CLOUR,#00001010B
	LCALL	DISXXXR
	LCALL	DISXXXL
	LCALL	DISXXXR
	LCALL	DISXXXL
	;蓝底,红色左右扫描...
	MOV	CLOUR,#00001100B
	LCALL	DISXXXR
	LCALL	DISXXXL
	LCALL	DISXXXR
	LCALL	DISXXXL

	;绿底,蓝色左堆...
	MOV	CLOUR,#00010001B
	LCALL	DISDJML
	MOV	CLOUR,#00010001B
	LCALL	DISDJM4L

	;红底,蓝色增减...
	MOV	CLOUR,#00100001B
	LCALL	DISADDL
	LCALL	DISADDR
	;红底,绿色增减...
	MOV	CLOUR,#00100010B
	LCALL	DISADDL
	LCALL	DISADDR
	;绿底,红色增减...
	MOV	CLOUR,#00010100B
	LCALL	DISADDL
	LCALL	DISADDR
	;绿底,蓝色增减...
	MOV	CLOUR,#00010001B
	LCALL	DISADDL
	LCALL	DISADDR
	;蓝底,绿色增减...
	MOV	CLOUR,#00001010B
	LCALL	DISADDL
	LCALL	DISADDR
	;蓝底,红色增减...
	MOV	CLOUR,#00001100B
	LCALL	DISADDL
	LCALL	DISADDR

	;蓝底,绿色左堆...
	MOV	CLOUR,#00001010B
	LCALL	DISDJML
	MOV	CLOUR,#00001010B
	LCALL	DISDJM4L



	;红底七彩左移...
	MOV	CLOUR,#00100000B
	LCALL	DISRGBL
	;绿底七彩左移...
	MOV	CLOUR,#00010000B
	LCALL	DISRGBL
	;蓝底七彩左移...
	MOV	CLOUR,#00001000B
	LCALL	DISRGBL

	;蓝底,红色左堆...
	MOV	CLOUR,#00001100B
	LCALL	DISDJML
	MOV	CLOUR,#00001100B
	LCALL	DISDJM4L


	;红底,蓝色向中扫描...
	MOV	CLOUR,#00100001B
	LCALL	DISXXXW
	LCALL	DISXXXM
	LCALL	DISXXXW
	LCALL	DISXXXM
	;红底,绿色向中扫描...
	MOV	CLOUR,#00100010B
	LCALL	DISXXXW
	LCALL	DISXXXM
	LCALL	DISXXXW
	LCALL	DISXXXM
	;绿底,红色向中扫描...
	MOV	CLOUR,#00010100B
	LCALL	DISXXXW
	LCALL	DISXXXM
	LCALL	DISXXXW
	LCALL	DISXXXM
	;绿底,蓝色向中扫描...
	MOV	CLOUR,#00010001B
	LCALL	DISXXXW
	LCALL	DISXXXM
	LCALL	DISXXXW
	LCALL	DISXXXM
	;蓝底,绿色向中扫描...
	MOV	CLOUR,#00001010B
	LCALL	DISXXXW
	LCALL	DISXXXM
	LCALL	DISXXXW
	LCALL	DISXXXM
	;蓝底,红色向中扫描...
	MOV	CLOUR,#00001100B
	LCALL	DISXXXW
	LCALL	DISXXXM
	LCALL	DISXXXW
	LCALL	DISXXXM

	;红底。绿色左堆...
	MOV	CLOUR,#00100010B
	LCALL	DISDJML

	;红底七彩4左移...
	MOV	CLOUR,#00100000B
	LCALL	DISRGB4L
	;绿底七彩4左移...
	MOV	CLOUR,#00010000B
	LCALL	DISRGB4L
	;蓝底七彩4左移...
	MOV	CLOUR,#00001000B
	LCALL	DISRGB4L

	;红底,蓝色左堆...
	MOV	CLOUR,#00100001B
	LCALL	DISDJM4L


	RET




DELAY_100MS:
	MOV	DBUF1,#5
D1002:	MOV	DBUF2,#25
D1001:	MOV	DBUF3,#182
	DJNZ	DBUF3,$
	DJNZ	DBUF2,D1001
	DJNZ	DBUF1,D1002
 	RET

DELAY_50MS:
	MOV	DBUF1,#4
D502:	MOV	DBUF2,#25
D501:	MOV	DBUF3,#182
	DJNZ	DBUF3,$
	DJNZ	DBUF2,D501
	DJNZ	DBUF1,D502
	RET

DELAY_1S:
	MOV	DBUF1,#10
D12:	MOV	DBUF2,#250
D11:	MOV	DBUF3,#182
	DJNZ	DBUF3,$
	DJNZ	DBUF2,D11
	DJNZ	DBUF1,D12
	RET

DELAY_10MS:
	MOV	DBUF1,#5
D102:	MOV	DBUF2,#25
D101:	MOV	DBUF3,#18
	DJNZ	DBUF3,$
	DJNZ	DBUF2,D101
	DJNZ	DBUF1,D102
	RET





;全部显示同一种颜色.....
DISALL:
	MOV	R7,#TIAOSHU
	CLR	CLK
	CLR	STP
DISALL1:
	LCALL	REDYS
	DJNZ	R7,DISALL1
	SETB	STP
	NOP
	CLR	STP
	RET


;读要显示的数据....
REDYS:	MOV	C,00H
	MOV	DAT,C
	SETB	CLK
	CLR	CLK
	MOV	C,01H
	MOV	DAT,C
	SETB	CLK
	CLR	CLK
	MOV	C,02H
	MOV	DAT,C
	SETB	CLK
	CLR	CLK
	RET
;传送两个黑点...
REDAB:	CLR	DAT
	SETB	CLK
	CLR	CLK

	CLR	DAT
	SETB	CLK
	CLR	CLK

	CLR	DAT
	SETB	CLK
	CLR	CLK
	
	RET

;读要显示的底色数据....
REDDS:	MOV	C,03H
	MOV	DAT,C
	SETB	CLK
	CLR	CLK
	MOV	C,04H
	MOV	DAT,C
	SETB	CLK
	CLR	CLK
	MOV	C,05H
	MOV	DAT,C
	SETB	CLK
	CLR	CLK
	RET
	RET

;读要显示的次数....
;保存在R4中...
REDTS:	MOV	A,#0
	MOV	C,06H
	MOV	ACC.0,C
	MOV	C,07H
	MOV	ACC.1,C
	INC	A
	MOV	R4,A
	RET

;向左扫描....
DISXXXL:
	LCALL	REDTS
DISXXXL4:
	MOV	A,#TIAOSHU
	MOV	B,#4
	DIV	AB
	INC	A
	MOV	R7,A
	MOV	R5,#1
DISXXXL0:
	MOV	XSBF2,R7
	MOV	XSBF1,R5
	CLR	CLK
	CLR	STP
DISXXXL1:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF2,DISXXXL1
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	DJNZ	XSBF1,DISXXXL3
	AJMP	DISXXXL2
DISXXXL3:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF1,DISXXXL3
DISXXXL2:
	SETB	STP
	NOP
	CLR	STP
	INC	R5
	LCALL	DELAY_100MS
	DJNZ	R7,DISXXXL0
	DJNZ	R4,DISXXXL4
	RET

;向中扫描....
DISXXXM:
	LCALL	REDTS
DISXXXM8:MOV	A,#TIAOSHU
	MOV	B,#8
	DIV	AB
	INC	A
	MOV	R7,A
	MOV	R5,#1
DISXXXM0:
	MOV	XSBF2,R7
	MOV	XSBF1,R5
	CLR	CLK
	CLR	STP
DISXXXM1:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF2,DISXXXM1
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	DJNZ	XSBF1,DISXXXM3
	AJMP	DISXXXM2
DISXXXM3:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF1,DISXXXM3
DISXXXM2:
	MOV	XSBF2,R5
	MOV	XSBF1,R7
	AJMP	DISXXXM7
DISXXXM4:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
DISXXXM7:
	DJNZ	XSBF2,DISXXXM4
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	DJNZ	XSBF1,DISXXXM5
	AJMP	DISXXXM6
DISXXXM5:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF1,DISXXXM5
DISXXXM6:
	SETB	STP
	NOP
	CLR	STP
	INC	R5
	LCALL	DELAY_100MS
	DJNZ	R7,DISXXXM0
	DJNZ	R4,DISXXXM81
	RET
DISXXXM81:AJMP	DISXXXM8


;向外扫描....
DISXXXW:
	LCALL	REDTS
DISXXXW8:
	MOV	A,#TIAOSHU
	MOV	B,#8
	DIV	AB
	ADD	A,#1
	MOV	R7,A
	MOV	R5,#1
DISXXXW0:
	MOV	XSBF2,R5
	MOV	XSBF1,R7
	CLR	CLK
	CLR	STP
DISXXXW1:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF2,DISXXXW1
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	DJNZ	XSBF1,DISXXXW3
	AJMP	DISXXXW2
DISXXXW3:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF1,DISXXXW3
DISXXXW2:
	MOV	XSBF2,R7
	MOV	XSBF1,R5
	AJMP	DISXXXW7
DISXXXW4:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
DISXXXW7:
	DJNZ	XSBF2,DISXXXW4
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	DJNZ	XSBF1,DISXXXW5
	AJMP	DISXXXW6
DISXXXW5:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF1,DISXXXW5
DISXXXW6:
	SETB	STP
	NOP
	CLR	STP
	INC	R5
	LCALL	DELAY_100MS
	DJNZ	R7,DISXXXW0
	DJNZ	R4,DISXXXW81
	RET
DISXXXW81:AJMP	DISXXXW8



;向右扫描....
DISXXXR:
	LCALL	REDTS
DISXXXR4:
	MOV	A,#TIAOSHU
	MOV	B,#4
	DIV	AB
	INC	A
	MOV	R7,A
	MOV	R5,#1
DISXXXR0:
	MOV	XSBF2,R5
	MOV	XSBF1,R7
	CLR	CLK
	CLR	STP
DISXXXR1:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF2,DISXXXR1
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	DJNZ	XSBF1,DISXXXR3
	AJMP	DISXXXR2
DISXXXR3:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF1,DISXXXR3
DISXXXR2:
	SETB	STP
	NOP
	CLR	STP
	INC	R5
	LCALL	DELAY_100MS
	DJNZ	R7,DISXXXR0
	DJNZ	R4,DISXXXR4
	RET

;向左累加....
DISADDL:
	LCALL	REDTS
DISADDL4:
	MOV	R7,#TIAOSHU
	MOV	R5,#1
DISADDL0:
	MOV	XSBF2,R7
	MOV	XSBF1,R5
	CLR	CLK
	CLR	STP
DISADDL1:
	LCALL	REDDS
	DJNZ	XSBF2,DISADDL1
	LCALL	REDYS
	DJNZ	XSBF1,DISADDL3
	AJMP	DISADDL2
DISADDL3:
	LCALL	REDYS
	DJNZ	XSBF1,DISADDL3
DISADDL2:
	SETB	STP
	NOP
	CLR	STP
	INC	R5
	LCALL	DELAY_10MS
	DJNZ	R7,DISADDL0
	DJNZ	R4,DISADDL4
	RET

;向右累加....
DISADDR:
	LCALL	REDTS
DISADDR4:
	MOV	R7,#TIAOSHU
	MOV	R5,#1
DISADDR0:
	MOV	XSBF2,R5
	MOV	XSBF1,R7
	CLR	CLK
	CLR	STP
DISADDR1:
	LCALL	REDDS
	DJNZ	XSBF2,DISADDR1
	LCALL	REDYS
	DJNZ	XSBF1,DISADDR3
	AJMP	DISADDR2
DISADDR3:
	LCALL	REDYS
	DJNZ	XSBF1,DISADDR3
DISADDR2:
	SETB	STP
	NOP
	CLR	STP
	INC	R5
	LCALL	DELAY_10MS
	DJNZ	R7,DISADDR0
	DJNZ	R4,DISADDR4
	RET

;七彩左移...
DISRGBL:
	LCALL	REDTS
	MOV	R5,CLOUR
DISRGBL4:
	MOV	CLOUR,R5
	MOV	R7,#tiaoshu
DISRGBL0:
	LCALL	REDDS
	DJNZ	R7,DISRGBL0
	MOV	CLOUR,#0
DISRGBL3:
	LCALL	REDYS
	SETB	STP
	NOP
	CLR	STP
	LCALL	DELAY_100MS
	DJNZ	CLOUR,DISRGBL3
	DJNZ	R4,DISRGBL4
	RET

;七彩左移4列...
DISRGB4L:
	LCALL	REDTS
	MOV	R5,CLOUR
DISRGB4L4:
	MOV	CLOUR,R5
	MOV	R7,#tiaoshu

DISRGB4L0:
	LCALL	REDDS
	DJNZ	R7,DISRGB4L0
	MOV	CLOUR,#120
DISRGB4L3:
	LCALL	REDYS
	SETB	STP
	NOP
	CLR	STP
	LCALL	DELAY_50MS
	LCALL	REDAB
	SETB	STP
	NOP
	CLR	STP
	LCALL	DELAY_50MS
	LCALL	REDAB
	SETB	STP
	NOP
	CLR	STP
	LCALL	DELAY_50MS

	DJNZ	CLOUR,DISRGB4L3
	DJNZ	R4,DISRGB4L4
	RET


;向左堆积木....
DISDJML:
	LCALL	REDTS
DISDJML4:
	MOV	R7,#16
	DEC	R7
	MOV	R5,#1	
DISDJML0:
	MOV	XSBF2,R7
	MOV	XSBF3,R7
	MOV	R6,XSBF3
	MOV	R3,#1

DISDJML2:
	MOV	XSBF4,R3
	MOV	XSBF3,R6
	MOV	XSBF1,R5
	CLR	CLK
	CLR	STP
	DJNZ	XSBF4,DISDJML1
	AJMP	DISDJML6
DISDJML1:
	LCALL	REDDS
	DJNZ	XSBF4,DISDJML1
DISDJML6:
	LCALL	REDYS
	DJNZ	XSBF3,DISDJML5
	AJMP	DISDJML3
DISDJML5:
	LCALL	REDDS
	DJNZ	XSBF3,DISDJML5
DISDJML3:
	LCALL	REDYS
	DJNZ	XSBF1,DISDJML3
	SETB	STP
	NOP
	CLR	STP
	INC	R3
	LCALL	DELAY_50MS
	DJNZ	R6,DISDJML2
	INC	R5
	DJNZ	R7,DISDJML0
	DJNZ	R4,DISDJML4
	RET

;向左堆积木4列....
DISDJM4L:
	LCALL	REDTS
DISDJM4L4:
	MOV	A,#TIAOSHU
	MOV	B,#4
	DIV	AB
	MOV	R7,A
	MOV	R5,#1	
DISDJM4L0:
	MOV	XSBF2,R7
	MOV	XSBF3,R7
	MOV	R6,XSBF3
	MOV	R3,#1

DISDJM4L2:
	MOV	XSBF4,R3
	MOV	XSBF3,R6
	MOV	XSBF1,R5
	CLR	CLK
	CLR	STP
	DJNZ	XSBF4,DISDJM4L1
	AJMP	DISDJM4L6
DISDJM4L1:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF4,DISDJM4L1
DISDJM4L6:
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	DJNZ	XSBF3,DISDJM4L5
	AJMP	DISDJM4L3
DISDJM4L5:
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	LCALL	REDDS
	DJNZ	XSBF3,DISDJM4L5
DISDJM4L3:
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	LCALL	REDYS
	DJNZ	XSBF1,DISDJM4L3
	SETB	STP
	NOP
	CLR	STP
	INC	R3
	LCALL	DELAY_50MS
	DJNZ	R6,DISDJM4L2
	INC	R5
	DJNZ	R7,DISDJM4L0
	DJNZ	R4,DISDJM4L4
	RET

;8列扫描...
DIS8R:	MOV	A,TIAOSHU
	MOV	B,#8
	DIV	AB
	INC	A
	MOV	R7,A
DIS8R1:	LCALL	REDDS
	DJNZ	R7,DIS8R1
	MOV	R7,TIAOSHU


	




END

⌨️ 快捷键说明

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