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

📄 lcd_1602_driver.lis

📁 LCD1602四线接口应用范例(AVR_GCC)
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0404 0EC0              rjmp L63
 0406           L62:
 0406                   .dbline 213
 0406           ;                         else
 0406           ;                            {data[add]=lcd[i];}     
 0406                   .dbline 213
 0406 CE01              movw R24,R28
 0408 EE2D              mov R30,R14
 040A FF27              clr R31
 040C E80F              add R30,R24
 040E F91F              adc R31,R25
 0410 2080              ldd R2,z+0
 0412 80E0              ldi R24,<_data
 0414 90E0              ldi R25,>_data
 0416 E0910000          lds R30,_add
 041A FF27              clr R31
 041C E80F              add R30,R24
 041E F91F              adc R31,R25
 0420 2082              std z+0,R2
 0422                   .dbline 213
 0422           L63:
 0422                   .dbline 214
 0422           ;                         add++;
 0422 80910000          lds R24,_add
 0426 8F5F              subi R24,255    ; addi 1
 0428 80930000          sts _add,R24
 042C                   .dbline 215
 042C           ;                       }        
 042C                   .dbline 217
 042C           ;                  else
 042C           ;                  {}      
 042C                   .dbline 217
 042C                   .dbline 218
 042C           ;                }
 042C 26C0              rjmp L59
 042E           L58:
 042E                   .dbline 220
 042E           ;                else
 042E           ;                {
 042E                   .dbline 221
 042E           ;                     if(lcd_data[add]==lcd[i])
 042E CE01              movw R24,R28
 0430 EE2D              mov R30,R14
 0432 FF27              clr R31
 0434 E80F              add R30,R24
 0436 F91F              adc R31,R25
 0438 2080              ldd R2,z+0
 043A 80E0              ldi R24,<_lcd_data
 043C 90E0              ldi R25,>_lcd_data
 043E E0910000          lds R30,_add
 0442 FF27              clr R31
 0444 E80F              add R30,R24
 0446 F91F              adc R31,R25
 0448 3080              ldd R3,z+0
 044A 3214              cp R3,R2
 044C 09F4              brne L64
 044E                   .dbline 222
 044E           ;                            {}
 044E                   .dbline 222
 044E 0EC0              rjmp L65
 0450           L64:
 0450                   .dbline 224
 0450           ;                         else
 0450           ;                            {data[add]=lcd[i];}      
 0450                   .dbline 224
 0450 CE01              movw R24,R28
 0452 EE2D              mov R30,R14
 0454 FF27              clr R31
 0456 E80F              add R30,R24
 0458 F91F              adc R31,R25
 045A 2080              ldd R2,z+0
 045C 80E0              ldi R24,<_data
 045E 90E0              ldi R25,>_data
 0460 E0910000          lds R30,_add
 0464 FF27              clr R31
 0466 E80F              add R30,R24
 0468 F91F              adc R31,R25
 046A 2082              std z+0,R2
 046C                   .dbline 224
 046C           L65:
 046C                   .dbline 225
 046C           ;                         add++;
 046C 80910000          lds R24,_add
 0470 8F5F              subi R24,255    ; addi 1
 0472 80930000          sts _add,R24
 0476                   .dbline 226
 0476           ;                b=1;
 0476 CC24              clr R12
 0478 C394              inc R12
 047A                   .dbline 227
 047A           ;                }
 047A           L59:
 047A                   .dbline 228
 047A           L51:
 047A                   .dbline 196
 047A E394              inc R14
 047C           L53:
 047C                   .dbline 196
 047C 8E2D              mov R24,R14
 047E 8B30              cpi R24,11
 0480 08F4              brsh X4
 0482 83CF              rjmp L50
 0484           X4:
 0484 24C0              rjmp L67
 0486           L66:
 0486                   .dbline 230
 0486           ;          }
 0486           ;          while (*s) 
 0486           ;       {
 0486                   .dbline 231
 0486           ;         if(lcd_data[add]==*s)//如果LCD上显示的数和
 0486 80E0              ldi R24,<_lcd_data
 0488 90E0              ldi R25,>_lcd_data
 048A E0910000          lds R30,_add
 048E FF27              clr R31
 0490 E80F              add R30,R24
 0492 F91F              adc R31,R25
 0494 2080              ldd R2,z+0
 0496 F401              movw R30,R8
 0498 E491              lpm R30,Z
 049A 2E16              cp R2,R30
 049C 09F4              brne L69
 049E                   .dbline 232
 049E           ;                  {}                             //待写入的数相同的话
 049E                   .dbline 232
 049E 0FC0              rjmp L70
 04A0           L69:
 04A0                   .dbline 233
 04A0           ;               else{data[add]=*s;}//要显示的数据存入显存
 04A0                   .dbline 233
 04A0 80E0              ldi R24,<_data
 04A2 90E0              ldi R25,>_data
 04A4 E0910000          lds R30,_add
 04A8 FF27              clr R31
 04AA E80F              add R30,R24
 04AC F91F              adc R31,R25
 04AE D401              movw R26,R8
 04B0 FA93              st -y,R31
 04B2 EA93              st -y,R30
 04B4 FD01              movw R30,R26
 04B6 A491              lpm R26,Z
 04B8 E991              ld R30,y+
 04BA F991              ld R31,y+
 04BC A083              std z+0,R26
 04BE                   .dbline 233
 04BE           L70:
 04BE                   .dbline 234
 04BE C401              movw R24,R8
 04C0 0196              adiw R24,1
 04C2 4C01              movw R8,R24
 04C4                   .dbline 235
 04C4 80910000          lds R24,_add
 04C8 8F5F              subi R24,255    ; addi 1
 04CA 80930000          sts _add,R24
 04CE                   .dbline 236
 04CE           L67:
 04CE                   .dbline 229
 04CE F401              movw R30,R8
 04D0 E491              lpm R30,Z
 04D2 EE23              tst R30
 04D4 C1F6              brne L66
 04D6                   .dbline 237
 04D6           ;              s ++;//指针加1
 04D6           ;              add++;//显存地址加1
 04D6           ;       } 
 04D6           ;         if(y==1)
 04D6 8C89              ldd R24,y+20
 04D8 8130              cpi R24,1
 04DA 91F4              brne L76
 04DC                   .dbline 238
 04DC           ;           e+=16;
 04DC 862D              mov R24,R6
 04DE 805F              subi R24,240    ; addi 16
 04E0 682E              mov R6,R24
 04E2                   .dbline 239
 04E2           ;         for(;e>=add;add++)
 04E2 0EC0              rjmp L76
 04E4           L73:
 04E4                   .dbline 240
 04E4                   .dbline 240
 04E4 80E0              ldi R24,<_data
 04E6 90E0              ldi R25,>_data
 04E8 E0910000          lds R30,_add
 04EC FF27              clr R31
 04EE E80F              add R30,R24
 04F0 F91F              adc R31,R25
 04F2 80E2              ldi R24,32
 04F4 8083              std z+0,R24
 04F6                   .dbline 240
 04F6           L74:
 04F6                   .dbline 239
 04F6 80910000          lds R24,_add
 04FA 8F5F              subi R24,255    ; addi 1
 04FC 80930000          sts _add,R24
 0500           L76:
 0500                   .dbline 239
 0500 20900000          lds R2,_add
 0504 6214              cp R6,R2
 0506 70F7              brsh L73
 0508                   .dbline 241
 0508           ;          {data[add]=' ';}
 0508           ;           LCD_updata;
 0508 2224              clr R2
 050A 20920000          sts _new,R2
 050E                   .dbline -2
 050E           L42:
 050E 2A96              adiw R28,10
 0510 00D0              rcall pop_gset5
 0512 2296              adiw R28,2
 0514                   .dbline 0 ; func end
 0514 0895              ret
 0516                   .dbsym r c 10 c
 0516                   .dbsym r b 12 c
 0516                   .dbsym l lcd 0 A[10:10]c
 0516                   .dbsym r i 14 c
 0516                   .dbsym r e 6 c
 0516                   .dbsym r s 8 pkc
 0516                   .dbsym l dat 24 l
 0516                   .dbsym l d 22 c
 0516                   .dbsym l y 20 c
 0516                   .dbsym r x 14 c
 0516                   .dbend
                        .area lit(rom, con, rel)
 000C           L78:
 000C 00                .byte 0
 000D 00000000000000    .byte 0,0,0,0,0,0,0
                        .area text(rom, con, rel)
 0516                   .dbfile E:\刻录的\电子技术\项目\驱动程序\LCD1602四线接口应用范例\LCD_1602_Driver.c
 0516                   .dbfunc e LCD_write_time _LCD_write_time fV
 0516           ;            lcd -> y+0
 0516           ;              i -> R20
 0516           ;              s -> y+16
 0516           ;              m -> y+14
 0516           ;              h -> y+12
 0516           ;              y -> R22
 0516           ;              x -> R20
                        .even
 0516           _LCD_write_time::
 0516 00D0              rcall push_gset2
 0518 622F              mov R22,R18
 051A 402F              mov R20,R16
 051C 2897              sbiw R28,8
 051E                   .dbline -1
 051E                   .dbline 252
 051E           ;   }
 051E           ; /*-----------------------------------------------------------------------
 051E           ; LCD_write_time  : 数字显示函数
 051E           ; 
 051E           ; 输入参数:
 051E           ;           X、Y    : 显示数据的起始的位置
 051E           ;                 h,m,s   :时,分,秒
 051E           ; 编写日期          :2005-10-19                
 051E           ; -----------------------------------------------------------------------*/ 
 051E           ; void LCD_write_time(unsigned char x,unsigned char y,unsigned char h,unsigned char m,unsigned char s)
 051E           ;   { 
 051E                   .dbline 254
 051E           ;     unsigned char  i;
 051E           ;       unsigned char  lcd[8]={0};
 051E 80E0              ldi R24,<L78
 0520 90E0              ldi R25,>L78
 0522 FE01              movw R30,R28
 0524 08E0              ldi R16,8
 0526 10E0              ldi R17,0
 0528 FA93              st -y,R31
 052A EA93              st -y,R30
 052C 9A93              st -y,R25
 052E 8A93              st -y,R24
 0530 00D0              rcall asgncblk
 0532                   .dbline 255
 0532           ;       if(y<2)
 0532 6230              cpi R22,2
 0534 30F4              brsh L79
 0536                   .dbline 256
 0536           ;       add=y*16+x;//设置起始座标LCD_set_xy( X, Y );  
 0536 80E1              ldi R24,16
 0538 869F              mul R24,R22
 053A 202C              mov R2,R0
 053C 240E              add R2,R20
 053E 20920000          sts _add,R2
 0542           L79:
 0542                   .dbline 257
 0542           ;       lcd[0]=h/10+48;
 0542 1AE0              ldi R17,10
 0544 0C85              ldd R16,y+12
 0546 00D0              rcall div8u
 0548 802F              mov R24,R16
 054A 805D              subi R24,208    ; addi 48
 054C 8883              std y+0,R24
 054E                   .dbline 258
 054E           ;       lcd[1]=h%10+48;
 054E 1AE0              ldi R17,10
 0550 0C85              ldd R16,y+12
 0552 00D0              rcall mod8u
 0554 802F              mov R24,R16
 0556 805D              subi R24,208    ; addi 48
 0558 8983              std y+1,R24
 055A                   .dbline 259
 055A           ;       lcd[2]=':';
 055A 8AE3              ldi R24,58
 055C 8A83              std y+2,R24
 055E                   .dbline 260
 055E           ;       lcd[3]=m/10+48;
 055E 1AE0              ldi R17,10
 0560 0E85              ldd R16,y+14
 0562 00D0              rcall div8u
 0564 802F              mov R24,R16
 0566 805D              subi R24,208    ; addi 48
 0568 8B83              std y+3,R24
 056A                   .dbline 261
 056A           ;       lcd[4]=m%10+48;
 056A 1AE0              ldi R17,10
 056C 0E85              ldd R16,y+14
 056E 00D0              rcall mod8u
 0570 802F              mov R24,R16
 0572 805D              subi R24,208    ; addi 48
 0574 8C83              std y+4,R24
 0576                   .dbline 262
 0576           ;       lcd[5]=':';  
 0576 8AE3              ldi R24,58
 0578 8D83              std y+5,R24
 057A                   .dbline 263
 057A           ;       lcd[6]=s/10+48;
 057A 1AE0              ldi R17,10
 057C 0889              ldd R16,y+16
 057E 00D0              rcall div8u
 0580 802F              mov R24,R16
 0582 805D              subi R24,208    ; addi 48

⌨️ 快捷键说明

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