📄 lcd_1602_driver.lis
字号:
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 + -