📄 bi2.lis
字号:
02B2 81E0 ldi R24,1
02B4 28B2 in R2,0x18
02B6 2826 eor R2,R24
02B8 28BA out 0x18,R2
02BA .dbline -2
02BA L73:
02BA 2990 ld R2,y+
02BC 2FBE out 0x3f,R2
02BE 8991 ld R24,y+
02C0 2990 ld R2,y+
02C2 .dbline 0 ; func end
02C2 1895 reti
02C4 .dbend
.area lit(rom, con, rel)
0054 L75:
0054 3000 .byte 48,0
0056 00000000 .byte 0,0,0,0
.area text(rom, con, rel)
02C4 .dbfile E:\temp\avr\bi2\bi2.c
02C4 .dbfunc e LCD_write_ch _LCD_write_ch fV
02C4 ; k -> <dead>
02C4 ; p -> y+0
02C4 ; i -> R20
02C4 ; s -> R22,R23
02C4 ; z -> R10
02C4 ; Y -> R14
02C4 ; X -> R12
.even
02C4 _LCD_write_ch::
02C4 0E940000 xcall push_gset5
02C8 E22E mov R14,R18
02CA C02E mov R12,R16
02CC 2697 sbiw R28,6
02CE A888 ldd R10,y+16
02D0 6A89 ldd R22,y+18
02D2 7B89 ldd R23,y+19
02D4 .dbline -1
02D4 .dbline 433
02D4 ; }
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ;
02D4 ; void LCD_write_ch(unsigned char X,unsigned char Y,unsigned char z,unsigned int s)
02D4 ; {unsigned char k;
02D4 .dbline 434
02D4 ; unsigned char p[6]="0";
02D4 80E0 ldi R24,<L75
02D6 90E0 ldi R25,>L75
02D8 FE01 movw R30,R28
02DA 06E0 ldi R16,6
02DC 10E0 ldi R17,0
02DE FA93 st -y,R31
02E0 EA93 st -y,R30
02E2 9A93 st -y,R25
02E4 8A93 st -y,R24
02E6 0E940000 xcall asgncblk
02EA .dbline 435
02EA ; unsigned char i=0;
02EA 4427 clr R20
02EC .dbline 437
02EC ; //写地址
02EC ; LCD_set_xy( X, Y );
02EC 2E2D mov R18,R14
02EE 0C2D mov R16,R12
02F0 56D0 xcall _LCD_set_xy
02F2 .dbline 438
02F2 ; for(i=0;i<z;i++)
02F2 12C0 xjmp L79
02F4 L76:
02F4 .dbline 439
02F4 .dbline 440
02F4 2AE0 ldi R18,10
02F6 30E0 ldi R19,0
02F8 8B01 movw R16,R22
02FA 0E940000 xcall mod16u
02FE CE01 movw R24,R28
0300 E42F mov R30,R20
0302 FF27 clr R31
0304 E80F add R30,R24
0306 F91F adc R31,R25
0308 0083 std z+0,R16
030A .dbline 441
030A 2AE0 ldi R18,10
030C 30E0 ldi R19,0
030E 8B01 movw R16,R22
0310 0E940000 xcall div16u
0314 B801 movw R22,R16
0316 .dbline 443
0316 L77:
0316 .dbline 438
0316 4395 inc R20
0318 L79:
0318 .dbline 438
0318 4A15 cp R20,R10
031A 60F3 brlo L76
031C .dbline 444
031C ; {
031C ; p[i]=s%10;
031C ; s=s/10;
031C ;
031C ; }
031C ; i--;
031C 4A95 dec R20
031E .dbline 455
031E ; /*
031E ; while(!(p[i]))
031E ; {
031E ; if(i==0)
031E ; {LCD_write_char( 0, 0b00110000 );i--;}
031E ; else
031E ; {i--;LCD_write_char( 0, 0b10000000 );}
031E ;
031E ; }
031E ; */
031E ; for(;i<255;i--)
031E 0DC0 xjmp L83
0320 L80:
0320 .dbline 456
0320 .dbline 457
0320 CE01 movw R24,R28
0322 E42F mov R30,R20
0324 FF27 clr R31
0326 E80F add R30,R24
0328 F91F adc R31,R25
032A 2081 ldd R18,z+0
032C 3327 clr R19
032E 205D subi R18,208 ; offset = 48
0330 3F4F sbci R19,255
0332 0027 clr R16
0334 1127 clr R17
0336 4CD0 xcall _LCD_write_char
0338 .dbline 458
0338 L81:
0338 .dbline 455
0338 4A95 dec R20
033A L83:
033A .dbline 455
033A 4F3F cpi R20,255
033C 88F3 brlo L80
033E .dbline -2
033E L74:
033E 2696 adiw R28,6
0340 0E940000 xcall pop_gset5
0344 .dbline 0 ; func end
0344 0895 ret
0346 .dbsym l k 1 c
0346 .dbsym l p 0 A[6:6]c
0346 .dbsym r i 20 c
0346 .dbsym r s 22 i
0346 .dbsym r z 10 c
0346 .dbsym r Y 14 c
0346 .dbsym r X 12 c
0346 .dbend
0346 .dbfunc e LCD_init _LCD_init fV
.even
0346 _LCD_init::
0346 .dbline -1
0346 .dbline 465
0346 ; {
0346 ; LCD_write_char( 0, p[i]+0b00110000 );
0346 ; }}
0346 ;
0346 ;
0346 ;
0346 ;
0346 ;
0346 ; void LCD_init(void) //液晶初始化
0346 ; {
0346 .dbline 466
0346 ; delay_nms(15);
0346 0FE0 ldi R16,15
0348 10E0 ldi R17,0
034A 78DE xcall _delay_nms
034C .dbline 467
034C ; LCD_write_char(0x28,0); //4位显示
034C 2227 clr R18
034E 3327 clr R19
0350 08E2 ldi R16,40
0352 10E0 ldi R17,0
0354 3DD0 xcall _LCD_write_char
0356 .dbline 468
0356 ; LCD_write_char(0x0c,0); //显示开
0356 2227 clr R18
0358 3327 clr R19
035A 0CE0 ldi R16,12
035C 10E0 ldi R17,0
035E 38D0 xcall _LCD_write_char
0360 .dbline 469
0360 ; LCD_write_char(0x01,0); //清屏
0360 2227 clr R18
0362 3327 clr R19
0364 01E0 ldi R16,1
0366 10E0 ldi R17,0
0368 33D0 xcall _LCD_write_char
036A .dbline -2
036A L84:
036A .dbline 0 ; func end
036A 0895 ret
036C .dbend
036C .dbfunc e LCD_write_string _LCD_write_string fV
036C ; s -> R20,R21
036C ; Y -> R10
036C ; X -> R22
.even
036C _LCD_write_string::
036C 0E940000 xcall push_gset3
0370 A22E mov R10,R18
0372 602F mov R22,R16
0374 4E81 ldd R20,y+6
0376 5F81 ldd R21,y+7
0378 .dbline -1
0378 .dbline 472
0378 ; }
0378 ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
0378 ; {
0378 .dbline 473
0378 ; LCD_set_xy( X, Y ); //写地址
0378 2A2D mov R18,R10
037A 062F mov R16,R22
037C 10D0 xcall _LCD_set_xy
037E 08C0 xjmp L87
0380 L86:
0380 .dbline 476
0380 .dbline 477
0380 FA01 movw R30,R20
0382 2081 ldd R18,z+0
0384 3327 clr R19
0386 0027 clr R16
0388 1127 clr R17
038A 22D0 xcall _LCD_write_char
038C .dbline 478
038C 4F5F subi R20,255 ; offset = 1
038E 5F4F sbci R21,255
0390 .dbline 479
0390 L87:
0390 .dbline 475
0390 ;
0390 ; while (*s) // 写显示字符
0390 FA01 movw R30,R20
0392 2080 ldd R2,z+0
0394 2220 tst R2
0396 A1F7 brne L86
0398 .dbline -2
0398 L85:
0398 0E940000 xcall pop_gset3
039C .dbline 0 ; func end
039C 0895 ret
039E .dbsym r s 20 pc
039E .dbsym r Y 10 c
039E .dbsym r X 22 c
039E .dbend
039E .dbfunc e LCD_set_xy _LCD_set_xy fV
039E ; address -> R20
039E ; y -> R20
039E ; x -> R22
.even
039E _LCD_set_xy::
039E 0E940000 xcall push_gset2
03A2 422F mov R20,R18
03A4 602F mov R22,R16
03A6 .dbline -1
03A6 .dbline 482
03A6 ; {
03A6 ; LCD_write_char( 0, *s );
03A6 ; s ++;
03A6 ; }
03A6 ; }
03A6 ; void LCD_set_xy( unsigned char x, unsigned char y ) //写地址函数
03A6 ; {
03A6 .dbline 484
03A6 ; unsigned char address;
03A6 ; if (y == 0) address = 0x80 + x;
03A6 4423 tst R20
03A8 19F4 brne L90
03AA .dbline 484
03AA 462F mov R20,R22
03AC 4058 subi R20,128 ; addi 128
03AE 02C0 xjmp L91
03B0 L90:
03B0 .dbline 486
03B0 ; else
03B0 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -