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

📄 lcd.lis

📁 自制MP3程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 010E           _LCD_write_char::
 010E 0E940000          xcall push_gset2
 0112 602F              mov R22,R16
 0114                   .dbline -1
 0114                   .dbline 92
 0114           ; }
 0114           ; 
 0114           ; /*-----------------------------------------------------------------------
 0114           ; LCD_write_char: 显示英文字符
 0114           ; 输入参数:c:显示的字符;
 0114           ; 编写日期:2004-8-10 
 0114           ; 最后修改日期:2006-10-23
 0114           ; -----------------------------------------------------------------------*/
 0114           ; void LCD_write_char(unsigned char c)
 0114           ; {
 0114                   .dbline 94
 0114           ;   unsigned char line;
 0114           ;   c -= 32;
 0114 6052              subi R22,32
 0116                   .dbline 95
 0116           ;   for (line=0; line<6; line++)
 0116 4427              clr R20
 0118 0FC0              xjmp L18
 011A           L15:
 011A                   .dbline 96
 011A 21E0              ldi R18,1
 011C 86E0              ldi R24,6
 011E 869F              mul R24,R22
 0120 1001              movw R2,R0
 0122 80E0              ldi R24,<_font6x8
 0124 90E0              ldi R25,>_font6x8
 0126 280E              add R2,R24
 0128 391E              adc R3,R25
 012A E42F              mov R30,R20
 012C FF27              clr R31
 012E E20D              add R30,R2
 0130 F31D              adc R31,R3
 0132 0491              lpm R16,Z
 0134 65DF              xcall _LCD_write_byte
 0136           L16:
 0136                   .dbline 95
 0136 4395              inc R20
 0138           L18:
 0138                   .dbline 95
 0138 4630              cpi R20,6
 013A 78F3              brlo L15
 013C                   .dbline -2
 013C           L14:
 013C 0E940000          xcall pop_gset2
 0140                   .dbline 0 ; func end
 0140 0895              ret
 0142                   .dbsym r line 20 c
 0142                   .dbsym r c 22 c
 0142                   .dbend
 0142                   .dbfunc e LCD_write_String _LCD_write_String fV
 0142           ;              s -> R20,R21
 0142           ;              Y -> R10
 0142           ;              X -> R22
                        .even
 0142           _LCD_write_String::
 0142 0E940000          xcall push_gset3
 0146 A22E              mov R10,R18
 0148 602F              mov R22,R16
 014A 4E81              ldd R20,y+6
 014C 5F81              ldd R21,y+7
 014E                   .dbline -1
 014E                   .dbline 107
 014E           ;     LCD_write_byte(font6x8[c][line], 1);
 014E           ; }
 014E           ; 
 014E           ; /*-----------------------------------------------------------------------
 014E           ; LCD_write_char: 英文字符串显示函数
 014E           ; 输入参数:*s:英文字符串指针;
 014E           ; X、Y: 显示字符串的位置
 014E           ; 编写日期:2004-8-10 
 014E           ; 最后修改日期:2006-10-23
 014E           ; -----------------------------------------------------------------------*/
 014E           ; void LCD_write_String(unsigned char X,unsigned char Y,char *s)
 014E           ; {
 014E                   .dbline 108
 014E           ;   LCD_set_XY(X,Y);
 014E 2A2D              mov R18,R10
 0150 062F              mov R16,R22
 0152 CEDF              xcall _LCD_set_XY
 0154 05C0              xjmp L21
 0156           L20:
 0156                   .dbline 110
 0156                   .dbline 111
 0156 FA01              movw R30,R20
 0158 0081              ldd R16,z+0
 015A D9DF              xcall _LCD_write_char
 015C                   .dbline 112
 015C 4F5F              subi R20,255  ; offset = 1
 015E 5F4F              sbci R21,255
 0160                   .dbline 113
 0160           L21:
 0160                   .dbline 109
 0160           ;   while (*s) 
 0160 FA01              movw R30,R20
 0162 2080              ldd R2,z+0
 0164 2220              tst R2
 0166 B9F7              brne L20
 0168                   .dbline -2
 0168           L19:
 0168 0E940000          xcall pop_gset3
 016C                   .dbline 0 ; func end
 016C 0895              ret
 016E                   .dbsym r s 20 pc
 016E                   .dbsym r Y 10 c
 016E                   .dbsym r X 22 c
 016E                   .dbend
 016E                   .dbfunc e LCD_write_chi _LCD_write_chi fV
 016E           ;              i -> R20
 016E           ;              n -> R14
 016E           ;            row -> R10
 016E           ;           line -> R12
 016E           ;            num -> R22
 016E           ;        ch_with -> y+14
 016E           ;              Y -> y+12
 016E           ;              X -> y+10
                        .even
 016E           _LCD_write_chi::
 016E 0E940000          xcall push_arg4
 0172 0E940000          xcall push_gset5
 0176 6889              ldd R22,y+16
 0178 CA88              ldd R12,y+18
 017A AC88              ldd R10,y+20
 017C                   .dbline -1
 017C                   .dbline 130
 017C           ;   {
 017C           ;     LCD_write_char(*s);
 017C           ;     s++;
 017C           ;   }
 017C           ; }
 017C           ; 
 017C           ; /*-----------------------------------------------------------------------
 017C           ; 
 017C           ; LCD_write_chi: 在LCD上显示汉字
 017C           ; 输入参数:X、Y:显示汉字的起始X、Y坐标;
 017C           ; ch_with :汉字点阵的宽度
 017C           ; num:显示汉字的个数;
 017C           ; line:汉字点阵数组中的起始行数
 017C           ; row:汉字显示的行间距
 017C           ; 编写日期:2004-8-11 
 017C           ; 最后修改日期:2006-10-23
 017C           ; -----------------------------------------------------------------------*/
 017C           ; void LCD_write_chi(unsigned char X, unsigned char Y, 
 017C           ; unsigned char ch_with,unsigned char num,
 017C           ; unsigned char line,unsigned char row)
 017C           ; {
 017C                   .dbline 132
 017C           ;   unsigned char i,n;
 017C           ;   LCD_set_XY(X,Y);//设置初始位置
 017C 2C85              ldd R18,y+12
 017E 0A85              ldd R16,y+10
 0180 B7DF              xcall _LCD_set_XY
 0182                   .dbline 133
 0182           ;   for (i=0;i<num;)
 0182 4427              clr R20
 0184 32C0              xjmp L27
 0186           L24:
 0186                   .dbline 134
 0186           ;   {
 0186                   .dbline 135
 0186           ;     for (n=0; n<ch_with*2; n++)//写一个汉字
 0186 EE24              clr R14
 0188 23C0              xjmp L31
 018A           L28:
 018A                   .dbline 136
 018A           ;     { 
 018A                   .dbline 137
 018A           ;       if (n==ch_with)//写汉字的下半部分
 018A 0E84              ldd R0,y+14
 018C E014              cp R14,R0
 018E 79F4              brne L32
 0190                   .dbline 138
 0190           ;         {
 0190                   .dbline 139
 0190           ;          if (i==0) 
 0190 4423              tst R20
 0192 29F4              brne L34
 0194                   .dbline 140
 0194           ;                  LCD_set_XY(X,Y+1);
 0194 2C85              ldd R18,y+12
 0196 2F5F              subi R18,255    ; addi 1
 0198 0A85              ldd R16,y+10
 019A AADF              xcall _LCD_set_XY
 019C 08C0              xjmp L35
 019E           L34:
 019E                   .dbline 142
 019E           ;          else
 019E           ;            LCD_set_XY((X+(ch_with+row)*i),Y+1);
 019E 2C85              ldd R18,y+12
 01A0 2F5F              subi R18,255    ; addi 1
 01A2 2E84              ldd R2,y+14
 01A4 2A0C              add R2,R10
 01A6 249E              mul R2,R20
 01A8 0A85              ldd R16,y+10
 01AA 000D              add R16,R0
 01AC A1DF              xcall _LCD_set_XY
 01AE           L35:
 01AE                   .dbline 143
 01AE           ;         }
 01AE           L32:
 01AE                   .dbline 144
 01AE 21E0              ldi R18,1
 01B0 2C2C              mov R2,R12
 01B2 240E              add R2,R20
 01B4 88E1              ldi R24,24
 01B6 829D              mul R24,R2
 01B8 1001              movw R2,R0
 01BA 80E0              ldi R24,<_china_char
 01BC 90E0              ldi R25,>_china_char
 01BE 280E              add R2,R24
 01C0 391E              adc R3,R25
 01C2 EE2D              mov R30,R14
 01C4 FF27              clr R31
 01C6 E20D              add R30,R2
 01C8 F31D              adc R31,R3
 01CA 0491              lpm R16,Z
 01CC 19DF              xcall _LCD_write_byte
 01CE                   .dbline 145
 01CE           L29:
 01CE                   .dbline 135
 01CE E394              inc R14
 01D0           L31:
 01D0                   .dbline 135
 01D0 82E0              ldi R24,2
 01D2 0E84              ldd R0,y+14
 01D4 809D              mul R24,R0
 01D6 E014              cp R14,R0
 01D8 C0F2              brlo L28
 01DA                   .dbline 146
 01DA 4395              inc R20
 01DC                   .dbline 147
 01DC 2C85              ldd R18,y+12
 01DE 2E84              ldd R2,y+14
 01E0 2A0C              add R2,R10
 01E2 249E              mul R2,R20
 01E4 0A85              ldd R16,y+10
 01E6 000D              add R16,R0
 01E8 83DF              xcall _LCD_set_XY
 01EA                   .dbline 148
 01EA           L25:
 01EA                   .dbline 133
 01EA           L27:
 01EA                   .dbline 133
 01EA 4617              cp R20,R22
 01EC 08F4              brsh X0
 01EE CBCF              xjmp L24
 01F0           X0:
 01F0                   .dbline -2
 01F0           L23:
 01F0 0E940000          xcall pop_gset5
 01F4 2496              adiw R28,4
 01F6                   .dbline 0 ; func end
 01F6 0895              ret
 01F8                   .dbsym r i 20 c
 01F8                   .dbsym r n 14 c
 01F8                   .dbsym r row 10 c
 01F8                   .dbsym r line 12 c
 01F8                   .dbsym r num 22 c
 01F8                   .dbsym l ch_with 14 c
 01F8                   .dbsym l Y 12 c
 01F8                   .dbsym l X 10 c
 01F8                   .dbend
                        .area lit(rom, con, rel)
 0348           L37:
 0348 00                .byte 0
 0349 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 0385 00000000000000000000      .word 0,0,0,0,0
 038F 00000000000000000000      .word 0,0,0,0,0
 0399 000000            .byte 0,0,0
 039C           L38:
 039C 00                .byte 0
 039D 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 03D9 00000000000000000000      .word 0,0,0,0,0
 03E3 00000000000000000000      .word 0,0,0,0,0
 03ED 000000            .byte 0,0,0
                        .area text(rom, con, rel)
 01F8                   .dbfile E:\V3U~1\sd\M64-SD卡MP3程序\lcd.c
 01F8                   .dbfunc e LCD_move_chi _LCD_move_chi fV
 01F8           ;              i -> R20
 01F8           ;              j -> R22
 01F8           ;       buffer_l -> y+84
 01F8           ;       buffer_h -> y+0
 01F8           ;              n -> R10
 01F8           ;              T -> R12
 01F8           ;              Y -> R14
 01F8           ;              X -> y+178
                        .even
 01F8           _LCD_move_chi::
 01F8 0E940000          xcall push_arg4
 01FC 0E940000          xcall push_gset5
 0200 E22E              mov R14,R18
 0202 EF97              sbiw R28,63
 0204 EF97              sbiw R28,63
 0206 AA97              sbiw R28,42  ; offset = 168
 0208 FE01              movw R30,R28
 020A EA54              subi R30,74  ; addi 182
 020C FF4F              sbci R31,255
 020E C080              ldd R12,z+0
 0210                   .dbline -1
 0210                   .dbline 159
 0210           ;       LCD_write_byte(china_char[line+i][n],1);
 0210           ;     }
 0210           ;     i++;
 0210           ;     LCD_set_XY((X+(ch_with+row)*i),Y);
 0210           ;   }
 0210           ; }
 0210           ; 
 0210           ; /*-----------------------------------------------------------------------
 0210           ; LCD_write_chi: 汉字移动
 0210           ; 输入参数:X、Y:显示汉字的起始X、Y坐标;
 0210           ; T:移动速度;
 0210           ; 编写日期:2004-8-13 
 0210           ; 最后修改日期:2006-10-23
 0210           ; -----------------------------------------------------------------------*/
 0210           ; void LCD_move_chi(unsigned char X, unsigned char Y, unsigned char T)
 0210           ; {
 0210                   .dbline 160
 0210           ;   unsigned char i,n,j=0;
 0210 6627              clr R22
 0212                   .dbline 161
 0212           ;   unsigned char buffer_h[84]={0};
 0212 80E0              ldi R24,<L37
 0214 90E0              ldi R25,>L37
 0216 FE01              movw R30,R28
 0218 04E5              ldi R16,84
 021A 10E0              ldi R17,0
 021C FA93              st -y,R31
 021E EA93              st -y,R30
 0220 9A93              st -y,R25
 0222 8A93              st -y,R24
 0224 0E940000          xcall asgncblk
 0228                   .dbline 162
 0228           ;   unsigned char buffer_l[84]={0};
 0228 80E0              ldi R24,<L38
 022A 90E0              ldi R25,>L38
 022C FE01              movw R30,R28
 022E EC5A              subi R30,172  ; offset = 84
 0230 FF4F              sbci R31,255
 0232 04E5              ldi R16,84
 0234 10E0              ldi R17,0
 0236 FA93              st -y,R31
 0238 EA93              st -y,R30
 023A 9A93              st -y,R25
 023C 8A93              st -y,R24
 023E 0E940000          xcall asgncblk
 0242                   .dbline 163
 0242           ;   for (i=0; i<144; i++)
 0242 4427              clr R20
 0244 80C0              xjmp L42
 0246           L39:

⌨️ 快捷键说明

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