📄 main.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 + -