📄 595-c4-bb.asm
字号:
;89S52 3字
;F0=12M T0=1US
;“请交费”点振字库显示
SER14 EQU P1.5
SCK11 EQU P1.6
RCK12 EQU P1.7
;----------------------------
ORG 00H
JMP MAIN
;---------------------------- 10
TC: MOV 50H,#0FAH
H2: DJNZ 50H,H2
RET
;----------------------------
TB: MOV 51H,#02H
H3: CALL TC
DJNZ 51H,H3
RET
;----------------------------
SCKO: SETB SCK11 ;时钟 20
NOP
CLR SCK11
RET
;----------------------------
READ: CALL TABEL ;读数据的第一位
CPL A ;在我们的板上0为点振亮,1为点振灭 26
JB ACC.0,M1;依次测试这8个位的数据
CLR SER14
JMP M2
M1: SETB SER14 ;每测试一个数据,都要调用时钟 30
M2: CALL SCKO ;数据才能被取到.
;---------------------------
JB ACC.1,M3 ;读数据的第二位
CLR SER14
JMP M4
M3: SETB SER14
M4: CALL SCKO
;------------------------
JB ACC.6,M5 ;读数据的第三位
CLR SER14 ;40
JMP M6
M5: SETB SER14
M6: CALL SCKO
;------------------------
JB ACC.7,M7 ;读数据的第四位
CLR SER14
JMP M8
M7: SETB SER14
M8: CALL SCKO
;---------------------------
JB ACC.5,M9 ;读数据的第五位
CLR SER14
JMP M10
M9: SETB SER14
M10: CALL SCKO
;----------------------------
JB ACC.2,M11 ;读数据的第六位
CLR SER14
JMP M12
M11: SETB SER14
M12: CALL SCKO
;----------------------------
JB ACC.4,M13 ;读数据的第七位
CLR SER14
JMP M14
M13: SETB SER14
M14: CALL SCKO
;-------------------------------
JB ACC.3,M15 ;读数据的第八位
CLR SER14
JMP M16
M15: SETB SER14
M16: CALL SCKO
RET
;----------------------------
RCKO: SETB RCK12 ;把行数据锁存起来
NOP
CLR RCK12
RET
;----------------------------
TABEL: INC A ;在这个表中,1为点振亮,0为点振灭
MOVC A,@A+PC ;所以调用完数据后,在我们的板上用要把
RET ;数据取反才可以.
; 费 交
DB 040H, 002H, 000H, 002H
DB 0F8H, 03FH, 000H, 001H
DB 048H, 002H, 080H, 001H
DB 0F8H, 03FH, 0FEH, 07FH
DB 040H, 022H, 020H, 008H
DB 0FEH, 03FH, 018H, 00CH
DB 042H, 004H, 00CH, 010H
DB 04AH, 008H, 020H, 020H
DB 0F4H, 01FH, 030H, 008H
DB 010H, 068H, 060H, 004H
DB 010H, 009H, 0C0H, 002H
DB 010H, 009H, 080H, 001H
DB 010H, 009H, 040H, 003H
DB 0C0H, 002H, 030H, 004H
DB 038H, 00CH, 01CH, 018H
DB 010H, 030H, 008H, 060H
;----------------------------
MAIN: MOV SP,#30H ;上电初始化
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
;MOV P3,#0FFH
CLR SCK11 ;清时钟
CLR RCK12 ;锁存时钟
MOV R2,#0FFH
;-----------------------------
ZZ1: INC R2
MOV A,R2 ;一列
CALL READ ;调数据
CJNE R2,#1,ZZ1 ;每行12个数据是否调用完?
SETB P2.7 ;关上一列
CALL RCKO ;确认以上数据被锁存
CLR P0.0 ;开下一列
;----------------------------
ZZ2: INC R2
MOV A,R2 ;二列
CALL READ
CJNE R2,#3,ZZ2
SETB P0.0
CALL RCKO
CLR P0.1
;-------------------------------
ZZ3: INC R2
MOV A,R2 ;三列
CALL READ
CJNE R2,#5,ZZ3
SETB P0.1
CALL RCKO
CLR P0.2
;--------------------------------
ZZ4: INC R2
MOV A,R2 ;四列
CALL READ
CJNE R2,#7,ZZ4
SETB P0.2
CALL RCKO
CLR P0.3
;----------------------------
ZZ5: INC R2
MOV A,R2 ;五列
CALL READ
CJNE R2,#9,ZZ5
SETB P0.3
CALL RCKO
CLR P0.4
;----------------------------
ZZ6: INC R2
MOV A,R2 ;六列
CALL READ
CJNE R2,#11,ZZ6
SETB P0.4
CALL RCKO
CLR P0.5
;-----------------------------
ZZ7: INC R2
MOV A,R2 ;七列
CALL READ
CJNE R2,#13,ZZ7
SETB P0.5
CALL RCKO
CLR P0.6
;-----------------------------
ZZ8: INC R2
MOV A,R2 ;八列
CALL READ
CJNE R2,#15,ZZ8
SETB P0.6
CALL RCKO
CLR P0.7
;-----------------------------
YY1: INC R2 ;九列
MOV A,R2
CALL READ
CJNE R2,#17,YY1
SETB P0.7
CALL RCKO
CLR P2.0
;----------------------------
YY2: INC R2
MOV A,R2 ;十列
CALL READ
CJNE R2,#19,YY2
SETB P2.0
CALL RCKO
CLR P2.1
;-------------------------------
YY3: INC R2
MOV A,R2 ;十一列
CALL READ
CJNE R2,#21,YY3
SETB P2.1
CALL RCKO
CLR P2.2
;--------------------------------
YY4: INC R2
MOV A,R2 ;十二列
CALL READ
CJNE R2,#23,YY4
SETB P2.2
CALL RCKO
CLR P2.3
;----------------------------
YY5: INC R2
MOV A,R2 ;十三列
CALL READ
CJNE R2,#25,YY5
SETB P2.3
CALL RCKO
CLR P2.4
;----------------------------
YY6: INC R2
MOV A,R2 ;十四列
CALL READ
CJNE R2,#27,YY6
SETB P2.4
CALL RCKO
CLR P2.5
;-----------------------------
YY7: INC R2
MOV A,R2 ;十五列
CALL READ
CJNE R2,#29,YY7
SETB P2.5
CALL RCKO
CLR P2.6
;-----------------------------
YY8: INC R2
MOV A,R2 ;十六列
CALL READ
CJNE R2,#31,YY8
SETB P2.6
CALL RCKO
CLR P2.7
MOV R2,#0FFH
JMP ZZ1
;----------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -