📄 笔段全系列1621.asm
字号:
;**************************************************
L_CS EQU P3.0 ;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
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;测SEG ;共12个SEG
LOOP: LCALL L_CLR
MOV L_BUFF1,#00H
MOV L_COUNT2,#12 ;共12个SEG
LOOP1: MOV L_COUNT1,#01H
MOV L_BUFF2,#11110000B
LCALL L_WRSAC
LCALL DELAY1
INC L_BUFF1
DJNZ L_COUNT2,LOOP1
;测COM ;共4个COM
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#10000000B ;COM1
LCALL L_WRSAC
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#01000000B ;COM2
LCALL L_WRSAC
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#00100000B ;COM3
LCALL L_WRSAC
LCALL DELAY1
LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#00010000B ;COM4
LCALL L_WRSAC
CPL L_ELEN
LCALL DELAY10
CPL L_ELEN
LCALL DELAY1
LOOP2: LCALL L_CLR
MOV L_BUFF1,#00111111B
MOV L_BUFF2,#11110000B ;COM1.2.3.4
LCALL L_WRSAC
;CPL L_ELEN
;LCALL DELAY10
;CPL L_ELEN
LCALL DELAY1
LJMP LOOP
;******************L_INIT *************************
L_INIT: CLR L_CS
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_CS
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
L_CLR: MOV L_COUNT1,#20H
MOV L_BUFF1,#00H
MOV L_BUFF2,#00000000B
LCALL L_WRSAC
RET
;**************************************************
;点亮对应的SEG与COM
L_WRSAC: CLR L_CS
MOV L_COUNT,#03H
MOV L_BUFF,#10100000B ;WRITE INSTU 101
LCALL L_WRCBIT
MOV L_BUFF,L_BUFF1 ;SEG地址
LCALL L_WRSEG
L_WRSAC1: MOV L_COUNT,#04H
MOV L_BUFF,L_BUFF2 ;COM地址,高四位有效,ACC.7-ACC.4对应D0-D3
LCALL L_WRCBIT
DJNZ L_COUNT1,L_WRSAC1
SETB L_CS
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;写9位,先写L_JBBIT位,再写ACC.7-ACC.0
L_WR9BIT: LCALL L_WRBIT
MOV L_COUNT,#08H
LCALL L_WRCBIT
RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;写L_COUNT位,先写ACC.7位
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 + -