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

📄 main.lis

📁 meg16 的所有功能实例
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01B0           ;           line -> R12
 01B0           ;            num -> R22
 01B0           ;        ch_with -> y+14
 01B0           ;              Y -> y+12
 01B0           ;              X -> y+10
                        .even
 01B0           _LCD_write_chinese_string::
 01B0 0E940000          xcall push_arg4
 01B4 0E940000          xcall push_gset5
 01B8 6889              ldd R22,y+16
 01BA CA88              ldd R12,y+18
 01BC AC88              ldd R10,y+20
 01BE                   .dbline -1
 01BE                   .dbline 144
 01BE           ;     {
 01BE           ;           LCD_write_char(*s);
 01BE           ;           s++;
 01BE           ;     }
 01BE           ; }
 01BE           ; /********************************************************************************************************************/
 01BE           ; /*-----------------------------------------------------------------------
 01BE           ; LCD_write_chinese_string: 在LCD上显示汉字
 01BE           ; 
 01BE           ; 输入参数:X、Y    :显示汉字的起始X、Y坐标;
 01BE           ;           ch_with :汉字点阵的宽度
 01BE           ;           num     :显示汉字的个数;  
 01BE           ;           line    :汉字点阵数组中的起始行数
 01BE           ;           row     :汉字显示的行间距
 01BE           ; -----------------------------------------------------------------------*/                        
 01BE           ; void LCD_write_chinese_string(unsigned char X, unsigned char Y,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row)
 01BE           ; {
 01BE                   .dbline 147
 01BE           ;     unsigned char i,n;
 01BE           ;     
 01BE           ;     LCD_set_XY(X,Y);                             //设置初始位置
 01BE 2C85              ldd R18,y+12
 01C0 0A85              ldd R16,y+10
 01C2 B7DF              xcall _LCD_set_XY
 01C4                   .dbline 149
 01C4           ;     
 01C4           ;     for (i=0;i<num;)
 01C4 4427              clr R20
 01C6 32C0              xjmp L42
 01C8           L39:
 01C8                   .dbline 150
 01C8           ;     {
 01C8                   .dbline 151
 01C8           ;               for (n=0; n<ch_with*2; n++)              //写一个汉字
 01C8 EE24              clr R14
 01CA 23C0              xjmp L46
 01CC           L43:
 01CC                   .dbline 152
 01CC           ;               { 
 01CC                   .dbline 153
 01CC           ;                   if (n==ch_with)                      //写汉字的下半部分
 01CC 0E84              ldd R0,y+14
 01CE E014              cp R14,R0
 01D0 79F4              brne L47
 01D2                   .dbline 154
 01D2           ;                   {
 01D2                   .dbline 155
 01D2           ;                       if (i==0) LCD_set_XY(X,Y+1);
 01D2 4423              tst R20
 01D4 29F4              brne L49
 01D6                   .dbline 155
 01D6 2C85              ldd R18,y+12
 01D8 2F5F              subi R18,255    ; addi 1
 01DA 0A85              ldd R16,y+10
 01DC AADF              xcall _LCD_set_XY
 01DE 08C0              xjmp L50
 01E0           L49:
 01E0                   .dbline 157
 01E0           ;                       else
 01E0           ;                               {
 01E0                   .dbline 158
 01E0           ;                          LCD_set_XY((X+(ch_with+row)*i),Y+1);
 01E0 2C85              ldd R18,y+12
 01E2 2F5F              subi R18,255    ; addi 1
 01E4 2E84              ldd R2,y+14
 01E6 2A0C              add R2,R10
 01E8 249E              mul R2,R20
 01EA 0A85              ldd R16,y+10
 01EC 000D              add R16,R0
 01EE A1DF              xcall _LCD_set_XY
 01F0                   .dbline 159
 01F0           ;                               }
 01F0           L50:
 01F0                   .dbline 160
 01F0           ;             }
 01F0           L47:
 01F0                   .dbline 161
 01F0 21E0              ldi R18,1
 01F2 2C2C              mov R2,R12
 01F4 240E              add R2,R20
 01F6 88E1              ldi R24,24
 01F8 829D              mul R24,R2
 01FA 1001              movw R2,R0
 01FC 80E0              ldi R24,<_HZK
 01FE 90E0              ldi R25,>_HZK
 0200 280E              add R2,R24
 0202 391E              adc R3,R25
 0204 EE2D              mov R30,R14
 0206 FF27              clr R31
 0208 E20D              add R30,R2
 020A F31D              adc R31,R3
 020C 0491              lpm R16,Z
 020E 5DD0              xcall _LCD_write_byte
 0210                   .dbline 162
 0210           L44:
 0210                   .dbline 151
 0210 E394              inc R14
 0212           L46:
 0212                   .dbline 151
 0212 82E0              ldi R24,2
 0214 0E84              ldd R0,y+14
 0216 809D              mul R24,R0
 0218 E014              cp R14,R0
 021A C0F2              brlo L43
 021C                   .dbline 163
 021C 4395              inc R20
 021E                   .dbline 164
 021E 2C85              ldd R18,y+12
 0220 2E84              ldd R2,y+14
 0222 2A0C              add R2,R10
 0224 249E              mul R2,R20
 0226 0A85              ldd R16,y+10
 0228 000D              add R16,R0
 022A 83DF              xcall _LCD_set_XY
 022C                   .dbline 165
 022C           L40:
 022C                   .dbline 149
 022C           L42:
 022C                   .dbline 149
 022C 4617              cp R20,R22
 022E 08F4              brsh X3
 0230 CBCF              xjmp L39
 0232           X3:
 0232                   .dbline -2
 0232           L38:
 0232 0E940000          xcall pop_gset5
 0236 2496              adiw R28,4
 0238                   .dbline 0 ; func end
 0238 0895              ret
 023A                   .dbsym r i 20 c
 023A                   .dbsym r n 14 c
 023A                   .dbsym r row 10 c
 023A                   .dbsym r line 12 c
 023A                   .dbsym r num 22 c
 023A                   .dbsym l ch_with 14 c
 023A                   .dbsym l Y 12 c
 023A                   .dbsym l X 10 c
 023A                   .dbend
 023A                   .dbfunc e LCD_draw_bmp_pixel _LCD_draw_bmp_pixel fV
 023A           ;            row -> R20
 023A           ;              n -> R22,R23
 023A           ;              i -> R14,R15
 023A           ;          Pix_y -> y+18
 023A           ;          Pix_x -> R10
 023A           ;            map -> R12,R13
 023A           ;              Y -> y+12
 023A           ;              X -> y+10
                        .even
 023A           _LCD_draw_bmp_pixel::
 023A 0E940000          xcall push_arg4
 023E 0E940000          xcall push_gset5
 0242 CE84              ldd R12,y+14
 0244 DF84              ldd R13,y+15
 0246 A888              ldd R10,y+16
 0248                   .dbline -1
 0248                   .dbline 177
 0248           ;                   LCD_write_byte(HZK[line+i][n],1);
 0248           ;               }
 0248           ;               i++;
 0248           ;               LCD_set_XY((X+(ch_with+row)*i),Y);
 0248           ;     }
 0248           ; }
 0248           ; /********************************************************************************************************************/
 0248           ; /*-----------------------------------------------------------------------
 0248           ; LCD_draw_map      : 位图绘制函数
 0248           ; 
 0248           ; 输入参数:X、Y    :位图绘制的起始X、Y坐标;
 0248           ;           *map    :位图点阵数据;
 0248           ;           Pix_x   :位图像素(长)
 0248           ;           Pix_y   :位图像素(宽)
 0248           ; -----------------------------------------------------------------------*/
 0248           ; void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y)
 0248           ; {
 0248                   .dbline 181
 0248           ;     unsigned int i,n;
 0248           ;     unsigned char row;
 0248           ;     
 0248           ;     if (Pix_y%8==0)
 0248 18E0              ldi R17,8
 024A 0A89              ldd R16,y+18
 024C 0E940000          xcall mod8u
 0250 0023              tst R16
 0252 29F4              brne L52
 0254                   .dbline 182
 0254           ;       {
 0254                   .dbline 183
 0254           ;           row=Pix_y/8;      //计算位图所占行数
 0254 4A89              ldd R20,y+18
 0256 4695              lsr R20
 0258 4695              lsr R20
 025A 4695              lsr R20
 025C                   .dbline 184
 025C           ;     }
 025C 05C0              xjmp L53
 025E           L52:
 025E                   .dbline 186
 025E           ;     else
 025E           ;       {
 025E                   .dbline 187
 025E           ;         row=Pix_y/8+1;
 025E 4A89              ldd R20,y+18
 0260 4695              lsr R20
 0262 4695              lsr R20
 0264 4695              lsr R20
 0266 4F5F              subi R20,255    ; addi 1
 0268                   .dbline 188
 0268           ;     }
 0268           L53:
 0268                   .dbline 189
 0268           ;     for (n=0;n<row;n++)
 0268 6627              clr R22
 026A 7727              clr R23
 026C 25C0              xjmp L57
 026E           L54:
 026E                   .dbline 190
 026E           ;     {
 026E                   .dbline 191
 026E           ;               LCD_set_XY(X,Y);
 026E 2C85              ldd R18,y+12
 0270 0A85              ldd R16,y+10
 0272 5FDF              xcall _LCD_set_XY
 0274                   .dbline 192
 0274           ;         for(i=0; i<Pix_x; i++)
 0274 EE24              clr R14
 0276 FF24              clr R15
 0278 15C0              xjmp L61
 027A           L58:
 027A                   .dbline 193
 027A                   .dbline 194
 027A 21E0              ldi R18,1
 027C 2A2C              mov R2,R10
 027E 3324              clr R3
 0280 2F93              push R18
 0282 3F93              push R19
 0284 9101              movw R18,R2
 0286 8B01              movw R16,R22
 0288 0E940000          xcall empy16s
 028C 3F91              pop R19
 028E 2F91              pop R18
 0290 F701              movw R30,R14
 0292 E00F              add R30,R16
 0294 F11F              adc R31,R17
 0296 EC0D              add R30,R12
 0298 FD1D              adc R31,R13
 029A 0081              ldd R16,z+0
 029C 16D0              xcall _LCD_write_byte
 029E                   .dbline 195
 029E           L59:
 029E                   .dbline 192
 029E C701              movw R24,R14
 02A0 0196              adiw R24,1
 02A2 7C01              movw R14,R24
 02A4           L61:
 02A4                   .dbline 192
 02A4 2A2C              mov R2,R10
 02A6 3324              clr R3
 02A8 E214              cp R14,R2
 02AA F304              cpc R15,R3
 02AC 30F3              brlo L58
 02AE                   .dbline 196
 02AE 0C84              ldd R0,y+12
 02B0 0394              inc R0
 02B2 0C86              std y+12,R0
 02B4                   .dbline 197
 02B4           L55:
 02B4                   .dbline 189
 02B4 6F5F              subi R22,255  ; offset = 1
 02B6 7F4F              sbci R23,255
 02B8           L57:
 02B8                   .dbline 189
 02B8 242E              mov R2,R20
 02BA 3324              clr R3
 02BC 6215              cp R22,R2
 02BE 7305              cpc R23,R3
 02C0 B0F2              brlo L54
 02C2                   .dbline -2
 02C2           L51:
 02C2 0E940000          xcall pop_gset5
 02C6 2496              adiw R28,4
 02C8                   .dbline 0 ; func end
 02C8 0895              ret
 02CA                   .dbsym r row 20 c
 02CA                   .dbsym r n 22 i
 02CA                   .dbsym r i 14 i
 02CA                   .dbsym l Pix_y 18 c
 02CA                   .dbsym r Pix_x 10 c
 02CA                   .dbsym r map 12 pc
 02CA                   .dbsym l Y 12 c
 02CA                   .dbsym l X 10 c
 02CA                   .dbend
 02CA                   .dbfunc e LCD_write_byte _LCD_write_byte fV
 02CA           ;              i -> R20
 02CA           ;        command -> R18
 02CA           ;            dat -> R16
                        .even
 02CA           _LCD_write_byte::
 02CA 0E940000          xcall push_gset1
 02CE                   .dbline -1
 02CE                   .dbline 207
 02CE           ;           {
 02CE           ;             LCD_write_byte(map[i+n*Pix_x]

⌨️ 快捷键说明

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