📄 lcd.lis
字号:
02B4 242D mov R18,R4
02B6 8301 movw R16,R6
02B8 0F93 push R16
02BA 1F93 push R17
02BC 2F93 push R18
02BE 2EDF xcall _Dis_Ascii_Big
02C0 4F90 pop R4
02C2 7F90 pop R7
02C4 6F90 pop R6
02C6 .dbline 140
02C6 ; x+=16;
02C6 C301 movw R24,R6
02C8 4096 adiw R24,16
02CA 3C01 movw R6,R24
02CC .dbline 141
02CC ; i++;
02CC 6395 inc R22
02CE .dbline 142
02CE ; if(x>319)
02CE 8FE3 ldi R24,319
02D0 91E0 ldi R25,1
02D2 8615 cp R24,R6
02D4 9705 cpc R25,R7
02D6 08F0 brlo X2
02D8 88C0 xjmp L43
02DA X2:
02DA .dbline 143
02DA ; {
02DA .dbline 144
02DA ; y+=24;
02DA 842D mov R24,R4
02DC 885E subi R24,232 ; addi 24
02DE 482E mov R4,R24
02E0 .dbline 145
02E0 ; x=0;
02E0 6624 clr R6
02E2 7724 clr R7
02E4 .dbline 146
02E4 ; }
02E4 .dbline 147
02E4 ; }
02E4 82C0 xjmp L43
02E6 L44:
02E6 .dbline 149
02E6 ; else
02E6 ; {
02E6 .dbline 150
02E6 ; Dis_Ascii(x,y,ptr[i],front,back);
02E6 2C2C mov R2,R12
02E8 3324 clr R3
02EA 3D82 std y+5,R3
02EC 2C82 std y+4,R2
02EE EA82 std y+2,R14
02F0 E62F mov R30,R22
02F2 FF27 clr R31
02F4 0888 ldd R0,y+16
02F6 1988 ldd R1,y+17
02F8 E00D add R30,R0
02FA F11D adc R31,R1
02FC 2080 ldd R2,z+0
02FE 2882 std y+0,R2
0300 242D mov R18,R4
0302 8301 movw R16,R6
0304 0F93 push R16
0306 1F93 push R17
0308 2F93 push R18
030A CDDE xcall _Dis_Ascii
030C 4F90 pop R4
030E 7F90 pop R7
0310 6F90 pop R6
0312 .dbline 151
0312 ; x += 8;
0312 C301 movw R24,R6
0314 0896 adiw R24,8
0316 3C01 movw R6,R24
0318 .dbline 152
0318 ; i++;
0318 6395 inc R22
031A .dbline 153
031A ; if(x>319)
031A 8FE3 ldi R24,319
031C 91E0 ldi R25,1
031E 8615 cp R24,R6
0320 9705 cpc R25,R7
0322 08F0 brlo X3
0324 62C0 xjmp L43
0326 X3:
0326 .dbline 154
0326 ; {
0326 .dbline 155
0326 ; y += 16;
0326 842D mov R24,R4
0328 805F subi R24,240 ; addi 16
032A 482E mov R4,R24
032C .dbline 156
032C ; x = 0;
032C 6624 clr R6
032E 7724 clr R7
0330 .dbline 157
0330 ; }
0330 .dbline 158
0330 ; }
0330 .dbline 159
0330 ; }
0330 5CC0 xjmp L43
0332 L42:
0332 .dbline 161
0332 ; else //此字符为汉字
0332 ; {
0332 .dbline 162
0332 ; for(dat=0;dat<MAX_HZ;dat++)
0332 AA24 clr R10
0334 BB24 clr R11
0336 2EC0 xjmp L53
0338 L50:
0338 .dbline 163
0338 ; {
0338 .dbline 164
0338 ; if(Cdotlib[dat].Index[0] == (unsigned char)ptr[i])
0338 02E2 ldi R16,34
033A 10E0 ldi R17,0
033C 9501 movw R18,R10
033E 0E940000 xcall empy16s
0342 F801 movw R30,R16
0344 80E0 ldi R24,<_Cdotlib
0346 90E0 ldi R25,>_Cdotlib
0348 E80F add R30,R24
034A F91F adc R31,R25
034C E691 elpm R30,Z
034E A62F mov R26,R22
0350 BB27 clr R27
0352 0888 ldd R0,y+16
0354 1988 ldd R1,y+17
0356 A00D add R26,R0
0358 B11D adc R27,R1
035A 2C90 ld R2,x
035C E215 cp R30,R2
035E B9F4 brne L54
0360 .dbline 165
0360 ; {
0360 .dbline 166
0360 ; if(Cdotlib[dat].Index[1] == (unsigned char)ptr[i+1])
0360 02E2 ldi R16,34
0362 10E0 ldi R17,0
0364 9501 movw R18,R10
0366 0E940000 xcall empy16s
036A F801 movw R30,R16
036C 80E0 ldi R24,<_Cdotlib+1
036E 90E0 ldi R25,>_Cdotlib+1
0370 E80F add R30,R24
0372 F91F adc R31,R25
0374 E691 elpm R30,Z
0376 A62F mov R26,R22
0378 BB27 clr R27
037A 0888 ldd R0,y+16
037C 1988 ldd R1,y+17
037E A00D add R26,R0
0380 B11D adc R27,R1
0382 1196 adiw R26,1
0384 2C90 ld R2,x
0386 E215 cp R30,R2
0388 11F4 brne L56
038A .dbline 167
038A ; {
038A .dbline 168
038A ; i+=2;
038A 6E5F subi R22,254 ; addi 2
038C .dbline 169
038C ; break;
038C 09C0 xjmp L52
038E L56:
038E .dbline 171
038E ; }
038E ; }
038E L54:
038E .dbline 172
038E L51:
038E .dbline 162
038E C501 movw R24,R10
0390 0196 adiw R24,1
0392 5C01 movw R10,R24
0394 L53:
0394 .dbline 162
0394 C501 movw R24,R10
0396 8A3A cpi R24,170
0398 E0E0 ldi R30,0
039A 9E07 cpc R25,R30
039C 08F4 brsh X4
039E CCCF xjmp L50
03A0 X4:
03A0 L52:
03A0 .dbline 173
03A0 ; }
03A0 ; if(dat >= MAX_HZ)//若字库不存在该字则显示空白
03A0 C501 movw R24,R10
03A2 8A3A cpi R24,170
03A4 E0E0 ldi R30,0
03A6 9E07 cpc R25,R30
03A8 18F0 brlo L59
03AA .dbline 174
03AA ; {
03AA .dbline 175
03AA ; i += 2;
03AA 6E5F subi R22,254 ; addi 2
03AC .dbline 176
03AC ; dat = 0;
03AC AA24 clr R10
03AE BB24 clr R11
03B0 .dbline 177
03B0 ; }
03B0 L59:
03B0 .dbline 178
03B0 ; Dis_Chinese(x,y,dat,front,back);
03B0 2C2C mov R2,R12
03B2 3324 clr R3
03B4 3D82 std y+5,R3
03B6 2C82 std y+4,R2
03B8 EA82 std y+2,R14
03BA B982 std y+1,R11
03BC A882 std y+0,R10
03BE 242D mov R18,R4
03C0 8301 movw R16,R6
03C2 0F93 push R16
03C4 1F93 push R17
03C6 2F93 push R18
03C8 F5DE xcall _Dis_Chinese
03CA 4F90 pop R4
03CC 7F90 pop R7
03CE 6F90 pop R6
03D0 .dbline 179
03D0 ; x += 16;
03D0 C301 movw R24,R6
03D2 4096 adiw R24,16
03D4 3C01 movw R6,R24
03D6 .dbline 180
03D6 ; if(x>319)
03D6 8FE3 ldi R24,319
03D8 91E0 ldi R25,1
03DA 8615 cp R24,R6
03DC 9705 cpc R25,R7
03DE 28F4 brsh L61
03E0 .dbline 181
03E0 ; {
03E0 .dbline 182
03E0 ; y += 16;
03E0 842D mov R24,R4
03E2 805F subi R24,240 ; addi 16
03E4 482E mov R4,R24
03E6 .dbline 183
03E6 ; x = 0;
03E6 6624 clr R6
03E8 7724 clr R7
03EA .dbline 184
03EA ; }
03EA L61:
03EA .dbline 185
03EA ; }
03EA L43:
03EA .dbline 186
03EA L40:
03EA .dbline 132
03EA 6417 cp R22,R20
03EC 08F4 brsh X5
03EE 4ACF xjmp L39
03F0 X5:
03F0 .dbline -2
03F0 L35:
03F0 2696 adiw R28,6
03F2 0E940000 xcall pop_gset5
03F6 .dbline 0 ; func end
03F6 0895 ret
03F8 .dbsym r uLen 20 c
03F8 .dbsym r i 22 c
03F8 .dbsym r dat 10 i
03F8 .dbsym r back 12 c
03F8 .dbsym r front 14 c
03F8 .dbsym l font 18 c
03F8 .dbsym l ptr 16 pc
03F8 .dbsym r y 4 c
03F8 .dbsym r x 6 i
03F8 .dbend
03F8 .dbfunc e Dis_Asc_1624 _Dis_Asc_1624 fV
03F8 ; i -> R20
03F8 ; uLen -> R22
03F8 ; dat -> R14,R15
03F8 ; k -> R12
03F8 ; j -> R10
03F8 ; back -> R8
03F8 ; front -> R6
03F8 ; ptr -> y+14
03F8 ; y -> y+12
03F8 ; x -> y+10
.even
03F8 _Dis_Asc_1624::
03F8 0E940000 xcall push_arg4
03FC 0E940000 xcall push_gset5
0400 6888 ldd R6,y+16
0402 8A88 ldd R8,y+18
0404 .dbline -1
0404 .dbline 198
0404 ; }
0404 ; }
0404 ; /* 日期:2005.12.1
0404 ; 编写者:赫树开
0404 ; 功能:显示一个16X24的ASCII字符串
0404 ; 参数: x 为起点x坐标
0404 ; y 为起点y坐标
0404 ; ptr 为字符串内容
0404 ; front 是字符前景色
0404 ; back 是字符串背景色
0404 ; */
0404 ; void Dis_Asc_1624(unsigned int x,unsigned char y,unsigned char *ptr,unsigned char front,unsigned char back)
0404 ; {
0404 .dbline 199
0404 ; unsigned char uLen,i=0;
0404 4427 clr R20
0406 .dbline 202
0406 ; unsigned char j,k;
0406 ; unsigned int dat;
0406 ; uLen=0;
0406 6627 clr R22
0408 01C0 xjmp L65
040A L64:
040A .dbline 203
040A .dbline 203
040A 6395 inc R22
040C .dbline 203
040C L65:
040C .dbline 203
040C ; while ( (unsigned char)ptr[uLen] >= 0x10 ){uLen++;}; //探测字串长度
040C E62F mov R30,R22
040E FF27 clr R31
0410 0E84 ldd R0,y+14
0412 1F84 ldd R1,y+15
0414 E00D add R30,R0
0416 F11D adc R31,R1
0418 8081 ldd R24,z+0
041A 8031 cpi R24,16
041C B0F7 brsh L64
041E .dbline 203
041E .dbline 205
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -