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

📄 lcd_back.lis

📁 AVR单片机C语言程序设计实例精粹
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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

⌨️ 快捷键说明

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