📄 静态交替闪烁.asm
字号:
;测试74HC595芯片
;----------------------------------
SCK EQU P3.6 ;--595的--SCK-时钟----11-
RCK EQU P3.5 ;--595的--RCK--锁存时钟-12-
SI EQU P3.7 ;--595的数据脚-- I/O --14-
;----------------------------------
;----------------------------------
ORG 00H
JMP ST
;----------------------------------
ORG 0BH
JMP SHINE
;----------------------------------
;----------------------------------
SHINE:
MOV TH0,#07EH ;1MS、定时器赋初值
MOV TL0,#18H
MOV DPTR,#TB0
RETI
; CPL 2FH.1
; JB 2FH.1,SS1
; MOV DPTR,#TB1
; RETI
;SS1: MOV DPTR,#TB2
; RETI
;----------------------------
TC: MOV 50H,#0FFH;延时一段时间0FAH
H2: DJNZ 50H,H2
RET
;----------------------------
TB: MOV 51H,#03FH ;延时一段时间2*0FAH
H3: CALL TC
DJNZ 51H,H3
RET
;----------------------------
;----------------------------------
SCKK: ;---SCK-时钟---
CLR SCK ;时钟程序
SETB SCK ;时钟高时有效,取数
RET
;----------------------------------
RCKK: ;---RCK--锁存--时钟---
CLR RCK ;锁存时钟程序
SETB RCK ;时钟高时有效,数据锁存
RET
;----------------------------------
TT595: CPL A
RRC A
MOV 2AH.0,C
RRC A
MOV 2AH.1,C
RRC A
MOV 2AH.5,C
RRC A
MOV 2AH.7,C
RRC A
MOV 2AH.6,C
RRC A
MOV 2AH.4,C
RRC A
MOV 2AH.2,C
RRC A
MOV 2AH.3,C
;---
;----595--传数据--
MOV A,2AH
MOV R7,#08H
B595: RRC A
MOV SI,C
CALL SCKK
DJNZ R7,B595
RET
;----------------------------------
TT595L: ;给595送一行数据,初值R2指示一行的首地址偏移
MOV A,#6
MOV R6,#6 ;计数循环次数
ADD A,R2
MOV R2,A ;找到这一行的最后一个数据,因为移位给595是最先移最右边的数据
YY2: DEC R2
MOV A,R2 ;15行
MOVC A,@A+DPTR
CALL TT595
DJNZ R6,YY2
RET
;----------------------------------
;字模取模方式:横向8点左高位
;输出格式的数据排列次序为:从上到下从左到右
;----------------------------------
TB0: ;圣诞树(交替闪烁者),3ab
DB 0x00,0x00, 0x00,0x00, 0x00,0x3F
DB 0x00,0x00, 0x00,0x00, 0x0F,0xFF
DB 0x00,0x00, 0x00,0x03, 0xFF,0xFF
DB 0x00,0x00, 0x00,0xFF, 0xFF,0xFF
DB 0x00,0x00, 0x3F,0xFF, 0xFF,0xFF
DB 0x00,0x0F, 0xFF,0xFF, 0xFF,0xFF
DB 0x03,0xFF, 0xFF,0xFF, 0xFF,0xFF
DB 0xFF,0xFF, 0xFF,0xFF, 0xFF,0xFF
DB 0xFF,0xFF, 0xFF,0xFF, 0xFF,0xFF
DB 0x03,0xFF, 0xFF,0xFF, 0xFF,0xFF
DB 0x00,0x0F, 0xFF,0xFF, 0xFF,0xFF
DB 0x00,0x00, 0x3F,0xFF, 0xFF,0xFF
DB 0x00,0x00, 0x00,0xFF, 0xFF,0xFF
DB 0x00,0x00, 0x00,0x03, 0xFF,0xFF
DB 0x00,0x00, 0x00,0x00, 0x0F,0xFF
DB 0x00,0x00, 0x00,0x00, 0x00,0x3F
TB1: ;圣诞树(交替闪烁者),3b
DB 0x00,0x00, 0x00,0x00, 0x00,0x3F
DB 0x00,0x00, 0x00,0x00, 0x0F,0xBF
DB 0x00,0x00, 0x00,0x03, 0xEF,0x1F
DB 0x00,0x00, 0x00,0xFF, 0xC7,0xBF
DB 0x00,0x00, 0x37,0xDE, 0xEF,0xFD
DB 0x00,0x0F, 0x63,0x8B, 0xFB,0xEF
DB 0x03,0xEE, 0x37,0xD1, 0xFF,0xC7
DB 0xFF,0xC7, 0x7E,0xFB, 0xFF,0x6F
DB 0xFE,0xEF, 0xDF,0xFF, 0xBD,0xFF
DB 0x03,0xFD, 0xFB,0xED, 0xF8,0xFF
DB 0x00,0x0F, 0xF1,0xB8, 0xED,0xDF
DB 0x00,0x00, 0x3B,0x1D, 0xC7,0x8F
DB 0x00,0x00, 0x00,0xBF, 0x6F,0xDD
DB 0x00,0x00, 0x00,0x03, 0xFF,0xF7
DB 0x00,0x00, 0x00,0x00, 0x0F,0xE3
DB 0x00,0x00, 0x00,0x00, 0x00,0x37
TB2: ;圣诞树(交替闪烁者),3a
DB 0x00,0x00, 0x00,0x00, 0x00,0x3F
DB 0x00,0x00, 0x00,0x00, 0x0F,0xFF
DB 0x00,0x00, 0x00,0x03, 0xFF,0xBF
DB 0x00,0x00, 0x00,0xFE, 0xEF,0xFD
DB 0x00,0x00, 0x3F,0xFC, 0x7B,0xF8
DB 0x00,0x0F, 0xF7,0xDE, 0xF1,0xFD
DB 0x03,0xFF, 0x7E,0xFB, 0xFB,0x6F
DB 0xFE,0xEF, 0xDC,0x7F, 0xBE,0x3F
DB 0xFC,0x7D, 0x8E,0xEF, 0x1F,0x7F
DB 0x02,0xF8, 0xDF,0xC7, 0xBD,0xFF
DB 0x00,0x0D, 0xFB,0xED, 0xFF,0xFF
DB 0x00,0x00, 0x3F,0xBF, 0x6F,0xDD
DB 0x00,0x00, 0x00,0xFE, 0x3E,0xF8
DB 0x00,0x00, 0x00,0x03, 0x7C,0x7D
DB 0x00,0x00, 0x00,0x00, 0x0E,0xF7
DB 0x00,0x00, 0x00,0x00, 0x00,0x3F
;----------------------------------
;----------------------------------
;显示闪烁画面,入口参数:MOV DPTR,#TB2
SDISP:
MOV P0,#0FFH
MOV P2,#0FFH
CLR P3.6 ;清时钟
CLR P3.5 ;清锁存时钟
MZZ0:
;----------------------------
CLR P2.7 ;15行
MOV R2,#0
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P2.7
;----------------------------
CLR P0.0 ;0行
MOV R2,#6
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P0.0
;-------------------------------
CLR P0.1 ;1行
MOV R2,#12
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P0.1
;--------------------------------
CLR P0.2 ;2行
MOV R2,#18
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P0.2
;----------------------------
CLR P0.3 ;3行
MOV R2,#24
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P0.3
;----------------------------
CLR P0.4 ;4行
MOV R2,#30
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P0.4
;-----------------------------
CLR P0.5 ;5行
MOV R2,#36
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P0.5
;-----------------------------
CLR P0.6 ;9行
MOV R2,#42
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P0.6
;-----------------------------
CLR P0.7 ;7行
MOV R2,#48
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P0.7
;-----------------------------
CLR P2.0 ;开一行;8行
MOV R2,#54
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P2.0 ;关上一行
;-----------------------------
CLR P2.1 ;10行
MOV R2,#60
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P2.1
;-----------------------------
CLR P2.2
MOV R2,#66
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P2.2
;----------------------------
CLR P2.3
MOV R2,#72
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P2.3
;----------------------------
CLR P2.4
MOV R2,#78
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P2.4
;--------------------------------
CLR P2.5
MOV R2,#84
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P2.5
;-------------------------------
CLR P2.6
MOV R2,#90
CALL TT595L
CALL RCKK ;--595-RCK--锁存--时钟--显示--
SETB P2.6
;----------------------
RET
;----------------------------------
;----------------------------------
ST:
MOV SP,#30H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
;----------------------------------
MOV R2,#00H ;
MOV R3,#00H ;
;----------------------------------
SETB EA ;--开总中断 IE.7=1
SETB ET0 ;-- 定时器T0--控制位 IE.1=1 IE=#82H
MOV TMOD,#11H ;-- 定时器T0--T1--方式1
MOV TL0,#0FCH ;-- 定时器T0-1MS-初值
MOV TH0,#018H ;-- 定时器T0-1MS-初值
;---------------------------------
SETB TR0
LL0:
MOV 50H,#80
LL1: MOV DPTR,#TB1
CALL SDISP
DJNZ 50H,LL1
MOV 50H,#80
LL2: MOV DPTR,#TB2
CALL SDISP
DJNZ 50H,LL2
JMP LL0
;----------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -