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

📄 bi2.lis

📁 驱动320240
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -