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

📄 3310_5110lcd.lis

📁 5110综合演示 变成结构 流程 头文件
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0266 FF4F              sbci R31,255
 0268 2081              ldd R18,z+0
 026A FE01              movw R30,R28
 026C EE54              subi R30,78  ; addi 178
 026E FF4F              sbci R31,255
 0270 0081              ldd R16,z+0
 0272 FCDE              xcall _LCD_set_XY
 0274                   .dbline 186
 0274           ;         for (n=0; n<83; n++)
 0274 CC24              clr R12
 0276 09C0              xjmp L50
 0278           L47:
 0278                   .dbline 187
 0278                   .dbline 188
 0278 21E0              ldi R18,1
 027A CE01              movw R24,R28
 027C EC2D              mov R30,R12
 027E FF27              clr R31
 0280 E80F              add R30,R24
 0282 F91F              adc R31,R25
 0284 0081              ldd R16,z+0
 0286 75D0              xcall _LCD_write_byte
 0288                   .dbline 189
 0288           L48:
 0288                   .dbline 186
 0288 C394              inc R12
 028A           L50:
 028A                   .dbline 186
 028A 8C2D              mov R24,R12
 028C 8335              cpi R24,83
 028E A0F3              brlo L47
 0290                   .dbline 191
 0290           ;           { 
 0290           ;             LCD_write_byte(buffer_h[n],1);
 0290           ;           } 
 0290           ;         
 0290           ;         LCD_set_XY(X,Y+1); 
 0290 FE01              movw R30,R28
 0292 EC54              subi R30,76  ; addi 180
 0294 FF4F              sbci R31,255
 0296 2081              ldd R18,z+0
 0298 2F5F              subi R18,255    ; addi 1
 029A FE01              movw R30,R28
 029C EE54              subi R30,78  ; addi 178
 029E FF4F              sbci R31,255
 02A0 0081              ldd R16,z+0
 02A2 E4DE              xcall _LCD_set_XY
 02A4                   .dbline 192
 02A4           ;         for (n=0; n<83; n++)
 02A4 CC24              clr R12
 02A6 0BC0              xjmp L54
 02A8           L51:
 02A8                   .dbline 193
 02A8                   .dbline 194
 02A8 21E0              ldi R18,1
 02AA CE01              movw R24,R28
 02AC 8C5A              subi R24,172  ; offset = 84
 02AE 9F4F              sbci R25,255
 02B0 EC2D              mov R30,R12
 02B2 FF27              clr R31
 02B4 E80F              add R30,R24
 02B6 F91F              adc R31,R25
 02B8 0081              ldd R16,z+0
 02BA 5BD0              xcall _LCD_write_byte
 02BC                   .dbline 195
 02BC           L52:
 02BC                   .dbline 192
 02BC C394              inc R12
 02BE           L54:
 02BE                   .dbline 192
 02BE 8C2D              mov R24,R12
 02C0 8335              cpi R24,83
 02C2 90F3              brlo L51
 02C4                   .dbline 197
 02C4 0E2D              mov R16,R14
 02C6 1127              clr R17
 02C8 0E940000          xcall _delay_nms
 02CC                   .dbline 198
 02CC           L34:
 02CC                   .dbline 172
 02CC 6395              inc R22
 02CE           L36:
 02CE                   .dbline 172
 02CE 6C39              cpi R22,156
 02D0 08F4              brsh X0
 02D2 7ACF              xjmp L33
 02D4           X0:
 02D4                   .dbline -2
 02D4           L30:
 02D4 EF96              adiw R28,63
 02D6 EF96              adiw R28,63
 02D8 AA96              adiw R28,42  ; offset = 168
 02DA 0E940000          xcall pop_gset5
 02DE 2496              adiw R28,4
 02E0                   .dbline 0 ; func end
 02E0 0895              ret
 02E2                   .dbsym r p 20 pA[24:24]c
 02E2                   .dbsym r i 22 c
 02E2                   .dbsym r j 10 c
 02E2                   .dbsym l buffer_l 84 A[84:84]c
 02E2                   .dbsym l buffer_h 0 A[84:84]c
 02E2                   .dbsym r n 12 c
 02E2                   .dbsym l s 184 pA[24:24]c
 02E2                   .dbsym r T 14 c
 02E2                   .dbsym l Y 180 c
 02E2                   .dbsym l X 178 c
 02E2                   .dbend
 02E2                   .dbfunc e LCD_draw_bmp_pixel _LCD_draw_bmp_pixel fV
 02E2           ;            row -> R20
 02E2           ;              n -> R22,R23
 02E2           ;              i -> R14,R15
 02E2           ;          Pix_y -> y+18
 02E2           ;          Pix_x -> R10
 02E2           ;            map -> R12,R13
 02E2           ;              Y -> y+12
 02E2           ;              X -> y+10
                        .even
 02E2           _LCD_draw_bmp_pixel::
 02E2 0E940000          xcall push_arg4
 02E6 0E940000          xcall push_gset5
 02EA CE84              ldd R12,y+14
 02EC DF84              ldd R13,y+15
 02EE A888              ldd R10,y+16
 02F0                   .dbline -1
 02F0                   .dbline 214
 02F0           ;           { 
 02F0           ;             LCD_write_byte(buffer_l[n],1);
 02F0           ;           }
 02F0           ;           
 02F0           ;        delay_nms(T);
 02F0           ;       }
 02F0           ;   }
 02F0           ; /*************************************************************************
 02F0           ; ** 函数名称: LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y)
 02F0           ; ** 功能描述: 位图绘制函数
 02F0           ; ** 输 入: X、Y    :位图绘制的起始X、Y坐标;
 02F0           ;            *map    :位图点阵数据;
 02F0           ;            Pix_x   :位图像素(长)
 02F0           ;            Pix_y   :位图像素(宽)
 02F0           ; ** 输出        : 
 02F0           ; ** 全局变量: 无
 02F0           ; ** 调用模块: 
 02F0           ; ** 说明:
 02F0           ; ** 注意:
 02F0           ; **************************************************************************/
 02F0           ; void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y)
 02F0           ;   {
 02F0                   .dbline 218
 02F0           ;     unsigned int i,n;
 02F0           ;     unsigned char row;
 02F0           ;     
 02F0           ;     if (Pix_y%8==0) row=Pix_y/8;      //计算位图所占行数
 02F0 18E0              ldi R17,8
 02F2 0A89              ldd R16,y+18
 02F4 0E940000          xcall mod8u
 02F8 0023              tst R16
 02FA 29F4              brne L56
 02FC                   .dbline 218
 02FC 4A89              ldd R20,y+18
 02FE 4695              lsr R20
 0300 4695              lsr R20
 0302 4695              lsr R20
 0304 05C0              xjmp L57
 0306           L56:
 0306                   .dbline 219
 0306           ;       else row=Pix_y/8+1;
 0306 4A89              ldd R20,y+18
 0308 4695              lsr R20
 030A 4695              lsr R20
 030C 4695              lsr R20
 030E 4F5F              subi R20,255    ; addi 1
 0310           L57:
 0310                   .dbline 221
 0310           ;     
 0310           ;     for (n=0;n<row;n++)
 0310 6627              clr R22
 0312 7727              clr R23
 0314 25C0              xjmp L61
 0316           L58:
 0316                   .dbline 222
 0316           ;       {
 0316                   .dbline 223
 0316           ;               LCD_set_XY(X,Y);
 0316 2C85              ldd R18,y+12
 0318 0A85              ldd R16,y+10
 031A A8DE              xcall _LCD_set_XY
 031C                   .dbline 224
 031C           ;         for(i=0; i<Pix_x; i++)
 031C EE24              clr R14
 031E FF24              clr R15
 0320 15C0              xjmp L65
 0322           L62:
 0322                   .dbline 225
 0322                   .dbline 226
 0322 21E0              ldi R18,1
 0324 2A2C              mov R2,R10
 0326 3324              clr R3
 0328 2F93              push R18
 032A 3F93              push R19
 032C 9101              movw R18,R2
 032E 8B01              movw R16,R22
 0330 0E940000          xcall empy16s
 0334 3F91              pop R19
 0336 2F91              pop R18
 0338 F701              movw R30,R14
 033A E00F              add R30,R16
 033C F11F              adc R31,R17
 033E EC0D              add R30,R12
 0340 FD1D              adc R31,R13
 0342 0081              ldd R16,z+0
 0344 16D0              xcall _LCD_write_byte
 0346                   .dbline 227
 0346           L63:
 0346                   .dbline 224
 0346 C701              movw R24,R14
 0348 0196              adiw R24,1
 034A 7C01              movw R14,R24
 034C           L65:
 034C                   .dbline 224
 034C 2A2C              mov R2,R10
 034E 3324              clr R3
 0350 E214              cp R14,R2
 0352 F304              cpc R15,R3
 0354 30F3              brlo L62
 0356                   .dbline 228
 0356 0C84              ldd R0,y+12
 0358 0394              inc R0
 035A 0C86              std y+12,R0
 035C                   .dbline 229
 035C           L59:
 035C                   .dbline 221
 035C 6F5F              subi R22,255  ; offset = 1
 035E 7F4F              sbci R23,255
 0360           L61:
 0360                   .dbline 221
 0360 242E              mov R2,R20
 0362 3324              clr R3
 0364 6215              cp R22,R2
 0366 7305              cpc R23,R3
 0368 B0F2              brlo L58
 036A                   .dbline -2
 036A           L55:
 036A 0E940000          xcall pop_gset5
 036E 2496              adiw R28,4
 0370                   .dbline 0 ; func end
 0370 0895              ret
 0372                   .dbsym r row 20 c
 0372                   .dbsym r n 22 i
 0372                   .dbsym r i 14 i
 0372                   .dbsym l Pix_y 18 c
 0372                   .dbsym r Pix_x 10 c
 0372                   .dbsym r map 12 pc
 0372                   .dbsym l Y 12 c
 0372                   .dbsym l X 10 c
 0372                   .dbend
 0372                   .dbfunc e LCD_write_byte _LCD_write_byte fV
 0372           ;        command -> R18
 0372           ;           data -> R16
                        .even
 0372           _LCD_write_byte::
 0372                   .dbline -1
 0372                   .dbline 243
 0372           ;           {
 0372           ;             LCD_write_byte(map[i+n*Pix_x], 1);
 0372           ;           }
 0372           ;         Y++;                         //换行
 0372           ;       }
 0372           ;   }
 0372           ; /*************************************************************************
 0372           ; ** 函数名称: LCD_write_byte(unsigned char data, unsigned char command)
 0372           ; ** 功能描述: 使用SPI接口写数据到LCD
 0372           ; ** 输 入: data    :写入的数据;
 0372           ;            command :写数据/命令选择;
 0372           ; ** 输出        : 
 0372           ; ** 全局变量: 无
 0372           ; ** 调用模块: 
 0372           ; ** 说明:
 0372           ; ** 注意:
 0372           ; **************************************************************************/
 0372           ; void LCD_write_byte(unsigned char data, unsigned char command)
 0372           ;   {
 0372                   .dbline 244
 0372           ;     PORTB &= ~LCD_CE ;                        // 使能LCD
 0372 C498              cbi 0x18,4
 0374                   .dbline 246
 0374           ;     
 0374           ;     if (command == 0)
 0374 2223              tst R18
 0376 11F4              brne L67
 0378                   .dbline 247
 0378           ;       PORTB &= ~LCD_DC ;              // 传送命令
 0378 C398              cbi 0x18,3
 037A 01C0              xjmp L68
 037C           L67:
 037C                   .dbline 249
 037C           ;     else
 037C           ;       PORTB |= LCD_DC ;                       // 传送数据
 037C C39A              sbi 0x18,3
 037E           L68:
 037E                   .dbline 251
 037E           ; 
 037E           ;     SPDR = data;                      // 传送数据到SPI寄存器
 037E 0FB9              out 0xf,R16
 0380           L69:
 0380                   .dbline 253
 0380           L70:
 0380                   .dbline 253
 0380           ; 
 0380           ;     while ((SPSR & 0x80) == 0);         // 等待数据传送完毕
 0380 779B              sbis 0xe,7
 0382 FECF              rjmp L69
 0384                   .dbline 255
 0384           ;       
 0384           ;     PORTB |= LCD_CE ;                 // 关闭LCD
 0384 C49A              sbi 0x18,4
 0386                   .dbline -2
 0386           L66:
 0386                   .dbline 0 ; func end
 0386 0895              ret
 0388                   .dbsym r command 18 c
 0388                   .dbsym r data 16 c
 0388                   .dbend

⌨️ 快捷键说明

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