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

📄 font8_8.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 000E           ;    _XXX_XX_,
 000E           ;    XX_XXX__,
 000E           ;    ________,
 000E           ;    ________,
 000E           ;    ________,
 000E           ;    ________,
 000E           ;    ________,
 000E           ;    ________}   
 000E           ; 
 000E           ; /* 0x7f */
 000E           ;  ,{
 000E           ;    XXXXXX__,
 000E           ;    XXXXXX__,
 000E           ;    XXXXXX__,
 000E           ;    XXXXXX__,
 000E           ;    XXXXXX__,
 000E           ;    XXXXXX__,
 000E           ;    XXXXXX__,
 000E           ;    ________}
 000E           ;    
 000E           ; };
 000E           ; 
 000E           ; /****************************************************************************
 000E           ; * 名称:GUI_PutChar8_8()
 000E           ; * 功能:显示ASCII码(8*8字体),显示值为20H-7FH(若为其它值,则显示' ')。
 000E           ; * 入口参数: x                指定显示位置,x坐标
 000E           ; *           y         指定显示位置,y坐标
 000E           ; *           ch                要显示的ASCII码值。
 000E           ; * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
 000E           ; * 说明:操作失败原因是指定地址超出有效范围。
 000E           ; ****************************************************************************/
 000E           ; uint8  GUI_PutChar8_8(uint32 x, uint32 y, uint8 ch)
 000E           ; {  uint8   font_dat;
 000E                   .dbline 1086
 000E           ;    uint8   i, j;
 000E           ;    TCOLOR  bakc;
 000E           ; 
 000E           ;    /* 参数过滤 */
 000E           ;    if( x>=(GUI_LCM_XMAX-8) ) return(0);
 000E 8C85              ldd R24,y+12
 0010 9D85              ldd R25,y+13
 0012 883E              cpi R24,232
 0014 E0E0              ldi R30,0
 0016 9E07              cpc R25,R30
 0018 10F0              brlo L8
 001A                   .dbline 1086
 001A 0027              clr R16
 001C 4FC0              xjmp L7
 001E           L8:
 001E                   .dbline 1087
 001E           ;    if( y>=(GUI_LCM_YMAX-8) ) return(0);
 001E C601              movw R24,R12
 0020 8837              cpi R24,120
 0022 E0E0              ldi R30,0
 0024 9E07              cpc R25,R30
 0026 10F0              brlo L10
 0028                   .dbline 1087
 0028 0027              clr R16
 002A 48C0              xjmp L7
 002C           L10:
 002C                   .dbline 1088
 002C 8A2D              mov R24,R10
 002E 8032              cpi R24,32
 0030 18F0              brlo L14
 0032 8FE7              ldi R24,127
 0034 8A15              cp R24,R10
 0036 10F4              brsh L12
 0038           L14:
 0038                   .dbline 1088
 0038           ;    if( (ch<0x20) || (ch>0x7f) ) ch = 0x20;
 0038 80E2              ldi R24,32
 003A A82E              mov R10,R24
 003C           L12:
 003C                   .dbline 1090
 003C           ;    
 003C           ;    ch -= 0x20; 
 003C 8A2D              mov R24,R10
 003E 8052              subi R24,32
 0040 A82E              mov R10,R24
 0042                   .dbline 1091
 0042           ;    for(i=0; i<8; i++)
 0042 4427              clr R20
 0044 37C0              xjmp L18
 0046           L15:
 0046                   .dbline 1092
 0046           ;    {  /* 读取点阵数据 */
 0046                   .dbline 1093
 0046           ;       font_dat = FONT8x8ASCII[ch][i];
 0046 88E0              ldi R24,8
 0048 8A9D              mul R24,R10
 004A 1001              movw R2,R0
 004C 80E0              ldi R24,<_FONT8x8ASCII
 004E 90E0              ldi R25,>_FONT8x8ASCII
 0050 280E              add R2,R24
 0052 391E              adc R3,R25
 0054 E42F              mov R30,R20
 0056 FF27              clr R31
 0058 E20D              add R30,R2
 005A F31D              adc R31,R3
 005C E490              lpm R14,Z
 005E                   .dbline 1095
 005E           ;       
 005E           ;       for(j=0; j<8; j++)
 005E 6627              clr R22
 0060 1EC0              xjmp L22
 0062           L19:
 0062                   .dbline 1096
 0062           ;       {  /* 设置相应的点为color或为back_color */
 0062                   .dbline 1097
 0062           ;          if( (font_dat&DCB2HEX_TAB[j])==0 ) GUI_CopyColor(&bakc, back_color);
 0062 80E0              ldi R24,<_DCB2HEX_TAB
 0064 90E0              ldi R25,>_DCB2HEX_TAB
 0066 E62F              mov R30,R22
 0068 FF27              clr R31
 006A E80F              add R30,R24
 006C F91F              adc R31,R25
 006E E491              lpm R30,Z
 0070 2E2C              mov R2,R14
 0072 2E22              and R2,R30
 0074 21F4              brne L23
 0076                   .dbline 1097
 0076 20900000          lds R2,_back_color
 007A 2982              std y+1,R2
 007C 03C0              xjmp L24
 007E           L23:
 007E                   .dbline 1098
 007E           ;             else  GUI_CopyColor(&bakc, disp_color);
 007E 20900000          lds R2,_disp_color
 0082 2982              std y+1,R2
 0084           L24:
 0084                   .dbline 1099
 0084 2980              ldd R2,y+1
 0086 2882              std y+0,R2
 0088 9601              movw R18,R12
 008A 0C85              ldd R16,y+12
 008C 1D85              ldd R17,y+13
 008E 0E940000          xcall _GUI_Point
 0092                   .dbline 1100
 0092 8C85              ldd R24,y+12
 0094 9D85              ldd R25,y+13
 0096 0196              adiw R24,1
 0098 9D87              std y+13,R25
 009A 8C87              std y+12,R24
 009C                   .dbline 1101
 009C           L20:
 009C                   .dbline 1095
 009C 6395              inc R22
 009E           L22:
 009E                   .dbline 1095
 009E 6830              cpi R22,8
 00A0 00F3              brlo L19
 00A2                   .dbline 1103
 00A2 C601              movw R24,R12
 00A4 0196              adiw R24,1
 00A6 6C01              movw R12,R24
 00A8                   .dbline 1104
 00A8 8C85              ldd R24,y+12
 00AA 9D85              ldd R25,y+13
 00AC 0897              sbiw R24,8
 00AE 9D87              std y+13,R25
 00B0 8C87              std y+12,R24
 00B2                   .dbline 1105
 00B2           L16:
 00B2                   .dbline 1091
 00B2 4395              inc R20
 00B4           L18:
 00B4                   .dbline 1091
 00B4 4830              cpi R20,8
 00B6 08F4              brsh X0
 00B8 C6CF              xjmp L15
 00BA           X0:
 00BA                   .dbline 1107
 00BA           ;          GUI_Point(x, y, bakc);       
 00BA           ;          x++;
 00BA           ;       }
 00BA           ;       
 00BA           ;       y++;                                                                    // 指向下一行
 00BA           ;       x -= 8;                                                         // 恢复x值
 00BA           ;    }
 00BA           ;    
 00BA           ;    return(1);
 00BA 01E0              ldi R16,1
 00BC                   .dbline -2
 00BC           L7:
 00BC 2296              adiw R28,2
 00BE 0E940000          xcall pop_gset5
 00C2 2496              adiw R28,4
 00C4                   .dbline 0 ; func end
 00C4 0895              ret
 00C6                   .dbsym r i 20 c
 00C6                   .dbsym r font_dat 14 c
 00C6                   .dbsym l bakc 1 c
 00C6                   .dbsym r j 22 c
 00C6                   .dbsym r ch 10 c
 00C6                   .dbsym r y 12 i
 00C6                   .dbsym l x 12 i
 00C6                   .dbend
 00C6                   .dbfunc e GUI_PutString8_8 _GUI_PutString8_8 fV
 00C6           ;            str -> R20,R21
 00C6           ;              y -> R22,R23
 00C6           ;              x -> R10,R11
                        .even
 00C6           _GUI_PutString8_8::
 00C6 0E940000          xcall push_gset3
 00CA B901              movw R22,R18
 00CC 5801              movw R10,R16
 00CE 2197              sbiw R28,1
 00D0 4F81              ldd R20,y+7
 00D2 5885              ldd R21,y+8
 00D4                   .dbline -1
 00D4                   .dbline 1122
 00D4           ; }
 00D4           ; 
 00D4           ; 
 00D4           ; 
 00D4           ; /****************************************************************************
 00D4           ; * 名称:GUI_PutString8_8()
 00D4           ; * 功能:输出显示字符串((8*8字体,没有自动换行功能)。
 00D4           ; * 入口参数: x                指定显示位置,x坐标
 00D4           ; *           y         指定显示位置,y坐标
 00D4           ; *           str               要显示的ASCII码字符串
 00D4           ; * 出口参数:无
 00D4           ; * 说明:操作失败原因是指定地址超出有效范围。
 00D4           ; ****************************************************************************/
 00D4           ; void  GUI_PutString8_8(uint32 x, uint32 y, char *str)
 00D4           ; {  while(1)
 00D4 12C0              xjmp L27
 00D6           L26:
 00D6                   .dbline 1123
 00D6           ;    {  if( (*str)=='\0' ) break;
 00D6                   .dbline 1123
 00D6 FA01              movw R30,R20
 00D8 2080              ldd R2,z+0
 00DA 2220              tst R2
 00DC 09F4              brne L29
 00DE                   .dbline 1123
 00DE 0EC0              xjmp L28
 00E0           L29:
 00E0                   .dbline 1124
 00E0           ;       if( GUI_PutChar8_8(x, y, *str++)==0 ) break;
 00E0 FA01              movw R30,R20
 00E2 2190              ld R2,Z+
 00E4 AF01              movw R20,R30
 00E6 2882              std y+0,R2
 00E8 9B01              movw R18,R22
 00EA 8501              movw R16,R10
 00EC 89DF              xcall _GUI_PutChar8_8
 00EE 0023              tst R16
 00F0 09F4              brne L31
 00F2                   .dbline 1124
 00F2 04C0              xjmp L28
 00F4           L31:
 00F4                   .dbline 1125
 00F4 C501              movw R24,R10
 00F6 0696              adiw R24,6
 00F8 5C01              movw R10,R24
 00FA                   .dbline 1126
 00FA           L27:
 00FA                   .dbline 1122
 00FA EDCF              xjmp L26
 00FC           L28:
 00FC                   .dbline -2
 00FC           L25:
 00FC 2196              adiw R28,1
 00FE 0E940000          xcall pop_gset3
 0102                   .dbline 0 ; func end
 0102 0895              ret
 0104                   .dbsym r str 20 pc
 0104                   .dbsym r y 22 i
 0104                   .dbsym r x 10 i
 0104                   .dbend
 0104                   .dbfunc e GUI_PutNoStr8_8 _GUI_PutNoStr8_8 fV
 0104           ;             no -> R20
 0104           ;            str -> R22,R23
 0104           ;              y -> R10,R11
 0104           ;              x -> R12,R13
                        .even
 0104           _GUI_PutNoStr8_8::
 0104 0E940000          xcall push_gset4
 0108 5901              movw R10,R18
 010A 6801              movw R12,R16
 010C 2197              sbiw R28,1
 010E 6985              ldd R22,y+9
 0110 7A85              ldd R23,y+10
 0112 4B85              ldd R20,y+11
 0114                   .dbline -1
 0114                   .dbline 1141
 0114           ;       x += 6;                                                         // 下一个字符显示位置,y不变(即不换行)
 0114           ;    }
 0114           ; }
 0114           ; 
 0114           ; 
 0114           ; /****************************************************************************
 0114           ; * 名称:GUI_PutNoStr8_8()
 0114           ; * 功能:输出显示字符串((8*8字体,没有自动换行功能),若显示的字符个数大于指定个数,则直接退出。
 0114           ; * 入口参数: x                指定显示位置,x坐标
 0114           ; *           y         指定显示位置,y坐标
 0114           ; *           str               要显示的ASCII码字符串。
 0114           ; *           no      最大显示字符的个数
 0114           ; * 出口参数:无
 0114           ; * 说明:操作失败原因是指定地址超出有效范围。
 0114           ; ****************************************************************************/
 0114           ; void  GUI_PutNoStr8_8(uint32 x, uint32 y, char *str, uint8 no)
 0114           ; {  if(no==0) return;
 0114                   .dbline 1141
 0114 4423              tst R20
 0116 A9F4              brne L39
 0118                   .dbline 1141
 0118 17C0              xjmp L33
 011A           X1:
 011A                   .dbline 1142
 011A           ;    for(; no>0; no--)
 011A           L36:
 011A                   .dbline 1143
 011A           ;    {  if( (*str)=='\0' ) break;
 011A                   .dbline 1143
 011A FB01              movw R30,R22
 011C 2080              ldd R2,z+0
 011E 2220              tst R2
 0120 09F4              brne L40
 0122                   .dbline 1143
 0122 12C0              xjmp L38
 0124           L40:
 0124                   .dbline 1144
 0124           ;       if( GUI_PutChar(x, y, *str++)==0 ) break;
 0124 FB01              movw R30,R22
 0126 2190              ld R2,Z+
 0128 BF01              movw R22,R30
 012A 2882              std y+0,R2
 012C 9501              movw R18,R10
 012E 8601              movw R16,R12
 0130 0E940000          xcall _GUI_PutChar
 0134 0023              tst R16
 0136 09F4              brne L42
 0138                   .dbline 1144
 0138 07C0              xjmp L38
 013A           L42:
 013A                   .dbline 1145
 013A C601              movw R24,R12
 013C 0696              adiw R24,6
 013E 6C01              movw R12,R24
 0140                   .dbline 1146
 0140           L37:
 0140                   .dbline 1142
 0140 4A95              dec R20
 0142           L39:
 0142                   .dbline 1142
 0142 2224              clr R2
 0144 2416              cp R2,R20
 0146 48F3              brlo L36
 0148           L38:
 0148                   .dbline -2
 0148           L33:
 0148 2196              adiw R28,1
 014A 0E940000          xcall pop_gset4
 014E                   .dbline 0 ; func end
 014E 0895              ret
 0150                   .dbsym r no 20 c
 0150                   .dbsym r str 22 pc
 0150                   .dbsym r y 10 i
 0150                   .dbsym r x 12 i
 0150                   .dbend

⌨️ 快捷键说明

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