📄 cog12864a.asm
字号:
CW_PR: MOV DPTR,#CTAB ; 确定字符字模块首地址
MOV A,COD1 ; 取代码
MOV B,#08H ; 字模块宽度为8个字节
MUL AB ; 代码x8
ADD A,DPL ; 字符字模块首地址
MOV DPL,A ; = 字模库首地址 + 代码x 8
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV COUN1,#08H ; 8x8点阵
mov cod1,#00h
mov A,pa1 ; 取页地址值
ORL A,#0B0H ; "或"页地址指令代码
LCALL PR0
CW_3: MOV A,COLUMN ; 设置列地址值
anl a,#0f0h
swap a
orl a,#10h
LCALL PR0 ; 区域E1
mov a,column
anl a,#0fh
lcall pr0
CW_5: MOV A,COD1 ; 取间址寄存器值
MOVC A,@A+DPTR ; 取字符字模数据
LCALL PR1 ; 区域E1
inc cod1
CW_9: DJNZ COUN1,CW_5 ; 循环
RET
;========================================
; 西文字符库
CTAB: DB 000H,000H,000H,000H,000H,000H,000H,000H ;" "=00H
DB 000H,000H,000H,04FH,000H,000H,000H,000H ;"!"=01H
DB 000H,000H,007H,000H,007H,000H,000H,000H ;"""=02H
DB 000H,014H,07FH,014H,07FH,014H,000H,000H ;"#"=03H
DB 000H,024H,02AH,07FH,02AH,012H,000H,000H ;"$"=04H
DB 000H,023H,013H,008H,064H,062H,000H,000H ;"%"=05H
DB 000H,036H,049H,055H,022H,050H,000H,000H ;"&"=06H
DB 000H,000H,005H,003H,000H,000H,000H,000H ;"'"=07H
DB 000H,000H,01CH,022H,041H,000H,000H,000H ;"("=08H
DB 000H,000H,041H,022H,01CH,000H,000H,000H ;")"=09H
DB 000H,014H,008H,03EH,008H,014H,000H,000H ;"*"=0AH
DB 000H,008H,008H,03EH,008H,008H,000H,000H ;"+"=0BH
DB 000H,000H,050H,030H,000H,000H,000H,000H ;";"=0CH
DB 000H,008H,008H,008H,008H,008H,000H,000H ;"-"=0DH
DB 000H,000H,060H,060H,000H,000H,000H,000H ;"."=0EH
DB 000H,020H,010H,008H,004H,002H,000H,000H ;"/"=0FH
DB 000H,03EH,051H,049H,045H,03EH,000H,000H ;"0"=10H
DB 000H,000H,042H,07FH,040H,000H,000H,000H ;"1"=11H
DB 000H,042H,061H,051H,049H,046H,000H,000H ;"2"=12H
DB 000H,021H,041H,045H,04BH,031H,000H,000H ;"3"=13H
DB 000H,018H,014H,012H,07FH,010H,000H,000H ;"4"=14H
DB 000H,027H,045H,045H,045H,039H,000H,000H ;"5"=15H
DB 000H,03CH,04AH,049H,049H,030H,000H,000H ;"6"=16H
DB 000H,001H,001H,079H,005H,003H,000H,000H ;"7"=17H
DB 000H,036H,049H,049H,049H,036H,000H,000H ;"8"=18H
DB 000H,006H,049H,049H,029H,01EH,000H,000H ;"9"=19H
DB 000H,000H,036H,036H,000H,000H,000H,000H ;":"=1AH
DB 000H,000H,056H,036H,000H,000H,000H,000H ;";"=1BH
DB 000H,008H,014H,022H,041H,000H,000H,000H ;"<"=1CH
DB 000H,014H,014H,014H,014H,014H,000H,000H ;"="=1DH
DB 000H,000H,041H,022H,014H,008H,000H,000H ;">"=1EH
DB 000H,002H,001H,051H,009H,006H,000H,000H ;"?"=1FH
DB 000H,032H,049H,079H,041H,03EH,000H,000H ;"@"=20H
DB 000H,07EH,011H,011H,011H,07EH,000H,000H ;"A"=21H
DB 000H,041H,07FH,049H,049H,036H,000H,000H ;"B"=22H
DB 000H,03EH,041H,041H,041H,022H,000H,000H ;"C"=23H
DB 000H,041H,07FH,041H,041H,03EH,000H,000H ;"D"=24H
DB 000H,07FH,049H,049H,049H,049H,000H,000H ;"E"=25H
DB 000H,07FH,009H,009H,009H,001H,000H,000H ;"F"=26H
DB 000H,03EH,041H,041H,049H,07AH,000H,000H ;"G"=27H
DB 000H,07FH,008H,008H,008H,07FH,000H,000H ;"H"=28H
DB 000H,000H,041H,07FH,041H,000H,000H,000H ;"I"=29H
DB 000H,020H,040H,041H,03FH,001H,000H,000H ;"J"=2AH
DB 000H,07FH,008H,014H,022H,041H,000H,000H ;"K"=2BH
DB 000H,07FH,040H,040H,040H,040H,000H,000H ;"L"=2CH
DB 000H,07FH,002H,00CH,002H,07FH,000H,000H ;"M"=2DH
DB 000H,07FH,006H,008H,030H,07FH,000H,000H ;"N"=2EH
DB 000H,03EH,041H,041H,041H,03EH,000H,000H ;"O"=2FH
DB 000H,07FH,009H,009H,009H,006H,000H,000H ;"P"=30H
DB 000H,03EH,041H,051H,021H,05EH,000H,000H ;"Q"=31H
DB 000H,07FH,009H,019H,029H,046H,000H,000H ;"R"=32H
DB 000H,026H,049H,049H,049H,032H,000H,000H ;"S"=33H
DB 000H,001H,001H,07FH,001H,001H,000H,000H ;"T"=34H
DB 000H,03FH,040H,040H,040H,03FH,000H,000H ;"U"=35H
DB 000H,01FH,020H,040H,020H,01FH,000H,000H ;"V"=36H
DB 000H,07FH,020H,018H,020H,07FH,000H,000H ;"W"=37H
DB 000H,063H,014H,008H,014H,063H,000H,000H ;"X"=38H
DB 000H,007H,008H,070H,008H,007H,000H,000H ;"Y"=39H
DB 000H,061H,051H,049H,045H,043H,000H,000H ;"Z"=3AH
DB 000H,000H,07FH,041H,041H,000H,000H,000H ;"["=3BH
DB 000H,002H,004H,008H,010H,020H,000H,000H ;"\"=3CH
DB 000H,000H,041H,041H,07FH,000H,000H,000H ;"]"=3DH
DB 000H,004H,002H,001H,002H,004H,000H,000H ;"^"=3EH
DB 000H,040H,040H,040H,040H,040H,000H,000H ;"_"=3FH
DB 000H,001H,002H,004H,000H,000H,000H,000H ;"`"=40H
DB 000H,020H,054H,054H,054H,078H,000H,000H ;"a"=41H
DB 000H,07FH,048H,044H,044H,038H,000H,000H ;"b"=42H
DB 000H,038H,044H,044H,044H,028H,000H,000H ;"c"=43H
DB 000H,038H,044H,044H,048H,07FH,000H,000H ;"d"=44H
DB 000H,038H,054H,054H,054H,018H,000H,000H ;"e"=45H
DB 000H,000H,008H,07EH,009H,002H,000H,000H ;"f"=46H
DB 000H,00CH,052H,052H,04CH,03EH,000H,000H ;"g"=47H
DB 000H,07FH,008H,004H,004H,078H,000H,000H ;"h"=48H
DB 000H,000H,044H,07DH,040H,000H,000H,000H ;"i"=49H
DB 000H,020H,040H,044H,03DH,000H,000H,000H ;"j"=4AH
DB 000H,000H,07FH,010H,028H,044H,000H,000H ;"k"=4BH
DB 000H,000H,041H,07FH,040H,000H,000H,000H ;"l"=4CH
DB 000H,07CH,004H,078H,004H,078H,000H,000H ;"m"=4DH
DB 000H,07CH,008H,004H,004H,078H,000H,000H ;"n"=4EH
DB 000H,038H,044H,044H,044H,038H,000H,000H ;"o'=4FH
DB 000H,07EH,00CH,012H,012H,00CH,000H,000H ;"p"=50H
DB 000H,00CH,012H,012H,00CH,07EH,000H,000H ;"q"=51H
DB 000H,07CH,008H,004H,004H,008H,000H,000H ;"r"=52H
DB 000H,058H,054H,054H,054H,064H,000H,000H ;"s"=53H
DB 000H,004H,03FH,044H,040H,020H,000H,000H ;"t"=54H
DB 000H,03CH,040H,040H,03CH,040H,000H,000H ;"u"=55H
DB 000H,01CH,020H,040H,020H,01CH,000H,000H ;"v"=56H
DB 000H,03CH,040H,030H,040H,03CH,000H,000H ;"w"=57H
DB 000H,044H,028H,010H,028H,044H,000H,000H ;"x"=58H
DB 000H,01CH,0CD1H,0CD1H,090H,07CH,000H,000H ;"y"=59H
DB 000H,044H,064H,054H,04CH,044H,000H,000H ;"z"=5AH
DB 000H,000H,008H,036H,041H,000H,000H,000H ;"{"=5BH
DB 000H,000H,000H,077H,000H,000H,000H,000H ;"|"=5CH
DB 000H,000H,041H,036H,008H,000H,000H,000H ;"}"=5DH
DB 000H,002H,001H,002H,004H,002H,000H,000H ;"~"=5FH
DB 000H,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H ;" "=60H
;=================================================
; 中文字符写入子程序
CCW_PR: MOV DPTR,#CCTAB ; 确定字符字模块首地址
MOV A,COD1 ; 取代码
MOV B,#20H ; 字模块宽度为32个字节
MUL AB ; 代码x32
ADD A,DPL ; 字符字模块首地址
MOV DPL,A ; = 字模库首地址 + 代码x 32
MOV A,B
ADDC A,DPH
MOV DPH,A
PUSH COLUMN ; 列地址入栈
PUSH COLUMN ; 列地址入栈
MOV COD1,#00H ; 代码寄存器借用为间址寄存器
CCW_1: MOV COUN1,#10H ; 计数器设置为16
MOV A,PA1 ; 读页地址寄存器
ANL A,#0FH
ORL A,#0B0H ; "或"页地址设置代码
LCALL PR0
POP COLUMN ; 取列地址值
MOV A,COLUMN ; 读列地址寄存器
swap a
anl a,#0fh
orl a,#10h
lcall pr0
mov a,column
anl a,#0fh
LCALL PR0 ; 区域E1
CCW_4: MOV A,COD1 ; 取间址寄存器值
MOVC A,@A+DPTR ; 取汉字字模数据
LCALL PR1 ; 区域E1
CCW_6: INC COD1 ; 间址寄存器加1
DJNZ COUN1,CCW_4 ; 当页循环
MOV A,PA1 ; 读页地址寄存器
JB ACC.7,CCW_9 ; 判完成标志D7位, "1"则完成退出
INC A ; 否则页地址加1
SETB ACC.7 ; 置完成位为"1"
CLR ACC.3
MOV PA1,A
MOV COD1,#10H ; 间址寄存器设置为16
LJMP CCW_1 ; 大循环
CCW_9: RET
;==============================================================
; 中文字符库
CCTAB: DB 010H,022H,064H,00CH,0C0H,044H,054H,054H ; 清
DB 054H,07FH,054H,054H,056H,044H,040H,000H
DB 000H,004H,0FCH,003H,000H,000H,0FFH,015H
DB 015H,015H,055H,095H,07FH,000H,000H,000H
DB 040H,042H,0CCH,010H,090H,0B4H,0D4H,09FH ; 达
DB 094H,0D4H,0B4H,090H,000H,000H,000H,000H
DB 040H,020H,01FH,028H,04AH,04AH,04AH,07FH
DB 04AH,04AH,04AH,048H,048H,040H,040H,000H
DB 040H,040H,042H,044H,058H,0C0H,040H,07FH ; 光
DB 040H,0C0H,050H,048H,046H,064H,040H,000H
DB 000H,080H,040H,020H,018H,007H,000H,000H
DB 000H,03FH,040H,040H,040H,040H,070H,000H
DB 008H,006H,054H,055H,055H,055H,005H,0FFH ; 电
DB 005H,055H,055H,055H,004H,016H,00CH,000H
DB 000H,000H,01FH,015H,015H,015H,015H,0FFH
DB 095H,095H,095H,095H,09FH,080H,0E0H,000H
;=========================================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -