📄 笔段全系列1622.asm
字号:
;**************************************************
;一个HT1622
;**************************************************
L_CS1 EQU P3.0 ;U1 :L_CS MOUDLE SELECT
L_WR EQU P3.1 ;L_WR MOUDLE SERIAL CLOCK
L_DATA EQU P3.2 ;L_DATA MOUDLE SERIAL DATA
L_ELEN EQU P3.3
L_JBBIT EQU 20H.0
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
L_BUFF EQU 30H
L_BUFF1 EQU 31H
L_BUFF2 EQU 32H
L_COUNT EQU 33H
L_COUNT1 EQU 34H
L_COUNT2 EQU 35H
;**************************************************
ORG 0000H
AJMP 0100H
ORG 0100H
MAIN: NOP
MOV SP,#5FH
SETB L_ELEN
LCALL DELAY10
CPL L_ELEN
LCALL DELAY10
CPL L_ELEN
LCALL L_INIT
LJMP LOOP2
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;LCALL L_CLR
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;测U1:SEG ;共32个SEG
LOOP: LCALL L_CLR
MOV L_BUFF1,#00H
MOV L_COUNT2,#32 ;共32个SEG
LOOP1: MOV L_COUNT1,#02H
MOV L_BUFF2,#11111111B
LCALL L_WRSAC1
LCALL DELAY1
INC L_BUFF1
INC L_BUFF1
DJNZ L_COUNT2,LOOP1
LOOP3:
;测U1:COM ;共8个COM
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#00000001B ;COM3
LCALL L_WRSAC1
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#00000010B ;COM2
LCALL L_WRSAC1
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#00000100B ;COM1
LCALL L_WRSAC1
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#00001000B ;COM0
LCALL L_WRSAC1
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#00010000B ;COM7
LCALL L_WRSAC1
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#00100000B ;COM6
LCALL L_WRSAC1
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#01000000B ;COM5
LCALL L_WRSAC1
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#10000000B ;COM4
LCALL L_WRSAC1
LCALL DELAY1
CPL L_ELEN
LCALL DELAY10
CPL L_ELEN
LCALL DELAY1
LOOP2: LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#11111111B ;COM0.1.2.3.4.5.6.7
LCALL L_WRSAC1
;CPL L_ELEN
;LCALL DELAY10
;CPL L_ELEN
LCALL DELAY1
LJMP LOOP
;******************L_INIT *************************
L_INIT:
L_INIT1: CLR L_CS1
MOV L_COUNT,#03H
MOV L_BUFF,#10000000B
LCALL L_WRCBIT ;WRITE INSTU 100
CLR L_JBBIT
MOV L_BUFF,#00000011B ;INI1 SYS ON
LCALL L_WR9BIT
CLR L_JBBIT
MOV L_BUFF,#00000111B ;INI2 LCD ON
LCALL L_WR9BIT
CLR L_JBBIT
MOV L_BUFF,#00110111B ;INI3 SET RC 256K OSC
LCALL L_WR9BIT
CLR L_JBBIT
MOV L_BUFF,#01010111B ;INI4 SET BIAS 1/3
LCALL L_WR9BIT
SETB L_CS1
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
L_CLR: MOV L_COUNT1,#20H
MOV L_BUFF1,#00H
MOV L_BUFF2,#00000000B
LCALL L_WRSAC1
RET
;**************************************************
;点亮U1指定的一个SEG下的八个COM
L_WRSAC1: CLR L_CS1
MOV L_COUNT,#03H
MOV L_BUFF,#10100000B ;WRITE INSTU 101
LCALL L_WRCBIT
MOV L_BUFF,L_BUFF1 ;SEG地址
LCALL L_WRSEG
L_WRSAC11: MOV L_COUNT,#08H
MOV L_BUFF,L_BUFF2 ;COM地址,ACC.7-ACC.4对应COM7-COM4, ACC.3-ACC.0对应COM3-COM0
LCALL L_WRCBIT
DJNZ L_COUNT1,L_WRSAC11
SETB L_CS1
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;写9位,先写L_JBBIT位,再写ACC.7-ACC.0
L_WR9BIT: LCALL L_WRBIT
MOV L_COUNT,#08H
LCALL L_WRCBIT
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;写L_COUNT位,先写ACC.0位
L_WRCBIT: PUSH ACC
MOV A,L_BUFF
L_WRCBIT1: JB ACC.7,L_WRCBIT2
CLR L_JBBIT
AJMP L_WRCBIT3
L_WRCBIT2: SETB L_JBBIT
L_WRCBIT3: LCALL L_WRBIT
RL A
DJNZ L_COUNT,L_WRCBIT1
POP ACC
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;写SEG地址,低6位有效,ACC.5-ACC.0对应A5-A0
L_WRSEG: PUSH ACC
MOV L_COUNT,#06H
MOV A,L_BUFF
L_WRSEG1: JB ACC.5,L_WRSEG2
CLR L_JBBIT
AJMP L_WRSEG3
L_WRSEG2: SETB L_JBBIT
L_WRSEG3: LCALL L_WRBIT
RL A
DJNZ L_COUNT,L_WRSEG1
POP ACC
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;写1位
L_WRBIT: CLR L_WR
JNB L_JBBIT,L_WRBIT1
SETB L_DATA
AJMP L_WRBIT2
L_WRBIT1: CLR L_DATA
L_WRBIT2: SETB L_WR
RET
;**************************************************
DELAY1: MOV R5,#6H
DEL11: MOV R6,#0FFH
DEL12: MOV R7,#0FFH
DEL13: DJNZ R7,DEL13
DJNZ R6,DEL12
DJNZ R5,DEL11
RET
DELAY10: MOV R5,#3H
DEL110: MOV R6,#0FFH
DEL120: MOV R7,#0FFH
DEL130: DJNZ R7,DEL130
DJNZ R6,DEL120
DJNZ R5,DEL110
RET
;**************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -