⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 font16_16.s

📁 ssd1325控制器液晶的驱动程序
💻 S
字号:
	.module FONT16_16.C
	.area lit(rom, con, rel)
_FONT16x16::
	.byte 0,0
	.byte 127,248
	.byte 126,252
	.byte 'x,30
	.byte 'x,14
	.byte 'x,14
	.byte 'x,30
	.byte 'x,60
	.byte 'y,240
	.byte 127,224
	.byte 126,0
	.byte 124,0
	.byte 124,0
	.byte 124,0
	.byte 126,0
	.byte 127,0
	.byte 0,0
	.byte 'x,30
	.byte 124,62
	.byte 124,62
	.byte 124,62
	.byte 124,62
	.byte 126,126
	.byte 126,126
	.byte 'z,126
	.byte 's,206
	.byte 's,206
	.byte 's,206
	.byte 's,206
	.byte 's,206
	.byte 'a,134
	.byte 'a,134
	.byte 0,0
	.byte 3,192
	.byte 15,240
	.byte 62,252
	.byte 124,30
	.byte 124,14
	.byte 62,0
	.byte 31,128
	.byte 3,240
	.byte 0,252
	.byte 0,62
	.byte 'x,60
	.byte 60,60
	.byte 60,'x
	.byte 31,240
	.byte 3,192
	.dbfile G:\IccPro\mega128_lcd\FONT16_16.C
	.dbsym e FONT16x16 _FONT16x16 A[96:3:32]kc
_FONT16x16_TAB::
	.byte 'P,'M,'S,0
	.dbsym e FONT16x16_TAB _FONT16x16_TAB A[4:4]kc
	.area text(rom, con, rel)
	.dbfile G:\IccPro\mega128_lcd\FONT16_16.C
	.dbfunc e GUI_PutChar16_16 _GUI_PutChar16_16 fc
;              i -> R20
;           temp -> R22
;              k -> R10
;       font_dat -> R14
;           bakc -> y+1
;              j -> R12
;             ch -> y+16
;              y -> y+14
;              x -> y+12
	.even
_GUI_PutChar16_16::
	xcall push_arg4
	xcall push_gset5
	sbiw R28,2
	.dbline -1
	.dbline 79
