📄 lcd.lis
字号:
0246 .dbline 164
0246 ; {
0246 .dbline 165
0246 ; buffer_h[83] = china_char[i/12][j];
0246 1CE0 ldi R17,12
0248 042F mov R16,R20
024A 0E940000 xcall div8u
024E 88E1 ldi R24,24
0250 809F mul R24,R16
0252 1001 movw R2,R0
0254 80E0 ldi R24,<_china_char
0256 90E0 ldi R25,>_china_char
0258 280E add R2,R24
025A 391E adc R3,R25
025C E62F mov R30,R22
025E FF27 clr R31
0260 E20D add R30,R2
0262 F31D adc R31,R3
0264 E491 lpm R30,Z
0266 DE01 movw R26,R28
0268 AD5A subi R26,173 ; addi 83
026A BF4F sbci R27,255
026C EC93 st x,R30
026E .dbline 166
026E ; buffer_l[83] = china_char[i/12][j+12];
026E 1CE0 ldi R17,12
0270 042F mov R16,R20
0272 0E940000 xcall div8u
0276 88E1 ldi R24,24
0278 809F mul R24,R16
027A 1001 movw R2,R0
027C 80E0 ldi R24,<_china_char
027E 90E0 ldi R25,>_china_char
0280 280E add R2,R24
0282 391E adc R3,R25
0284 E62F mov R30,R22
0286 FF27 clr R31
0288 3C96 adiw R30,12
028A E20D add R30,R2
028C F31D adc R31,R3
028E E491 lpm R30,Z
0290 DE01 movw R26,R28
0292 A955 subi R26,89 ; addi 167
0294 BF4F sbci R27,255
0296 EC93 st x,R30
0298 .dbline 167
0298 ; j++;
0298 6395 inc R22
029A .dbline 168
029A ; if (j==12)
029A 6C30 cpi R22,12
029C 09F4 brne L45
029E .dbline 169
029E ; j=0;
029E 6627 clr R22
02A0 L45:
02A0 .dbline 170
02A0 ; for (n=0; n<83; n++)
02A0 AA24 clr R10
02A2 1EC0 xjmp L50
02A4 L47:
02A4 .dbline 171
02A4 .dbline 172
02A4 CE01 movw R24,R28
02A6 0196 adiw R24,1
02A8 EA2D mov R30,R10
02AA FF27 clr R31
02AC E80F add R30,R24
02AE F91F adc R31,R25
02B0 2080 ldd R2,z+0
02B2 CE01 movw R24,R28
02B4 EA2D mov R30,R10
02B6 FF27 clr R31
02B8 E80F add R30,R24
02BA F91F adc R31,R25
02BC 2082 std z+0,R2
02BE .dbline 173
02BE CE01 movw R24,R28
02C0 8B5A subi R24,171 ; offset = 85
02C2 9F4F sbci R25,255
02C4 EA2D mov R30,R10
02C6 FF27 clr R31
02C8 E80F add R30,R24
02CA F91F adc R31,R25
02CC 2080 ldd R2,z+0
02CE CE01 movw R24,R28
02D0 8C5A subi R24,172 ; offset = 84
02D2 9F4F sbci R25,255
02D4 EA2D mov R30,R10
02D6 FF27 clr R31
02D8 E80F add R30,R24
02DA F91F adc R31,R25
02DC 2082 std z+0,R2
02DE .dbline 174
02DE L48:
02DE .dbline 170
02DE A394 inc R10
02E0 L50:
02E0 .dbline 170
02E0 8A2D mov R24,R10
02E2 8335 cpi R24,83
02E4 F8F2 brlo L47
02E6 .dbline 175
02E6 ; {
02E6 ; buffer_h[n]=buffer_h[n+1];
02E6 ; buffer_l[n]=buffer_l[n+1];
02E6 ; }
02E6 ; LCD_set_XY(X,Y);
02E6 2E2D mov R18,R14
02E8 FE01 movw R30,R28
02EA EE54 subi R30,78 ; addi 178
02EC FF4F sbci R31,255
02EE 0081 ldd R16,z+0
02F0 FFDE xcall _LCD_set_XY
02F2 .dbline 176
02F2 ; for (n=0; n<83; n++)
02F2 AA24 clr R10
02F4 09C0 xjmp L56
02F6 L53:
02F6 .dbline 177
02F6 .dbline 178
02F6 21E0 ldi R18,1
02F8 CE01 movw R24,R28
02FA EA2D mov R30,R10
02FC FF27 clr R31
02FE E80F add R30,R24
0300 F91F adc R31,R25
0302 0081 ldd R16,z+0
0304 7DDE xcall _LCD_write_byte
0306 .dbline 179
0306 L54:
0306 .dbline 176
0306 A394 inc R10
0308 L56:
0308 .dbline 176
0308 8A2D mov R24,R10
030A 8335 cpi R24,83
030C A0F3 brlo L53
030E .dbline 180
030E ; {
030E ; LCD_write_byte(buffer_h[n],1);
030E ; }
030E ; LCD_set_XY(X,Y+1);
030E 2E2D mov R18,R14
0310 2F5F subi R18,255 ; addi 1
0312 FE01 movw R30,R28
0314 EE54 subi R30,78 ; addi 178
0316 FF4F sbci R31,255
0318 0081 ldd R16,z+0
031A EADE xcall _LCD_set_XY
031C .dbline 181
031C ; for (n=0; n<83; n++)
031C AA24 clr R10
031E 0BC0 xjmp L60
0320 L57:
0320 .dbline 182
0320 .dbline 183
0320 21E0 ldi R18,1
0322 CE01 movw R24,R28
0324 8C5A subi R24,172 ; offset = 84
0326 9F4F sbci R25,255
0328 EA2D mov R30,R10
032A FF27 clr R31
032C E80F add R30,R24
032E F91F adc R31,R25
0330 0081 ldd R16,z+0
0332 66DE xcall _LCD_write_byte
0334 .dbline 184
0334 L58:
0334 .dbline 181
0334 A394 inc R10
0336 L60:
0336 .dbline 181
0336 8A2D mov R24,R10
0338 8335 cpi R24,83
033A 90F3 brlo L57
033C .dbline 185
033C 0C2D mov R16,R12
033E 1127 clr R17
0340 0E940000 xcall _delay_nms
0344 .dbline 186
0344 L40:
0344 .dbline 163
0344 4395 inc R20
0346 L42:
0346 .dbline 163
0346 4039 cpi R20,144
0348 08F4 brsh X1
034A 7DCF xjmp L39
034C X1:
034C .dbline -2
034C L36:
034C EF96 adiw R28,63
034E EF96 adiw R28,63
0350 AA96 adiw R28,42 ; offset = 168
0352 0E940000 xcall pop_gset5
0356 2496 adiw R28,4
0358 .dbline 0 ; func end
0358 0895 ret
035A .dbsym r i 20 c
035A .dbsym r j 22 c
035A .dbsym l buffer_l 84 A[84:84]c
035A .dbsym l buffer_h 0 A[84:84]c
035A .dbsym r n 10 c
035A .dbsym r T 12 c
035A .dbsym r Y 14 c
035A .dbsym l X 178 c
035A .dbend
035A .dbfunc e LCD_draw_map _LCD_draw_map fV
035A ; row -> R20
035A ; n -> R22,R23
035A ; i -> R14,R15
035A ; Pix_y -> y+18
035A ; Pix_x -> R10
035A ; map -> R12,R13
035A ; Y -> y+12
035A ; X -> y+10
.even
035A _LCD_draw_map::
035A 0E940000 xcall push_arg4
035E 0E940000 xcall push_gset5
0362 CE84 ldd R12,y+14
0364 DF84 ldd R13,y+15
0366 A888 ldd R10,y+16
0368 .dbline -1
0368 .dbline 200
0368 ; {
0368 ; LCD_write_byte(buffer_l[n],1);
0368 ; }
0368 ; delay_nms(T);
0368 ; }
0368 ; }
0368 ;
0368 ; /*-----------------------------------------------------------------------
0368 ; LCD_draw_map: 位图绘制函数
0368 ; 输入参数:X、Y:位图绘制的起始X、Y坐标;
0368 ; *map:位图点阵数据;
0368 ; Pix_x:位图像素(长)
0368 ; Pix_y:位图像素(宽)
0368 ; 编写日期:2004-8-13
0368 ; 最后修改日期:2006-10-23
0368 ; -----------------------------------------------------------------------*/
0368 ; void LCD_draw_map(unsigned char X,unsigned char Y,unsigned char *map,
0368 ; unsigned char Pix_x,unsigned char Pix_y)
0368 ; {
0368 .dbline 203
0368 ; unsigned int i,n;
0368 ; unsigned char row;
0368 ; if (Pix_y%8==0)
0368 18E0 ldi R17,8
036A 0A89 ldd R16,y+18
036C 0E940000 xcall mod8u
0370 0023 tst R16
0372 29F4 brne L62
0374 .dbline 204
0374 ; row=Pix_y/8;//计算位图所占行数
0374 4A89 ldd R20,y+18
0376 4695 lsr R20
0378 4695 lsr R20
037A 4695 lsr R20
037C 05C0 xjmp L63
037E L62:
037E .dbline 206
037E ; else
037E ; row=Pix_y/8+1;
037E 4A89 ldd R20,y+18
0380 4695 lsr R20
0382 4695 lsr R20
0384 4695 lsr R20
0386 4F5F subi R20,255 ; addi 1
0388 L63:
0388 .dbline 207
0388 ; for (n=0;n<row;n++)
0388 6627 clr R22
038A 7727 clr R23
038C 25C0 xjmp L67
038E L64:
038E .dbline 208
038E ; {
038E .dbline 209
038E ; LCD_set_XY(X,Y);
038E 2C85 ldd R18,y+12
0390 0A85 ldd R16,y+10
0392 AEDE xcall _LCD_set_XY
0394 .dbline 210
0394 ; for(i=0; i<Pix_x; i++)
0394 EE24 clr R14
0396 FF24 clr R15
0398 15C0 xjmp L71
039A L68:
039A .dbline 211
039A .dbline 212
039A 21E0 ldi R18,1
039C 2A2C mov R2,R10
039E 3324 clr R3
03A0 2F93 push R18
03A2 3F93 push R19
03A4 9101 movw R18,R2
03A6 8B01 movw R16,R22
03A8 0E940000 xcall empy16s
03AC 3F91 pop R19
03AE 2F91 pop R18
03B0 F701 movw R30,R14
03B2 E00F add R30,R16
03B4 F11F adc R31,R17
03B6 EC0D add R30,R12
03B8 FD1D adc R31,R13
03BA 0081 ldd R16,z+0
03BC 21DE xcall _LCD_write_byte
03BE .dbline 213
03BE L69:
03BE .dbline 210
03BE C701 movw R24,R14
03C0 0196 adiw R24,1
03C2 7C01 movw R14,R24
03C4 L71:
03C4 .dbline 210
03C4 2A2C mov R2,R10
03C6 3324 clr R3
03C8 E214 cp R14,R2
03CA F304 cpc R15,R3
03CC 30F3 brlo L68
03CE .dbline 214
03CE 0C84 ldd R0,y+12
03D0 0394 inc R0
03D2 0C86 std y+12,R0
03D4 .dbline 215
03D4 L65:
03D4 .dbline 207
03D4 6F5F subi R22,255 ; offset = 1
03D6 7F4F sbci R23,255
03D8 L67:
03D8 .dbline 207
03D8 242E mov R2,R20
03DA 3324 clr R3
03DC 6215 cp R22,R2
03DE 7305 cpc R23,R3
03E0 B0F2 brlo L64
03E2 .dbline -2
03E2 L61:
03E2 0E940000 xcall pop_gset5
03E6 2496 adiw R28,4
03E8 .dbline 0 ; func end
03E8 0895 ret
03EA .dbsym r row 20 c
03EA .dbsym r n 22 i
03EA .dbsym r i 14 i
03EA .dbsym l Pix_y 18 c
03EA .dbsym r Pix_x 10 c
03EA .dbsym r map 12 pc
03EA .dbsym l Y 12 c
03EA .dbsym l X 10 c
03EA .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -