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

📄 1335.lis

📁 AVR单片机
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01B0           ; }
 01B0           ; 
 01B0           ; 
 01B0           ; /***********************************************************************
 01B0           ; Show or hide cursor. 0=Hide, 1=Show.
 01B0           ; ***********************************************************************/
 01B0           ; void lcd_show_cursor(unsigned char show)
 01B0           ; {
 01B0                   .dbline 232
 01B0           ;   lcd_write_command(0x59); 
 01B0 09E5              ldi R16,89
 01B2 3BDF              xcall _lcd_write_command
 01B4                   .dbline 233
 01B4           ;   if (show == 0) lcd_write_data(0x14);
 01B4 AA20              tst R10
 01B6 19F4              brne L29
 01B8           X5:
 01B8                   .dbline 233
 01B8 04E1              ldi R16,20
 01BA 3CDF              xcall _lcd_write_data
 01BC 02C0              xjmp L30
 01BE           L29:
 01BE                   .dbline 234
 01BE           ;   else lcd_write_data(0x16);
 01BE 06E1              ldi R16,22
 01C0 39DF              xcall _lcd_write_data
 01C2           L30:
 01C2                   .dbline -2
 01C2           L28:
 01C2                   .dbline 0 ; func end
 01C2 A990              ld R10,y+
 01C4 0895              ret
 01C6                   .dbsym r show 10 c
 01C6                   .dbend
 01C6                   .dbfunc e lcd_clear_graphics _lcd_clear_graphics fV
 01C6           ;              i -> R20,R21
                        .even
 01C6           _lcd_clear_graphics::
 01C6 4A93              st -y,R20
 01C8 5A93              st -y,R21
 01CA                   .dbline -1
 01CA                   .dbline 242
 01CA           ; }
 01CA           ; 
 01CA           ; 
 01CA           ; /***********************************************************************
 01CA           ; Clears the graphic layer / screen.
 01CA           ; ***********************************************************************/
 01CA           ; void lcd_clear_graphics(void)
 01CA           ; {
 01CA                   .dbline 244
 01CA           ;   int i;
 01CA           ;   lcd_write_command(0x46);
 01CA 06E4              ldi R16,70
 01CC 2EDF              xcall _lcd_write_command
 01CE                   .dbline 245
 01CE           ;   lcd_write_data(0x00);
 01CE 0027              clr R16
 01D0 31DF              xcall _lcd_write_data
 01D2                   .dbline 246
 01D2           ;   lcd_write_data(0x10);
 01D2 00E1              ldi R16,16
 01D4 2FDF              xcall _lcd_write_data
 01D6                   .dbline 247
 01D6           ;   lcd_write_command(0x42); 
 01D6 02E4              ldi R16,66
 01D8 28DF              xcall _lcd_write_command
 01DA                   .dbline 248
 01DA           ;   for (i=0; i<((LCD_X_SIZE/8)*LCD_Y_SIZE); i++) lcd_write_data(0x00);
 01DA 4427              clr R20
 01DC 5527              clr R21
 01DE           L32:
 01DE                   .dbline 248
 01DE 0027              clr R16
 01E0 29DF              xcall _lcd_write_data
 01E2           L33:
 01E2                   .dbline 248
 01E2 4F5F              subi R20,255  ; offset = 1
 01E4 5F4F              sbci R21,255
 01E6                   .dbline 248
 01E6 4038              cpi R20,128
 01E8 E5E2              ldi R30,37
 01EA 5E07              cpc R21,R30
 01EC C4F3              brlt L32
 01EE           X6:
 01EE                   .dbline 249
 01EE           ;   lcd_write_command(0x46); 
 01EE 06E4              ldi R16,70
 01F0 1CDF              xcall _lcd_write_command
 01F2                   .dbline 250
 01F2           ;   lcd_write_data(0x00);
 01F2 0027              clr R16
 01F4 1FDF              xcall _lcd_write_data
 01F6                   .dbline 251
 01F6           ;   lcd_write_data(0x10);
 01F6 00E1              ldi R16,16
 01F8 1DDF              xcall _lcd_write_data
 01FA                   .dbline -2
 01FA           L31:
 01FA                   .dbline 0 ; func end
 01FA 5991              ld R21,y+
 01FC 4991              ld R20,y+
 01FE 0895              ret
 0200                   .dbsym r i 20 I
 0200                   .dbend
 0200                   .dbfunc e lcd_pixel _lcd_pixel fV
 0200           ;         Offset -> R20
 0200           ;           byte -> R10
 0200           ;           high -> R12
 0200           ;            low -> R14
 0200           ;        Address -> R22,R23
 0200           ;           show -> y+10
 0200           ;              y -> R22,R23
 0200           ;              x -> R20,R21
                        .even
 0200           _lcd_pixel::
 0200 0E940000          xcall push_xgsetF0FC
 0204 B901              movw R22,R18
 0206 A801              movw R20,R16
 0208                   .dbline -1
 0208                   .dbline 260
 0208           ; }
 0208           ; 
 0208           ; 
 0208           ; /***********************************************************************
 0208           ; Write pixel data to the display at specified position.
 0208           ; Set show to 1 to draw pixel, set to 0 to hide pixel.
 0208           ; ***********************************************************************/
 0208           ; void lcd_pixel(int x, int y, unsigned char show)
 0208           ; {
 0208                   .dbline 266
 0208           ;   unsigned int Address;
 0208           ;   unsigned char Offset;
 0208           ;   unsigned char low;
 0208           ;   unsigned char high;
 0208           ;   unsigned char byte;
 0208           ;   x--;
 0208 4150              subi R20,1
 020A 5040              sbci R21,0
 020C                   .dbline 267
 020C           ;   y--;
 020C 6150              subi R22,1
 020E 7040              sbci R23,0
 0210                   .dbline 268
 0210           ;   Address = (y * (LCD_X_SIZE/8)) + (x / 8);
 0210 28E0              ldi R18,8
 0212 30E0              ldi R19,0
 0214 8A01              movw R16,R20
 0216 0E940000          xcall div16s
 021A 1801              movw R2,R16
 021C 08E2              ldi R16,40
 021E 10E0              ldi R17,0
 0220 9B01              movw R18,R22
 0222 0E940000          xcall empy16s
 0226 B801              movw R22,R16
 0228 620D              add R22,R2
 022A 731D              adc R23,R3
 022C                   .dbline 269
 022C           ;   Offset = x - ((x / 8) * 8);
 022C 28E0              ldi R18,8
 022E 30E0              ldi R19,0
 0230 8A01              movw R16,R20
 0232 0E940000          xcall div16s
 0236 1801              movw R2,R16
 0238 220C              lsl R2
 023A 331C              rol R3
 023C 220C              lsl R2
 023E 331C              rol R3
 0240 220C              lsl R2
 0242 331C              rol R3
 0244 4219              sub R20,R2
 0246 5309              sbc R21,R3
 0248                   .dbline 270
 0248           ;   low = (unsigned char) (Address & 0x00ff);
 0248 CB01              movw R24,R22
 024A 9070              andi R25,0
 024C E82E              mov R14,R24
 024E                   .dbline 271
 024E           ;   high = (unsigned char) (((Address & 0xff00) >> 8) + 0x10);
 024E CB01              movw R24,R22
 0250 8070              andi R24,0
 0252 892F              mov R24,R25
 0254 9927              clr R25
 0256 4096              adiw R24,16
 0258 C82E              mov R12,R24
 025A                   .dbline 272
 025A           ;   lcd_write_command(0x46);   
 025A 06E4              ldi R16,70
 025C E6DE              xcall _lcd_write_command
 025E                   .dbline 273
 025E           ;   lcd_write_data(low);       
 025E 0E2D              mov R16,R14
 0260 E9DE              xcall _lcd_write_data
 0262                   .dbline 274
 0262           ;   lcd_write_data(high);      
 0262 0C2D              mov R16,R12
 0264 E7DE              xcall _lcd_write_data
 0266                   .dbline 275
 0266           ;   lcd_write_command(0x43);   
 0266 03E4              ldi R16,67
 0268 E0DE              xcall _lcd_write_command
 026A                   .dbline 276
 026A           ;   byte = lcd_read_data();    
 026A E9DE              xcall _lcd_read_data
 026C A02E              mov R10,R16
 026E                   .dbline 277
 026E           ;   if (show != 0) byte |= (0x80 >> Offset);
 026E 0A84              ldd R0,y+10
 0270 0020              tst R0
 0272 61F0              breq L37
 0274           X7:
 0274                   .dbline 277
 0274 242F              mov R18,R20
 0276 3327              clr R19
 0278 00E8              ldi R16,128
 027A 10E0              ldi R17,0
 027C 0E940000          xcall asr16
 0280 2A2C              mov R2,R10
 0282 3324              clr R3
 0284 202A              or R2,R16
 0286 312A              or R3,R17
 0288 A22C              mov R10,R2
 028A 0EC0              xjmp L38
 028C           L37:
 028C                   .dbline 278
 028C           ;   else byte &= (~(0x80 >> Offset));
 028C 242F              mov R18,R20
 028E 3327              clr R19
 0290 00E8              ldi R16,128
 0292 10E0              ldi R17,0
 0294 0E940000          xcall asr16
 0298 1801              movw R2,R16
 029A 2094              com R2
 029C 3094              com R3
 029E 4A2C              mov R4,R10
 02A0 5524              clr R5
 02A2 4220              and R4,R2
 02A4 5320              and R5,R3
 02A6 A42C              mov R10,R4
 02A8           L38:
 02A8                   .dbline 279
 02A8           ;   lcd_write_command(0x46); 
 02A8 06E4              ldi R16,70
 02AA BFDE              xcall _lcd_write_command
 02AC                   .dbline 280
 02AC           ;   lcd_write_data(low);    
 02AC 0E2D              mov R16,R14
 02AE C2DE              xcall _lcd_write_data
 02B0                   .dbline 281
 02B0           ;   lcd_write_data(high);   
 02B0 0C2D              mov R16,R12
 02B2 C0DE              xcall _lcd_write_data
 02B4                   .dbline 282
 02B4           ;   lcd_write_command(0x42);
 02B4 02E4              ldi R16,66
 02B6 B9DE              xcall _lcd_write_command
 02B8                   .dbline 283
 02B8           ;   lcd_write_data(byte); 
 02B8 0A2D              mov R16,R10
 02BA BCDE              xcall _lcd_write_data
 02BC                   .dbline -2
 02BC           L36:
 02BC                   .dbline 0 ; func end
 02BC 0C940000          xjmp pop_xgsetF0FC
 02C0                   .dbsym r Offset 20 c
 02C0                   .dbsym r byte 10 c
 02C0                   .dbsym r high 12 c
 02C0                   .dbsym r low 14 c
 02C0                   .dbsym r Address 22 i
 02C0                   .dbsym l show 10 c
 02C0                   .dbsym r y 22 I
 02C0                   .dbsym r x 20 I
 02C0                   .dbend
 02C0                   .dbfunc e lcd_rectangle _lcd_rectangle fV
 02C0           ;              i -> R20,R21
 02C0           ;           show -> R10
 02C0           ;             y2 -> R12,R13
 02C0           ;             x2 -> R14,R15
 02C0           ;             y1 -> y+11
 02C0           ;             x1 -> R22,R23
                        .even
 02C0           _lcd_rectangle::
 02C0 3A93              st -y,r19
 02C2 2A93              st -y,r18
 02C4 0E940000          xcall push_xgsetF0FC
 02C8 B801              movw R22,R16
 02CA 2197              sbiw R28,1
 02CC ED84              ldd R14,y+13
 02CE FE84              ldd R15,y+14
 02D0 CF84              ldd R12,y+15
 02D2 D888              ldd R13,y+16
 02D4 A988              ldd R10,y+17
 02D6                   .dbline -1
 02D6                   .dbline 292
 02D6           ; }
 02D6           ; 
 02D6           ; 
 02D6           ; /***********************************************************************
 02D6           ; Draws a rectangle from x1,y1 to x2,y2.
 02D6           ; Set show to 1 to draw pixel, set to 0 to hide pixel.
 02D6           ; ***********************************************************************/
 02D6           ; void lcd_rectangle(int x1, int y1, int x2, int y2, unsigned char show)
 02D6           ; {
 02D6                   .dbline 294
 02D6           ;   int i;
 02D6           ;   for (i=x1; i<=x2; i++) lcd_pixel(i,y1,show);
 02D6 AB01              movw R20,R22
 02D8 07C0              xjmp L43
 02DA           L40:
 02DA                   .dbline 294
 02DA A882              std y+0,R10
 02DC 2B85              ldd R18,y+11
 02DE 3C85              ldd R19,y+12
 02E0 8A01              movw R16,R20
 02E2 8EDF              xcall _lcd_pixel
 02E4           L41:
 02E4                   .dbline 294
 02E4 4F5F              subi R20,255  ; offset = 1
 02E6 5F4F              sbci R21,255
 02E8           L43:
 02E8                   .dbline 294
 02E8 E416              cp R14,R20
 02EA F506              cpc R15,R21
 02EC B4F7              brge L40
 02EE           X8:
 02EE                   .dbline 295
 02EE           ;   for (i=x1; i<=x2; i++) lcd_pixel(i,y2,show); 
 02EE AB01              movw R20,R22
 02F0 06C0              xjmp L47

⌨️ 快捷键说明

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