📄 font8_8.s
字号:
; _XX___X_,
; _XX__XX_,
; XXXXXXX_,
; ________}
;
; /* M */
; ,{
; XX___XX_,
; XXX_XXX_,
; XXXXXXX_,
; XXXXXXX_,
; XX_X_XX_,
; XX___XX_,
; XX___XX_,
; ________}
;
; /* N */
; ,{
; XX___XX_,
; XXX__XX_,
; XXXX_XX_,
; XX_XXXX_,
; XX__XXX_,
; XX___XX_,
; XX___XX_,
; ________}
;
; /* O */
; ,{
; _XXXXX__,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; _XXXXX__,
; ________}
;
; /* P */
; ,{
; XXXXXX__,
; _XX__XX_,
; _XX__XX_,
; _XXXXX__,
; _XX_____,
; _XX_____,
; XXXX____,
; ________}
;
; /* Q */
; ,{
; _XXXXX__,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX__XXX_,
; _XXXXX__,
; ____XXX_}
;
; /* R */
; ,{
; XXXXXX__,
; _XX__XX_,
; _XX__XX_,
; _XXXXX__,
; _XX_XX__,
; _XX__XX_,
; XXX__XX_,
; ________}
;
; /* S */
; ,{
; __XXXX__,
; _XX__XX_,
; __XX____,
; ___XX___,
; ____XX__,
; _XX__XX_,
; __XXXX__,
; ________}
;
; /* T */
; ,{
; _XXXXXX_,
; _XXXXXX_,
; _X_XX_X_,
; ___XX___,
; ___XX___,
; ___XX___,
; __XXXX__,
; ________}
;
; /* U */
; ,{
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; _XXXXX__,
; ________}
;
; /* V */
; ,{
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; _XX_XX__,
; __XXX___,
; ________}
;
; /* W */
; ,{
; XX___XX_,
; XX___XX_,
; XX___XX_,
; XX_X_XX_,
; XX_X_XX_,
; XXXXXXX_,
; _XX_XX__,
; ________}
;
; /* X */
; ,{
; XX___XX_,
; XX___XX_,
; _XX_XX__,
; __XXX___,
; _XX_XX__,
; XX___XX_,
; XX___XX_,
; ________}
;
; /* Y */
; ,{
; _XX__XX_,
; _XX__XX_,
; _XX__XX_,
; __XXXX__,
; ___XX___,
; ___XX___,
; __XXXX__,
; ________}
;
; /* Z */
; ,{
; XXXXXXX_,
; XX___XX_,
; X___XX__,
; ___XX___,
; __XX__X_,
; _XX__XX_,
; XXXXXXX_,
; ________}
;
; /* [ */
; ,{
; __XXXX__,
; __XX____,
; __XX____,
; __XX____,
; __XX____,
; __XX____,
; __XXXX__,
; ________}
;
; /* \ */
; ,{
; XX______,
; _XX_____,
; __XX____,
; ___XX___,
; ____XX__,
; _____XX_,
; ______X_,
; ________}
;
; /* ] */
; ,{
; __XXXX__,
; ____XX__,
; ____XX__,
; ____XX__,
; ____XX__,
; ____XX__,
; __XXXX__,
; ________}
;
; /* ^ */
; ,{
; ___X____,
; __XXX___,
; _XX_XX__,
; XX___XX_,
; ________,
; ________,
; ________,
; ________}
;
; /* _ */
; ,{
; ________,
; ________,
; ________,
; ________,
; ________,
; ________,
; ________,
; XXXXXXXX}
;
; /* ` */
; ,{
; __XX____,
; ___XX___,
; ____XX__,
; ________,
; ________,
; ________,
; ________,
; ________}
;
; /* a */
; ,{
; ________,
; ________,
; _XXXX___,
; ____XX__,
; _XXXXX__,
; XX__XX__,
; _XXX_XX_,
; ________}
;
; /* b */
; ,{
; XXX_____,
; _XX_____,
; _XXXXX__,
; _XX__XX_,
; _XX__XX_,
; _XX__XX_,
; XX_XXX__,
; ________}
;
; /* c */
; ,{
; ________,
; ________,
; _XXXXX__,
; XX___XX_,
; XX______,
; XX___XX_,
; _XXXXX__,
; ________}
;
; /* d */
; ,{
; ___XXX__,
; ____XX__,
; _XXXXX__,
; XX__XX__,
; XX__XX__,
; XX__XX__,
; _XXX_XX_,
; ________}
;
; /* e */
; ,{
; ________,
; ________,
; _XXXXX__,
; XX___XX_,
; XXXXXXX_,
; XX______,
; _XXXXX__,
; ________}
;
; /* f */
; ,{
; __XXXX__,
; _XX__XX_,
; _XX_____,
; XXXXX___,
; _XX_____,
; _XX_____,
; XXXX____,
; ________}
;
; /* g */
; ,{
; ________,
; ________,
; _XXX_XX_,
; XX__XX__,
; XX__XX__,
; _XXXXX__,
; ____XX__,
; XXXXX___}
;
; /* h */
; ,{
; XXX_____,
; _XX_____,
; _XX_XX__,
; _XXX_XX_,
; _XX__XX_,
; _XX__XX_,
; XXX__XX_,
; ________}
;
; /* i */
; ,{
; ___XX___,
; ________,
; __XXX___,
; ___XX___,
; ___XX___,
; ___XX___,
; __XXXX__,
; ________}
;
; /* j */
; ,{
; _____XX_,
; ________,
; _____XX_,
; _____XX_,
; _____XX_,
; _XX__XX_,
; _XX__XX_,
; __XXXX__}
;
; /* k */
; ,{
; XXX_____,
; _XX_____,
; _XX__XX_,
; _XX_XX__,
; _XXXX___,
; _XX_XX__,
; XXX__XX_,
; ________}
;
; /* l */
; ,{
; __XXX___,
; ___XX___,
; ___XX___,
; ___XX___,
; ___XX___,
; ___XX___,
; __XXXX__,
; ________}
;
; /* m */
; ,{
; ________,
; ________,
; XXX_XX__,
; XXXXXXX_,
; XX_X_XX_,
; XX_X_XX_,
; XX_X_XX_,
; ________}
;
; /* n */
; ,{
; ________,
; ________,
; XX_XXX__,
; _XX__XX_,
; _XX__XX_,
; _XX__XX_,
; _XX__XX_,
; ________}
;
; /* o */
; ,{
; ________,
; ________,
; _XXXXX__,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; _XXXXX__,
; ________}
;
; /* p */
; ,{
; ________,
; ________,
; XX_XXX__,
; _XX__XX_,
; _XX__XX_,
; _XXXXX__,
; _XX_____,
; XXXX____}
;
; /* q */
; ,{
; ________,
; ________,
; _XXX_XX_,
; XX__XX__,
; XX__XX__,
; _XXXXX__,
; ____XX__,
; ___XXXX_}
;
; /* r */
; ,{
; ________,
; ________,
; XX_XXX__,
; _XXX_XX_,
; _XX_____,
; _XX_____,
; XXXX____,
; ________}
;
; /* s */
; ,{
; ________,
; ________,
; _XXXXXX_,
; XX______,
; _XXXXX__,
; _____XX_,
; XXXXXX__,
; ________}
;
; /* t */
; ,{
; __XX____,
; __XX____,
; XXXXXX__,
; __XX____,
; __XX____,
; __XX_XX_,
; ___XXX__,
; ________}
;
; /* u */
; ,{
; ________,
; ________,
; XX__XX__,
; XX__XX__,
; XX__XX__,
; XX__XX__,
; _XXX_XX_,
; ________}
;
; /* v */
; ,{
; ________,
; ________,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; _XX_XX__,
; __XXX___,
; ________}
;
; /* w */
; ,{
; ________,
; ________,
; XX___XX_,
; XX_X_XX_,
; XX_X_XX_,
; XXXXXXX_,
; _XX_XX__,
; ________}
;
; /* x */
; ,{
; ________,
; ________,
; XX___XX_,
; _XX_XX__,
; __XXX___,
; _XX_XX__,
; XX___XX_,
; ________}
;
; /* y */
; ,{
; ________,
; ________,
; XX___XX_,
; XX___XX_,
; XX___XX_,
; _XXXXXX_,
; _____XX_,
; XXXXXX__}
;
; /* z */
; ,{
; ________,
; ________,
; _XXXXXX_,
; _X__XX__,
; ___XX___,
; __XX__X_,
; _XXXXXX_,
; ________}
;
; /* { */
; ,{
; ____XXX_,
; ___XX___,
; ___XX___,
; _XXX____,
; ___XX___,
; ___XX___,
; ____XXX_,
; ________}
;
; /* | */
; ,{
; ___XX___,
; ___XX___,
; ___XX___,
; ___XX___,
; ___XX___,
; ___XX___,
; ___XX___,
; ________}
;
; /* } */
; ,{
; _XXX____,
; ___XX___,
; ___XX___,
; ____XXX_,
; ___XX___,
; ___XX___,
; _XXX____,
; ________}
;
; /* ~ */
; ,{
; _XXX_XX_,
; XX_XXX__,
; ________,
; ________,
; ________,
; ________,
; ________,
; ________}
;
; /* 0x7f */
; ,{
; XXXXXX__,
; XXXXXX__,
; XXXXXX__,
; XXXXXX__,
; XXXXXX__,
; XXXXXX__,
; XXXXXX__,
; ________}
;
; };
;
; /****************************************************************************
; * 名称:GUI_PutChar8_8()
; * 功能:显示ASCII码(8*8字体),显示值为20H-7FH(若为其它值,则显示' ')。
; * 入口参数: x 指定显示位置,x坐标
; * y 指定显示位置,y坐标
; * ch 要显示的ASCII码值。
; * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
; * 说明:操作失败原因是指定地址超出有效范围。
; ****************************************************************************/
; uint8 GUI_PutChar8_8(uint32 x, uint32 y, uint8 ch)
; { uint8 font_dat;
.dbline 1086
; uint8 i, j;
; TCOLOR bakc;
;
; /* 参数过滤 */
; if( x>=(GUI_LCM_XMAX-8) ) return(0);
ldd R24,y+12
ldd R25,y+13
cpi R24,232
ldi R30,0
cpc R25,R30
brlo L8
.dbline 1086
clr R16
xjmp L7
L8:
.dbline 1087
; if( y>=(GUI_LCM_YMAX-8) ) return(0);
movw R24,R12
cpi R24,120
ldi R30,0
cpc R25,R30
brlo L10
.dbline 1087
clr R16
xjmp L7
L10:
.dbline 1088
mov R24,R10
cpi R24,32
brlo L14
ldi R24,127
cp R24,R10
brsh L12
L14:
.dbline 1088
; if( (ch<0x20) || (ch>0x7f) ) ch = 0x20;
ldi R24,32
mov R10,R24
L12:
.dbline 1090
;
; ch -= 0x20;
mov R24,R10
subi R24,32
mov R10,R24
.dbline 1091
; for(i=0; i<8; i++)
clr R20
xjmp L18
L15:
.dbline 1092
; { /* 读取点阵数据 */
.dbline 1093
; font_dat = FONT8x8ASCII[ch][i];
ldi R24,8
mul R24,R10
movw R2,R0
ldi R24,<_FONT8x8ASCII
ldi R25,>_FONT8x8ASCII
add R2,R24
adc R3,R25
mov R30,R20
clr R31
add R30,R2
adc R31,R3
lpm R14,Z
.dbline 1095
;
; for(j=0; j<8; j++)
clr R22
xjmp L22
L19:
.dbline 1096
; { /* 设置相应的点为color或为back_color */
.dbline 1097
; if( (font_dat&DCB2HEX_TAB[j])==0 ) GUI_CopyColor(&bakc, back_color);
ldi R24,<_DCB2HEX_TAB
ldi R25,>_DCB2HEX_TAB
mov R30,R22
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
mov R2,R14
and R2,R30
brne L23
.dbline 1097
lds R2,_back_color
std y+1,R2
xjmp L24
L23:
.dbline 1098
; else GUI_CopyColor(&bakc, disp_color);
lds R2,_disp_color
std y+1,R2
L24:
.dbline 1099
ldd R2,y+1
std y+0,R2
movw R18,R12
ldd R16,y+12
ldd R17,y+13
xcall _GUI_Point
.dbline 1100
ldd R24,y+12
ldd R25,y+13
adiw R24,1
std y+13,R25
std y+12,R24
.dbline 1101
L20:
.dbline 1095
inc R22
L22:
.dbline 1095
cpi R22,8
brlo L19
.dbline 1103
movw R24,R12
adiw R24,1
movw R12,R24
.dbline 1104
ldd R24,y+12
ldd R25,y+13
sbiw R24,8
std y+13,R25
std y+12,R24
.dbline 1105
L16:
.dbline 1091
inc R20
L18:
.dbline 1091
cpi R20,8
brsh X0
xjmp L15
X0:
.dbline 1107
; GUI_Point(x, y, bakc);
; x++;
; }
;
; y++; // 指向下一行
; x -= 8; // 恢复x值
; }
;
; return(1);
ldi R16,1
.dbline -2
L7:
adiw R28,2
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r font_dat 14 c
.dbsym l bakc 1 c
.dbsym r j 22 c
.dbsym r ch 10 c
.dbsym r y 12 i
.dbsym l x 12 i
.dbend
.dbfunc e GUI_PutString8_8 _GUI_PutString8_8 fV
; str -> R20,R21
; y -> R22,R23
; x -> R10,R11
.even
_GUI_PutString8_8::
xcall push_gset3
movw R22,R18
movw R10,R16
sbiw R28,1
ldd R20,y+7
ldd R21,y+8
.dbline -1
.dbline 1122
; }
;
;
;
; /****************************************************************************
; * 名称:GUI_PutString8_8()
; * 功能:输出显示字符串((8*8字体,没有自动换行功能)。
; * 入口参数: x 指定显示位置,x坐标
; * y 指定显示位置,y坐标
; * str 要显示的ASCII码字符串
; * 出口参数:无
; * 说明:操作失败原因是指定地址超出有效范围。
; ****************************************************************************/
; void GUI_PutString8_8(uint32 x, uint32 y, char *str)
; { while(1)
xjmp L27
L26:
.dbline 1123
; { if( (*str)=='\0' ) break;
.dbline 1123
movw R30,R20
ldd R2,z+0
tst R2
brne L29
.dbline 1123
xjmp L28
L29:
.dbline 1124
; if( GUI_PutChar8_8(x, y, *str++)==0 ) break;
movw R30,R20
ld R2,Z+
movw R20,R30
std y+0,R2
movw R18,R22
movw R16,R10
xcall _GUI_PutChar8_8
tst R16
brne L31
.dbline 1124
xjmp L28
L31:
.dbline 1125
movw R24,R10
adiw R24,6
movw R10,R24
.dbline 1126
L27:
.dbline 1122
xjmp L26
L28:
.dbline -2
L25:
adiw R28,1
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r str 20 pc
.dbsym r y 22 i
.dbsym r x 10 i
.dbend
.dbfunc e GUI_PutNoStr8_8 _GUI_PutNoStr8_8 fV
; no -> R20
; str -> R22,R23
; y -> R10,R11
; x -> R12,R13
.even
_GUI_PutNoStr8_8::
xcall push_gset4
movw R10,R18
movw R12,R16
sbiw R28,1
ldd R22,y+9
ldd R23,y+10
ldd R20,y+11
.dbline -1
.dbline 1141
; x += 6; // 下一个字符显示位置,y不变(即不换行)
; }
; }
;
;
; /****************************************************************************
; * 名称:GUI_PutNoStr8_8()
; * 功能:输出显示字符串((8*8字体,没有自动换行功能),若显示的字符个数大于指定个数,则直接退出。
; * 入口参数: x 指定显示位置,x坐标
; * y 指定显示位置,y坐标
; * str 要显示的ASCII码字符串。
; * no 最大显示字符的个数
; * 出口参数:无
; * 说明:操作失败原因是指定地址超出有效范围。
; ****************************************************************************/
; void GUI_PutNoStr8_8(uint32 x, uint32 y, char *str, uint8 no)
; { if(no==0) return;
.dbline 1141
tst R20
brne L39
.dbline 1141
xjmp L33
X1:
.dbline 1142
; for(; no>0; no--)
L36:
.dbline 1143
; { if( (*str)=='\0' ) break;
.dbline 1143
movw R30,R22
ldd R2,z+0
tst R2
brne L40
.dbline 1143
xjmp L38
L40:
.dbline 1144
; if( GUI_PutChar(x, y, *str++)==0 ) break;
movw R30,R22
ld R2,Z+
movw R22,R30
std y+0,R2
movw R18,R10
movw R16,R12
xcall _GUI_PutChar
tst R16
brne L42
.dbline 1144
xjmp L38
L42:
.dbline 1145
movw R24,R12
adiw R24,6
movw R12,R24
.dbline 1146
L37:
.dbline 1142
dec R20
L39:
.dbline 1142
clr R2
cp R2,R20
brlo L36
L38:
.dbline -2
L33:
adiw R28,1
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r no 20 c
.dbsym r str 22 pc
.dbsym r y 10 i
.dbsym r x 12 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -