?? lcd_back.lis
字號:
028C C101 movw R24,R2
028E 0196 adiw R24,1
0290 6C01 movw R12,R24
0292 F101 movw R30,R2
0294 E491 lpm R30,Z
0296 E883 std y+0,R30
0298 242F mov R18,R20
029A 062F mov R16,R22
029C 72D0 xcall _LCD_Write_Data
029E .dbline 351
029E L61:
029E .dbline 346
029E A394 inc R10
02A0 L63:
02A0 .dbline 346
02A0 8A2D mov R24,R10
02A2 8031 cpi R24,16
02A4 50F3 brlo L60
02A6 .dbline 352
02A6 L54:
02A6 .dbline -2
02A6 .dbline 353
02A6 ; {
02A6 ; x_address = (x << 1) + 1;
02A6 ; y_address = (y << 3) + i;
02A6 ; LCD_Write_Data(x_address,y_address,*disp++);
02A6 ; }
02A6 ; }
02A6 ; }
02A6 L53:
02A6 2196 adiw R28,1
02A8 0E940000 xcall pop_gset5
02AC 2496 adiw R28,4
02AE .dbline 0 ; func end
02AE 0895 ret
02B0 .dbsym r y_address 20 c
02B0 .dbsym r x_address 22 c
02B0 .dbsym r i 10 c
02B0 .dbsym r disp 12 pkc
02B0 .dbsym r y 14 c
02B0 .dbsym l x 11 c
02B0 .dbend
02B0 .dbfunc e LCD_Write_Picture _LCD_Write_Picture fV
02B0 ; x_address -> R20
02B0 ; y_address -> R14
02B0 ; pdata -> R22,R23
02B0 ; y_length -> R10
02B0 ; x_length -> R12
02B0 ; y1 -> y+11
02B0 ; x1 -> R14
.even
02B0 _LCD_Write_Picture::
02B0 3A93 st -y,r19
02B2 2A93 st -y,r18
02B4 0E940000 xcall push_gset5
02B8 E02E mov R14,R16
02BA 2197 sbiw R28,1
02BC CD84 ldd R12,y+13
02BE AF84 ldd R10,y+15
02C0 6989 ldd R22,y+17
02C2 7A89 ldd R23,y+18
02C4 .dbline -1
02C4 .dbline 357
02C4 ;
02C4 ; //x1 行 y列
02C4 ; void LCD_Write_Picture(INT8U x1,INT8U y1,INT8U x_length,INT8U y_length,const INT8U *pdata)
02C4 ; {
02C4 .dbline 360
02C4 ; INT8U x_address;
02C4 ; INT8U y_address;
02C4 ; for(x_address = x1;x_address <= (x_length >> 3) - 1;x_address++)
02C4 4E2D mov R20,R14
02C6 11C0 xjmp L68
02C8 L65:
02C8 .dbline 361
02C8 ; {
02C8 .dbline 362
02C8 ; for(y_address = y1;y_address < y1 + y_length;y_address++)
02C8 EB84 ldd R14,y+11
02CA 0AC0 xjmp L72
02CC L69:
02CC .dbline 363
02CC .dbline 364
02CC 1B01 movw R2,R22
02CE 6F5F subi R22,255 ; offset = 1
02D0 7F4F sbci R23,255
02D2 F101 movw R30,R2
02D4 E491 lpm R30,Z
02D6 E883 std y+0,R30
02D8 2E2D mov R18,R14
02DA 042F mov R16,R20
02DC 52D0 xcall _LCD_Write_Data
02DE .dbline 365
02DE L70:
02DE .dbline 362
02DE E394 inc R14
02E0 L72:
02E0 .dbline 362
02E0 2B84 ldd R2,y+11
02E2 2A0C add R2,R10
02E4 E214 cp R14,R2
02E6 90F3 brlo L69
02E8 .dbline 366
02E8 L66:
02E8 .dbline 360
02E8 4395 inc R20
02EA L68:
02EA .dbline 360
02EA 8C2D mov R24,R12
02EC 8695 lsr R24
02EE 8695 lsr R24
02F0 8695 lsr R24
02F2 8150 subi R24,1
02F4 8417 cp R24,R20
02F6 40F7 brsh L65
02F8 .dbline -2
02F8 .dbline 367
02F8 ; {
02F8 ; LCD_Write_Data(x_address,y_address,*pdata++);
02F8 ; }
02F8 ; }
02F8 ; }
02F8 L64:
02F8 2196 adiw R28,1
02FA 0E940000 xcall pop_gset5
02FE 2296 adiw R28,2
0300 .dbline 0 ; func end
0300 0895 ret
0302 .dbsym r x_address 20 c
0302 .dbsym r y_address 14 c
0302 .dbsym r pdata 22 pkc
0302 .dbsym r y_length 10 c
0302 .dbsym r x_length 12 c
0302 .dbsym l y1 11 c
0302 .dbsym r x1 14 c
0302 .dbend
0302 .dbfunc e LCD_Write_Dot _LCD_Write_Dot fV
0302 ; y_address -> R22
0302 ; x_address -> R20
0302 ; data -> R10
0302 ; y -> R14
0302 ; x -> R12
.even
0302 _LCD_Write_Dot::
0302 0E940000 xcall push_gset5
0306 E22E mov R14,R18
0308 C02E mov R12,R16
030A 2197 sbiw R28,1
030C .dbline -1
030C .dbline 374
030C .dbline 376
030C AA24 clr R10
030E .dbline 377
030E 8C2D mov R24,R12
0310 8034 cpi R24,64
0312 B0F4 brsh L74
0314 8E2D mov R24,R14
0316 8038 cpi R24,128
0318 98F4 brsh L74
031A .dbline 378
031A .dbline 379
031A 4C2D mov R20,R12
031C 4695 lsr R20
031E 4695 lsr R20
0320 4695 lsr R20
0322 .dbline 380
0322 682F mov R22,R24
0324 .dbline 382
0324 18E0 ldi R17,8
0326 0C2D mov R16,R12
0328 0E940000 xcall mod8u
032C 102F mov R17,R16
032E 01E0 ldi R16,1
0330 0E940000 xcall lsl8
0334 2A2C mov R2,R10
0336 202A or R2,R16
0338 2882 std y+0,R2
033A 262F mov R18,R22
033C 042F mov R16,R20
033E 21D0 xcall _LCD_Write_Data
0340 .dbline 383
0340 L74:
0340 .dbline -2
0340 .dbline 384
0340 ;
0340 ; //=========================END OF FILE=========================//
0340 ;
0340 ;
0340 ;
0340 ; void LCD_Write_Dot(INT8U x,INT8U y)
0340 ; {
0340 ; INT8U x_address,y_address;
0340 ; INT8U data = 0;
0340 ; if((x < 64) && (y < 128))
0340 ; {
0340 ; x_address = x >> 3;
0340 ; y_address = y;
0340 ; //data = LCD_Read_Data(x_address,y_address);
0340 ; LCD_Write_Data(x_address,y_address,data | (1 << (x % 8)));
0340 ; }
0340 ; }
0340 L73:
0340 2196 adiw R28,1
0342 0E940000 xcall pop_gset5
0346 .dbline 0 ; func end
0346 0895 ret
0348 .dbsym r y_address 22 c
0348 .dbsym r x_address 20 c
0348 .dbsym r data 10 c
0348 .dbsym r y 14 c
0348 .dbsym r x 12 c
0348 .dbend
0348 .dbfunc e LCD_Read_Data _LCD_Read_Data fc
0348 ; data -> R20
0348 ; y -> R20
0348 ; x -> R22
.even
0348 _LCD_Read_Data::
0348 0E940000 xcall push_gset2
034C 422F mov R20,R18
034E 602F mov R22,R16
0350 .dbline -1
0350 .dbline 387
0350 ;
0350 ; INT8U LCD_Read_Data(INT8U x,INT8U y)
0350 ; {
0350 .dbline 389
0350 ; INT8U data;
0350 ; if(y < 64)
0350 4034 cpi R20,64
0352 48F4 brsh L77
0354 .dbline 390
0354 ; {
0354 .dbline 391
0354 ; Set_CS1(1);
0354 01E0 ldi R16,1
0356 7CDE xcall _Set_CS1
0358 .dbline 392
0358 ; Set_CS2(0);
0358 0027 clr R16
035A 74DE xcall _Set_CS2
035C .dbline 393
035C ; LCD_Command_Set_X(x);
035C 062F mov R16,R22
035E ACDE xcall _LCD_Command_Set_X
0360 .dbline 394
0360 ; LCD_Command_Set_Y(y);
0360 042F mov R16,R20
0362 BDDE xcall _LCD_Command_Set_Y
0364 .dbline 395
0364 ; }
0364 09C0 xjmp L78
0366 L77:
0366 .dbline 397
0366 ; else
0366 ; {
0366 .dbline 398
0366 ; Set_CS1(0);
0366 0027 clr R16
0368 73DE xcall _Set_CS1
036A .dbline 399
036A ; Set_CS2(1);
036A 01E0 ldi R16,1
036C 6BDE xcall _Set_CS2
036E .dbline 400
036E ; LCD_Command_Set_X(x);
036E 062F mov R16,R22
0370 A3DE xcall _LCD_Command_Set_X
0372 .dbline 401
0372 ; LCD_Command_Set_Y(y - 64);
0372 042F mov R16,R20
0374 0054 subi R16,64
0376 B3DE xcall _LCD_Command_Set_Y
0378 .dbline 402
0378 ; }
0378 L78:
0378 .dbline 403
0378 ; data = Read_Byte();
0378 D7DE xcall _Read_Byte
037A 402F mov R20,R16
037C .dbline 404
037C ; return(data);
037C .dbline -2
037C L76:
037C 0E940000 xcall pop_gset2
0380 .dbline 0 ; func end
0380 0895 ret
0382 .dbsym r data 20 c
0382 .dbsym r y 20 c
0382 .dbsym r x 22 c
0382 .dbend
0382 .dbfunc e LCD_Write_Data _LCD_Write_Data fV
0382 ; data -> y+4
0382 ; y -> R20
0382 ; x -> R22
.even
0382 _LCD_Write_Data::
0382 0E940000 xcall push_gset2
0386 422F mov R20,R18
0388 602F mov R22,R16
038A .dbline -1
038A .dbline 408
038A ; }
038A ;
038A ; void LCD_Write_Data(INT8U x,INT8U y,INT8U data)
038A ; {
038A .dbline 409
038A ; if(y < 64)
038A 4034 cpi R20,64
038C 48F4 brsh L80
038E .dbline 410
038E ; {
038E .dbline 411
038E ; Set_CS1(1);
038E 01E0 ldi R16,1
0390 5FDE xcall _Set_CS1
0392 .dbline 412
0392 ; Set_CS2(0);
0392 0027 clr R16
0394 57DE xcall _Set_CS2
0396 .dbline 413
0396 ; LCD_Command_Set_X(x);
0396 062F mov R16,R22
0398 8FDE xcall _LCD_Command_Set_X
039A .dbline 414
039A ; LCD_Command_Set_Y(y);
039A 042F mov R16,R20
039C A0DE xcall _LCD_Command_Set_Y
039E .dbline 415
039E ; }
039E 09C0 xjmp L81
03A0 L80:
03A0 .dbline 417
03A0 ; else
03A0 ; {
03A0 .dbline 418
03A0 ; Set_CS1(0);
03A0 0027 clr R16
03A2 56DE xcall _Set_CS1
03A4 .dbline 419
03A4 ; Set_CS2(1);
03A4 01E0 ldi R16,1
03A6 4EDE xcall _Set_CS2
03A8 .dbline 420
03A8 ; LCD_Command_Set_X(x);
03A8 062F mov R16,R22
03AA 86DE xcall _LCD_Command_Set_X
03AC .dbline 421
03AC ; LCD_Command_Set_Y(y - 64);
03AC 042F mov R16,R20
03AE 0054 subi R16,64
03B0 96DE xcall _LCD_Command_Set_Y
03B2 .dbline 422
03B2 ; }
03B2 L81:
03B2 .dbline 423
03B2 ; LCD_Command_WriteByte(data);
03B2 0C81 ldd R16,y+4
03B4 A7DE xcall _LCD_Command_WriteByte
03B6 .dbline -2
03B6 .dbline 424
03B6 ; }
03B6 L79:
03B6 0E940000 xcall pop_gset2
03BA .dbline 0 ; func end
03BA 0895 ret
03BC .dbsym l data 4 c
03BC .dbsym r y 20 c
03BC .dbsym r x 22 c
03BC .dbend
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -