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

📄 lcd_1602_driver.lis

📁 这是一个电池放电器
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 02B6 338F              std z+27,R19
 02B8                   .dbline 193
 02B8           L38:
 02B8                   .dbline 189
 02B8 EA94              dec R14
 02BA           L40:
 02BA                   .dbline 189
 02BA 2224              clr R2
 02BC 2E14              cp R2,R14
 02BE 08F4              brsh X1
 02C0 C6CF              rjmp L37
 02C2           X1:
 02C2                   .dbline 195
 02C2           ;       {
 02C2           ;         lcd[i]=dat%10+48;
 02C2           ;               dat=dat/10;
 02C2           ;       }
 02C2           ;         
 02C2           ;       for(i=1;i<11;i++)
 02C2 EE24              clr R14
 02C4 E394              inc R14
 02C6 79C0              rjmp L44
 02C8           L41:
 02C8                   .dbline 196
 02C8           ;          { 
 02C8                   .dbline 197
 02C8           ;            if(i==11-d)
 02C8 8BE0              ldi R24,11
 02CA 0E88              ldd R0,y+22
 02CC 8019              sub R24,R0
 02CE E816              cp R14,R24
 02D0 C1F4              brne L45
 02D2                   .dbline 198
 02D2           ;                  {  
 02D2                   .dbline 199
 02D2           ;                     if(lcd_data[add]==c)
 02D2 80E0              ldi R24,<_lcd_data
 02D4 90E0              ldi R25,>_lcd_data
 02D6 E0910000          lds R30,_add
 02DA FF27              clr R31
 02DC E80F              add R30,R24
 02DE F91F              adc R31,R25
 02E0 2080              ldd R2,z+0
 02E2 2A14              cp R2,R10
 02E4 09F4              brne L47
 02E6                   .dbline 200
 02E6           ;                            {}
 02E6                   .dbline 200
 02E6 08C0              rjmp L48
 02E8           L47:
 02E8                   .dbline 202
 02E8           ;                         else
 02E8           ;                            {data[add]=c;}     
 02E8                   .dbline 202
 02E8 80E0              ldi R24,<_data
 02EA 90E0              ldi R25,>_data
 02EC E0910000          lds R30,_add
 02F0 FF27              clr R31
 02F2 E80F              add R30,R24
 02F4 F91F              adc R31,R25
 02F6 A082              std z+0,R10
 02F8                   .dbline 202
 02F8           L48:
 02F8                   .dbline 203
 02F8           ;                         add++;
 02F8 80910000          lds R24,_add
 02FC 8F5F              subi R24,255    ; addi 1
 02FE 80930000          sts _add,R24
 0302                   .dbline 204
 0302           ;                       }   
 0302           L45:
 0302                   .dbline 205
 0302           ;            if((lcd[i]-48+b)==0)
 0302 CE01              movw R24,R28
 0304 EE2D              mov R30,R14
 0306 FF27              clr R31
 0308 E80F              add R30,R24
 030A F91F              adc R31,R25
 030C 8081              ldd R24,z+0
 030E 8053              subi R24,48
 0310 8C0D              add R24,R12
 0312 09F0              breq X2
 0314 2BC0              rjmp L49
 0316           X2:
 0316                   .dbline 206
 0316           ;            {
 0316                   .dbline 207
 0316           ;                  if(i>=(10-d))
 0316 8AE0              ldi R24,10
 0318 0E88              ldd R0,y+22
 031A 8019              sub R24,R0
 031C E816              cp R14,R24
 031E 08F4              brsh X3
 0320 4BC0              rjmp L50
 0322           X3:
 0322                   .dbline 208
 0322           ;                  { 
 0322                   .dbline 209
 0322           ;                     if(lcd_data[add]==lcd[i])
 0322 CE01              movw R24,R28
 0324 EE2D              mov R30,R14
 0326 FF27              clr R31
 0328 E80F              add R30,R24
 032A F91F              adc R31,R25
 032C 2080              ldd R2,z+0
 032E 80E0              ldi R24,<_lcd_data
 0330 90E0              ldi R25,>_lcd_data
 0332 E0910000          lds R30,_add
 0336 FF27              clr R31
 0338 E80F              add R30,R24
 033A F91F              adc R31,R25
 033C 3080              ldd R3,z+0
 033E 3214              cp R3,R2
 0340 09F4              brne L53
 0342                   .dbline 210
 0342           ;                            {}
 0342                   .dbline 210
 0342 0EC0              rjmp L54
 0344           L53:
 0344                   .dbline 212
 0344           ;                         else
 0344           ;                            {data[add]=lcd[i];}     
 0344                   .dbline 212
 0344 CE01              movw R24,R28
 0346 EE2D              mov R30,R14
 0348 FF27              clr R31
 034A E80F              add R30,R24
 034C F91F              adc R31,R25
 034E 2080              ldd R2,z+0
 0350 80E0              ldi R24,<_data
 0352 90E0              ldi R25,>_data
 0354 E0910000          lds R30,_add
 0358 FF27              clr R31
 035A E80F              add R30,R24
 035C F91F              adc R31,R25
 035E 2082              std z+0,R2
 0360                   .dbline 212
 0360           L54:
 0360                   .dbline 213
 0360           ;                         add++;
 0360 80910000          lds R24,_add
 0364 8F5F              subi R24,255    ; addi 1
 0366 80930000          sts _add,R24
 036A                   .dbline 214
 036A           ;                       }        
 036A                   .dbline 216
 036A           ;                  else
 036A           ;                  {}      
 036A                   .dbline 216
 036A                   .dbline 217
 036A           ;                }
 036A 26C0              rjmp L50
 036C           L49:
 036C                   .dbline 219
 036C           ;                else
 036C           ;                {
 036C                   .dbline 220
 036C           ;                     if(lcd_data[add]==lcd[i])
 036C CE01              movw R24,R28
 036E EE2D              mov R30,R14
 0370 FF27              clr R31
 0372 E80F              add R30,R24
 0374 F91F              adc R31,R25
 0376 2080              ldd R2,z+0
 0378 80E0              ldi R24,<_lcd_data
 037A 90E0              ldi R25,>_lcd_data
 037C E0910000          lds R30,_add
 0380 FF27              clr R31
 0382 E80F              add R30,R24
 0384 F91F              adc R31,R25
 0386 3080              ldd R3,z+0
 0388 3214              cp R3,R2
 038A 09F4              brne L55
 038C                   .dbline 221
 038C           ;                            {}
 038C                   .dbline 221
 038C 0EC0              rjmp L56
 038E           L55:
 038E                   .dbline 223
 038E           ;                         else
 038E           ;                            {data[add]=lcd[i];}      
 038E                   .dbline 223
 038E CE01              movw R24,R28
 0390 EE2D              mov R30,R14
 0392 FF27              clr R31
 0394 E80F              add R30,R24
 0396 F91F              adc R31,R25
 0398 2080              ldd R2,z+0
 039A 80E0              ldi R24,<_data
 039C 90E0              ldi R25,>_data
 039E E0910000          lds R30,_add
 03A2 FF27              clr R31
 03A4 E80F              add R30,R24
 03A6 F91F              adc R31,R25
 03A8 2082              std z+0,R2
 03AA                   .dbline 223
 03AA           L56:
 03AA                   .dbline 224
 03AA           ;                         add++;
 03AA 80910000          lds R24,_add
 03AE 8F5F              subi R24,255    ; addi 1
 03B0 80930000          sts _add,R24
 03B4                   .dbline 225
 03B4           ;                b=1;
 03B4 CC24              clr R12
 03B6 C394              inc R12
 03B8                   .dbline 226
 03B8           ;                }
 03B8           L50:
 03B8                   .dbline 227
 03B8           L42:
 03B8                   .dbline 195
 03B8 E394              inc R14
 03BA           L44:
 03BA                   .dbline 195
 03BA 8E2D              mov R24,R14
 03BC 8B30              cpi R24,11
 03BE 08F4              brsh X4
 03C0 83CF              rjmp L41
 03C2           X4:
 03C2 24C0              rjmp L58
 03C4           L57:
 03C4                   .dbline 229
 03C4           ;          }
 03C4           ;          while (*s) 
 03C4           ;       {
 03C4                   .dbline 230
 03C4           ;         if(lcd_data[add]==*s)//如果LCD上显示的数和
 03C4 80E0              ldi R24,<_lcd_data
 03C6 90E0              ldi R25,>_lcd_data
 03C8 E0910000          lds R30,_add
 03CC FF27              clr R31
 03CE E80F              add R30,R24
 03D0 F91F              adc R31,R25
 03D2 2080              ldd R2,z+0
 03D4 F401              movw R30,R8
 03D6 E491              lpm R30,Z
 03D8 2E16              cp R2,R30
 03DA 09F4              brne L60
 03DC                   .dbline 231
 03DC           ;                  {}                             //待写入的数相同的话
 03DC                   .dbline 231
 03DC 0FC0              rjmp L61
 03DE           L60:
 03DE                   .dbline 232
 03DE           ;               else{data[add]=*s;}//要显示的数据存入显存
 03DE                   .dbline 232
 03DE 80E0              ldi R24,<_data
 03E0 90E0              ldi R25,>_data
 03E2 E0910000          lds R30,_add
 03E6 FF27              clr R31
 03E8 E80F              add R30,R24
 03EA F91F              adc R31,R25
 03EC D401              movw R26,R8
 03EE FA93              st -y,R31
 03F0 EA93              st -y,R30
 03F2 FD01              movw R30,R26
 03F4 A491              lpm R26,Z
 03F6 E991              ld R30,y+
 03F8 F991              ld R31,y+
 03FA A083              std z+0,R26
 03FC                   .dbline 232
 03FC           L61:
 03FC                   .dbline 233
 03FC C401              movw R24,R8
 03FE 0196              adiw R24,1
 0400 4C01              movw R8,R24
 0402                   .dbline 234
 0402 80910000          lds R24,_add
 0406 8F5F              subi R24,255    ; addi 1
 0408 80930000          sts _add,R24
 040C                   .dbline 235
 040C           L58:
 040C                   .dbline 228
 040C F401              movw R30,R8
 040E E491              lpm R30,Z
 0410 EE23              tst R30
 0412 C1F6              brne L57
 0414                   .dbline 236
 0414           ;              s ++;//指针加1
 0414           ;              add++;//显存地址加1
 0414           ;       } 
 0414           ;         if(y==1)
 0414 8C89              ldd R24,y+20
 0416 8130              cpi R24,1
 0418 91F4              brne L67
 041A                   .dbline 237
 041A           ;           e+=16;
 041A 862D              mov R24,R6
 041C 805F              subi R24,240    ; addi 16
 041E 682E              mov R6,R24
 0420                   .dbline 238
 0420           ;         for(;e>=add;add++)
 0420 0EC0              rjmp L67
 0422           L64:
 0422                   .dbline 239
 0422                   .dbline 239
 0422 80E0              ldi R24,<_data
 0424 90E0              ldi R25,>_data
 0426 E0910000          lds R30,_add
 042A FF27              clr R31
 042C E80F              add R30,R24
 042E F91F              adc R31,R25
 0430 80E2              ldi R24,32
 0432 8083              std z+0,R24
 0434                   .dbline 239
 0434           L65:
 0434                   .dbline 238
 0434 80910000          lds R24,_add
 0438 8F5F              subi R24,255    ; addi 1
 043A 80930000          sts _add,R24
 043E           L67:
 043E                   .dbline 238
 043E 20900000          lds R2,_add
 0442 6214              cp R6,R2
 0444 70F7              brsh L64
 0446                   .dbline 240
 0446           ;          {data[add]=' ';}
 0446           ;           LCD_updata;
 0446 2224              clr R2
 0448 20920000          sts _new,R2
 044C                   .dbline -2
 044C           L33:
 044C 2A96              adiw R28,10
 044E 00D0              rcall pop_gset5
 0450 2296              adiw R28,2
 0452                   .dbline 0 ; func end
 0452 0895              ret
 0454                   .dbsym r c 10 c
 0454                   .dbsym r b 12 c
 0454                   .dbsym l lcd 0 A[10:10]c
 0454                   .dbsym r i 14 c
 0454                   .dbsym r e 6 c
 0454                   .dbsym r s 8 pkc
 0454                   .dbsym l dat 24 l
 0454                   .dbsym l d 22 c
 0454                   .dbsym l y 20 c
 0454                   .dbsym r x 14 c
 0454                   .dbend
                        .area lit(rom, con, rel)
 000A           L69:
 000A 00                .byte 0
 000B 00000000000000    .byte 0,0,0,0,0,0,0
                        .area text(rom, con, rel)
 0454                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\LCD_1602_Driver.c
 0454                   .dbfunc e LCD_write_time _LCD_write_time fV
 0454           ;            lcd -> y+0
 0454           ;              i -> R20
 0454           ;              z -> R22
 0454           ;              s -> y+18
 0454           ;              m -> y+16
 0454           ;              h -> y+14
 0454           ;              y -> R10
 0454           ;              x -> R20
                        .even
 0454           _LCD_write_time::
 0454 00D0              rcall push_gset3
 0456 A22E              mov R10,R18
 0458 402F              mov R20,R16
 045A 2897              sbiw R28,8
 045C 6C89              ldd R22,y+20
 045E                   .dbline -1
 045E                   .dbline 251
 045E           ;   }
 045E           ; /*-----------------------------------------------------------------------

⌨️ 快捷键说明

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