; /****************************************************************************************
; * 文件名:FONT16_16.H
; * 功能:16*16 ASCII码字体显示函数。(头文件)
; * 作者:韩茂琨
; * 日期:2007.01.9
; * 备注:使用GUI_SetColor()函数设置前景颜色及背景色。
; ****************************************************************************************/
; #include "config.h"
; 
; //#if  FONT16x16_EN == 1
; 
; /* 16*16字体定义 */
; const uint8   FONT16x16[][32] = {
; /*  P  */
;   {
;    ________,________,
;    _XXXXXXX,XXXXX___,
;    _XXXXXX_,XXXXXX__,
;    _XXXX___,___XXXX_,
;    _XXXX___,____XXX_,
;    _XXXX___,____XXX_,
;    _XXXX___,___XXXX_,
;    _XXXX___,__XXXX__,
;    _XXXX__X,XXXX____,
;    _XXXXXXX,XXX_____,
;    _XXXXXX_,________,
;    _XXXXX__,________,
;    _XXXXX__,________,
;    _XXXXX__,________,
;    _XXXXXX_,________,
;    _XXXXXXX,________}
;   ,{
;    ________,________,
;    _XXXX___,___XXXX_,
;    _XXXXX__,__XXXXX_,
;    _XXXXX__,__XXXXX_,
;    _XXXXX__,__XXXXX_,
;    _XXXXX__,__XXXXX_,
;    _XXXXXX_,_XXXXXX_,
;    _XXXXXX_,_XXXXXX_,
;    _XXXX_X_,_XXXXXX_,
;    _XXX__XX,XX__XXX_,
;    _XXX__XX,XX__XXX_,
;    _XXX__XX,XX__XXX_,
;    _XXX__XX,XX__XXX_,
;    _XXX__XX,XX__XXX_,
;    _XX____X,X____XX_,
;    _XX____X,X____XX_}
;   ,{
;    ________,________,
;    ______XX,XX______,
;    ____XXXX,XXXX____,
;    __XXXXX_,XXXXXX__,
;    _XXXXX__,___XXXX_,
;    _XXXXX__,____XXX_,
;    __XXXXX_,________,
;    ___XXXXX,X_______,
;    ______XX,XXXX____,
;    ________,XXXXXX__,
;    ________,__XXXXX_,
;    _XXXX___,__XXXX__,
;    __XXXX__,__XXXX__,
;    __XXXX__,_XXXX___,
;    ___XXXXX,XXXX____,
;    ______XX,XX______}
; };
; /* ASCII码字符字模检索表 */
; const  char  FONT16x16_TAB[]="PMS"; 
; /****************************************************************************
; * 名称:GUI_PutChar16_16()
; * 功能:显示ASCII码(16*16字体),显示值为'0'-'9'、'.'、'+'、'-'及':'(若为其它值,则显示' ')。
; * 入口参数: x		指定显示位置,x坐标
; *           y		指定显示位置,y坐标
; *           ch		要显示的ASCII码值。
; * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
; * 说明:操作失败原因是指定地址超出有效范围。
; ****************************************************************************/
; uint8  GUI_PutChar16_16(uint32 x, uint32 y, uint8 ch)
; {  uint8   font_dat;
	.dbline 84
;    uint8   i, j, k, temp;
;    TCOLOR  bakc;
; 
;    /* 参数过滤 */
;    if( x>=(GUI_LCM_XMAX-8) ) return(0);
	ldd R24,y+12
	ldd R25,y+13
	cpi R24,120
	ldi R30,0
	cpc R25,R30
	brlo L8
	.dbline 84
	clr R16
	xjmp L7
L8:
	.dbline 85
;    if( y>=(GUI_LCM_YMAX-8) ) return(0);
	ldd R24,y+14
	ldd R25,y+15
	cpi R24,56
	ldi R30,0
	cpc R25,R30
	brlo L10
	.dbline 85
	clr R16
	xjmp L7
L10:
	.dbline 86
;    for(k=0; k<14; k++)
	clr R10
	xjmp L15
L12:
	.dbline 87
;    {  if(FONT16x16_TAB[k]==ch) break;
	.dbline 87
	ldi R24,<_FONT16x16_TAB
	ldi R25,>_FONT16x16_TAB
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	ldd R0,y+16
	cp R30,R0
	brne L16
	.dbline 87
	xjmp L14
L16:
	.dbline 88
L13:
	.dbline 86
	inc R10
L15:
	.dbline 86
	mov R24,R10
	cpi R24,14
	brlo L12
L14:
	.dbline 89
;    }
;    ch = k; 
	std y+16,R10
	.dbline 90
;    for(i=0; i<16; i++)
	clr R20
	xjmp L21
L18:
	.dbline 91
;    {  /* 读取点阵数据 */
	.dbline 92
;      for(k=0; k<2; k++)
	clr R10
	xjmp L25
L22:
	.dbline 93
; 	 {
	.dbline 94
; 	  temp = i*2 + k;
	ldi R24,2
	mul R24,R20
	mov R22,R0
	add R22,R10
	.dbline 95
;       font_dat = FONT16x16[ch][temp]; 
	ldi R24,32
	ldd R0,y+16
	mul R24,R0
	movw R2,R0
	ldi R24,<_FONT16x16
	ldi R25,>_FONT16x16
	add R2,R24
	adc R3,R25
	mov R30,R22
	clr R31
	add R30,R2
	adc R31,R3
	lpm R14,Z
	.dbline 96
;       for(j=0; j<8; j++)
	clr R12
	xjmp L29
L26:
	.dbline 97
;       {  /* 设置相应的点为color或为back_color */
	.dbline 98
;          if( (font_dat&DCB2HEX_TAB[j])==0 ) GUI_CopyColor(&bakc, back_color);
	ldi R24,<_DCB2HEX_TAB
	ldi R25,>_DCB2HEX_TAB
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	mov R2,R14
	and R2,R30
	brne L30
	.dbline 98
	lds R2,_back_color
	std y+1,R2
	xjmp L31
L30:
	.dbline 99
;             else  GUI_CopyColor(&bakc, disp_color);
	lds R2,_disp_color
	std y+1,R2
L31:
	.dbline 100
	ldd R2,y+1
	std y+0,R2
	ldd R18,y+14
	ldd R19,y+15
	ldd R16,y+12
	ldd R17,y+13
	xcall _GUI_Point
	.dbline 101
	ldd R24,y+12
	ldd R25,y+13
	adiw R24,1
	std y+13,R25
	std y+12,R24
	.dbline 102
L27:
	.dbline 96
	inc R12
L29:
	.dbline 96
	mov R24,R12
	cpi R24,8
	brlo L26
	.dbline 103
L23:
	.dbline 92
	inc R10
L25:
	.dbline 92
	mov R24,R10
	cpi R24,2
	brsh X0
	xjmp L22
X0:
	.dbline 104
	ldd R24,y+14
	ldd R25,y+15
	adiw R24,1
	std y+15,R25
	std y+14,R24
	.dbline 105
	ldd R24,y+12
	ldd R25,y+13
	sbiw R24,16
	std y+13,R25
	std y+12,R24
	.dbline 106
L19:
	.dbline 90
	inc R20
L21:
	.dbline 90
	cpi R20,16
	brsh X1
	xjmp L18
X1:
	.dbline 107
;          GUI_Point(x, y, bakc);       
;          x++;
;       }
;      }
;       y++;									// 指向下一行
;       x -= 16;								// 恢复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 temp 22 c
	.dbsym r k 10 c
	.dbsym r font_dat 14 c
	.dbsym l bakc 1 c
	.dbsym r j 12 c
	.dbsym l ch 16 c
	.dbsym l y 14 i
	.dbsym l x 12 i
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -