📄 lcd12864.lis
字号:
0342 0FE3 ldi R16,63
0344 77DE xcall _LCD0_write_com
0346 .dbline 308
0346 ; LCD1_write_com(0x3F);
0346 0FE3 ldi R16,63
0348 85DE xcall _LCD1_write_com
034A .dbline -2
034A L99:
034A .dbline 0 ; func end
034A 0895 ret
034C .dbend
034C .dbfunc e disp_myself _disp_myself fV
034C ; q -> R20,R21
034C ; i -> R22
034C ; ascii -> y+8
034C ; y -> R12
034C ; x -> R10
.even
034C _disp_myself::
034C 0E940000 xcall push_gset4
0350 C22E mov R12,R18
0352 A02E mov R10,R16
0354 .dbline -1
0354 .dbline 312
0354 ; }
0354 ;
0354 ; /*在指定位置显示一个8*8的 字符*/
0354 ; void disp_myself(unsigned char x, unsigned char y, unsigned char ascii) {
0354 .dbline 314
0354 ;
0354 ; unsigned char i = 0x00;
0354 6627 clr R22
0356 .dbline 318
0356 ; const unsigned char *q; /*取字库指针*/
0356 ;
0356 ;
0356 ; ascii -= 0x20;
0356 8885 ldd R24,y+8
0358 8052 subi R24,32
035A 8887 std y+8,R24
035C .dbline 319
035C ; q = &ENGLISH_FONT[ascii *16]; /*定位指针地址*/
035C 80E1 ldi R24,16
035E 0884 ldd R0,y+8
0360 809D mul R24,R0
0362 A001 movw R20,R0
0364 80E0 ldi R24,<_ENGLISH_FONT
0366 90E0 ldi R25,>_ENGLISH_FONT
0368 480F add R20,R24
036A 591F adc R21,R25
036C .dbline 322
036C ;
036C ; /*显示高8位*/
036C ; i = 0x00;
036C .dbline 323
036C ; if (x < 64) { /*地址在左半屏范围内*/
036C 8A2D mov R24,R10
036E 8034 cpi R24,64
0370 A0F4 brsh L101
0372 .dbline 323
0372 .dbline 324
0372 ; LCD0_write_com(y | 0xB8);
0372 0C2D mov R16,R12
0374 086B ori R16,184
0376 5EDE xcall _LCD0_write_com
0378 .dbline 325
0378 ; LCD0_write_com(x | 0x40);
0378 0A2D mov R16,R10
037A 0064 ori R16,64
037C 5BDE xcall _LCD0_write_com
037E 0BC0 xjmp L104
0380 L103:
0380 .dbline 326
0380 ; while (i < 8) {
0380 .dbline 327
0380 ; LCD0_write_data(*q);
0380 FA01 movw R30,R20
0382 0491 lpm R16,Z
0384 77DE xcall _LCD0_write_data
0386 .dbline 328
0386 ; q ++;
0386 4F5F subi R20,255 ; offset = 1
0388 5F4F sbci R21,255
038A .dbline 329
038A ; x ++;
038A A394 inc R10
038C .dbline 330
038C ; i ++;
038C 6395 inc R22
038E .dbline 331
038E ; if (x > 63) { /*判断地址是否越界*/
038E 8FE3 ldi R24,63
0390 8A15 cp R24,R10
0392 08F4 brsh L106
0394 .dbline 331
0394 .dbline 332
0394 ; break;
0394 02C0 xjmp L105
0396 L106:
0396 .dbline 334
0396 L104:
0396 .dbline 326
0396 6830 cpi R22,8
0398 98F3 brlo L103
039A L105:
039A .dbline 335
039A ; }
039A ; }
039A ; }
039A L101:
039A .dbline 336
039A ; if (i < 8) { /*地址进入左半屏范围*/
039A 6830 cpi R22,8
039C 80F4 brsh L108
039E .dbline 336
039E .dbline 337
039E ; LCD1_write_com(y | 0xB8);
039E 0C2D mov R16,R12
03A0 086B ori R16,184
03A2 58DE xcall _LCD1_write_com
03A4 .dbline 338
03A4 ; LCD1_write_com(x | 0x40);
03A4 0A2D mov R16,R10
03A6 0064 ori R16,64
03A8 55DE xcall _LCD1_write_com
03AA 07C0 xjmp L111
03AC L110:
03AC .dbline 339
03AC .dbline 340
03AC FA01 movw R30,R20
03AE 0491 lpm R16,Z
03B0 71DE xcall _LCD1_write_data
03B2 .dbline 341
03B2 4F5F subi R20,255 ; offset = 1
03B4 5F4F sbci R21,255
03B6 .dbline 342
03B6 A394 inc R10
03B8 .dbline 343
03B8 6395 inc R22
03BA .dbline 344
03BA L111:
03BA .dbline 339
03BA 6830 cpi R22,8
03BC B8F3 brlo L110
03BE .dbline 345
03BE L108:
03BE .dbline -2
03BE L100:
03BE 0E940000 xcall pop_gset4
03C2 .dbline 0 ; func end
03C2 0895 ret
03C4 .dbsym r q 20 pkc
03C4 .dbsym r i 22 c
03C4 .dbsym l ascii 8 c
03C4 .dbsym r y 12 c
03C4 .dbsym r x 10 c
03C4 .dbend
03C4 .dbfunc e disp_to_bcd _disp_to_bcd fV
03C4 ; f -> R14,R15
03C4 ; e -> R12,R13
03C4 ; b -> R10,R11
03C4 ; c -> R22,R23
03C4 ; a -> R20,R21
03C4 ; d -> R10,R11
03C4 ; x -> R22,R23
.even
03C4 _disp_to_bcd::
03C4 0E940000 xcall push_gset5
03C8 B801 movw R22,R16
03CA 2297 sbiw R28,2
03CC .dbline -1
03CC .dbline 349
03CC ; while (i < 8) {
03CC ; LCD1_write_data(*q);
03CC ; q ++;
03CC ; x ++;
03CC ; i ++;
03CC ; }
03CC ; }
03CC ; }
03CC ;
03CC ;
03CC ; void disp_to_bcd(int x){
03CC .dbline 350
03CC ; unsigned int a=x%10,b=x/10,c=b%10,d=b/10,e=d%10,f=d/10;
03CC 2AE0 ldi R18,10
03CE 30E0 ldi R19,0
03D0 8B01 movw R16,R22
03D2 0E940000 xcall mod16s
03D6 A801 movw R20,R16
03D8 .dbline 350
03D8 2AE0 ldi R18,10
03DA 30E0 ldi R19,0
03DC 8B01 movw R16,R22
03DE 0E940000 xcall div16s
03E2 5801 movw R10,R16
03E4 .dbline 350
03E4 2AE0 ldi R18,10
03E6 30E0 ldi R19,0
03E8 0E940000 xcall mod16u
03EC B801 movw R22,R16
03EE .dbline 350
03EE 2AE0 ldi R18,10
03F0 30E0 ldi R19,0
03F2 8501 movw R16,R10
03F4 0E940000 xcall div16u
03F8 5801 movw R10,R16
03FA .dbline 350
03FA 2AE0 ldi R18,10
03FC 30E0 ldi R19,0
03FE 0E940000 xcall mod16u
0402 6801 movw R12,R16
0404 .dbline 350
0404 2AE0 ldi R18,10
0406 30E0 ldi R19,0
0408 8501 movw R16,R10
040A 0E940000 xcall div16u
040E 7801 movw R14,R16
0410 .dbline 351
0410 ; a+=48,c+=48,e+=48,f+=48;
0410 405D subi R20,208 ; offset = 48
0412 5F4F sbci R21,255
0414 605D subi R22,208 ; offset = 48
0416 7F4F sbci R23,255
0418 C601 movw R24,R12
041A C096 adiw R24,48
041C 6C01 movw R12,R24
041E C701 movw R24,R14
0420 C096 adiw R24,48
0422 7C01 movw R14,R24
0424 .dbline 352
0424 ; disp_char(40, 2, f);
0424 E882 std y+0,R14
0426 22E0 ldi R18,2
0428 08E2 ldi R16,40
042A 90DE xcall _disp_char
042C .dbline 353
042C ; disp_char(48, 2, e);
042C C882 std y+0,R12
042E 22E0 ldi R18,2
0430 00E3 ldi R16,48
0432 8CDE xcall _disp_char
0434 .dbline 354
0434 ; disp_char_str(56, 2, ".");
0434 80E0 ldi R24,<L114
0436 90E0 ldi R25,>L114
0438 9983 std y+1,R25
043A 8883 std y+0,R24
043C 22E0 ldi R18,2
043E 08E3 ldi R16,56
0440 5ADF xcall _disp_char_str
0442 .dbline 355
0442 ; disp_char(64, 2, c);
0442 6883 std y+0,R22
0444 22E0 ldi R18,2
0446 00E4 ldi R16,64
0448 81DE xcall _disp_char
044A .dbline 356
044A ; disp_char(72, 2, a);
044A 4883 std y+0,R20
044C 22E0 ldi R18,2
044E 08E4 ldi R16,72
0450 7DDE xcall _disp_char
0452 .dbline 357
0452 ; disp_char_str(80, 2, "V");
0452 80E0 ldi R24,<L115
0454 90E0 ldi R25,>L115
0456 9983 std y+1,R25
0458 8883 std y+0,R24
045A 22E0 ldi R18,2
045C 00E5 ldi R16,80
045E 4BDF xcall _disp_char_str
0460 .dbline 358
0460 C501 movw R24,R10
0462 8B30 cpi R24,11
0464 E0E0 ldi R30,0
0466 9E07 cpc R25,R30
0468 50F0 brlo L118
046A 8B30 cpi R24,11
046C E0E0 ldi R30,0
046E 9E07 cpc R25,R30
0470 D9F4 brne L116
0472 6030 cpi R22,0
0474 6707 cpc R22,R23
0476 C1F4 brne L116
0478 X2:
0478 4030 cpi R20,0
047A 4507 cpc R20,R21
047C A9F4 brne L116
047E X3:
047E L118:
047E .dbline 358
047E ; if(d<11||d==11&&c==0&&a==0){
047E .dbline 359
047E ; disp_word(32, 4, CB5E7); /*写入“电压偏低”四个汉字*/
047E 86E0 ldi R24,6
0480 8883 std y+0,R24
0482 24E0 ldi R18,4
0484 00E2 ldi R16,32
0486 CEDE xcall _disp_word
0488 .dbline 360
0488 ; disp_word(48, 4, CD1B9);
0488 87E0 ldi R24,7
048A 8883 std y+0,R24
048C 24E0 ldi R18,4
048E 00E3 ldi R16,48
0490 C9DE xcall _disp_word
0492 .dbline 361
0492 ; disp_word(64, 4, CC6AB);
0492 8AE0 ldi R24,10
0494 8883 std y+0,R24
0496 24E0 ldi R18,4
0498 00E4 ldi R16,64
049A C4DE xcall _disp_word
049C .dbline 362
049C ; disp_word(80, 4, CB5CD);}
049C 8BE0 ldi R24,11
049E 8883 std y+0,R24
04A0 24E0 ldi R18,4
04A2 00E5 ldi R16,80
04A4 BFDE xcall _disp_word
04A6 .dbline 362
04A6 14C0 xjmp L117
04A8 L116:
04A8 .dbline 363
04A8 .dbline 364
04A8 86E0 ldi R24,6
04AA 8883 std y+0,R24
04AC 24E0 ldi R18,4
04AE 00E2 ldi R16,32
04B0 B9DE xcall _disp_word
04B2 .dbline 365
04B2 87E0 ldi R24,7
04B4 8883 std y+0,R24
04B6 24E0 ldi R18,4
04B8 00E3 ldi R16,48
04BA B4DE xcall _disp_word
04BC .dbline 366
04BC 88E0 ldi R24,8
04BE 8883 std y+0,R24
04C0 24E0 ldi R18,4
04C2 00E4 ldi R16,64
04C4 AFDE xcall _disp_word
04C6 .dbline 367
04C6 89E0 ldi R24,9
04C8 8883 std y+0,R24
04CA 24E0 ldi R18,4
04CC 00E5 ldi R16,80
04CE AADE xcall _disp_word
04D0 .dbline 367
04D0 L117:
04D0 .dbline -2
04D0 L113:
04D0 2296 adiw R28,2
04D2 0E940000 xcall pop_gset5
04D6 .dbline 0 ; func end
04D6 0895 ret
04D8 .dbsym r f 14 i
04D8 .dbsym r e 12 i
04D8 .dbsym r b 10 i
04D8 .dbsym r c 22 i
04D8 .dbsym r a 20 i
04D8 .dbsym r d 10 i
04D8 .dbsym r x 22 I
04D8 .dbend
.area data(ram, con, rel)
0000 .dbfile C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\lcd12864.c
0000 L115:
0000 .blkb 2
.area idata
0000 5600 .byte 'V,0
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\lcd12864.c
0002 L114:
0002 .blkb 2
.area idata
0002 2E00 .byte 46,0
.area data(ram, con, rel)
0004 .dbfile C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\lcd12864.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -