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

📄 lcd_1602_driver.lis

📁 LCD1602四线接口应用范例(AVR_GCC)
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0276 FD01              movw R30,R26
 0278 A491              lpm R26,Z
 027A E991              ld R30,y+
 027C F991              ld R31,y+
 027E A083              std z+0,R26
 0280                   .dbline 160
 0280           L35:
 0280                   .dbline 161
 0280 6F5F              subi R22,255  ; offset = 1
 0282 7F4F              sbci R23,255
 0284                   .dbline 162
 0284 80910000          lds R24,_add
 0288 8F5F              subi R24,255    ; addi 1
 028A 80930000          sts _add,R24
 028E                   .dbline 163
 028E           L32:
 028E                   .dbline 156
 028E FB01              movw R30,R22
 0290 E491              lpm R30,Z
 0292 EE23              tst R30
 0294 C9F6              brne L31
 0296                   .dbline 164
 0296           ;              s ++;//指针加1
 0296           ;              add++;//显存地址加1
 0296           ;       }
 0296           ;         if(y==1)
 0296 2130              cpi R18,1
 0298 81F4              brne L41
 029A                   .dbline 165
 029A           ;           e+=16;
 029A 405F              subi R20,240    ; addi 16
 029C                   .dbline 166
 029C           ;         for(;e>=add;add++)
 029C 0EC0              rjmp L41
 029E           L38:
 029E                   .dbline 167
 029E                   .dbline 167
 029E 80E0              ldi R24,<_data
 02A0 90E0              ldi R25,>_data
 02A2 E0910000          lds R30,_add
 02A6 FF27              clr R31
 02A8 E80F              add R30,R24
 02AA F91F              adc R31,R25
 02AC 80E2              ldi R24,32
 02AE 8083              std z+0,R24
 02B0                   .dbline 167
 02B0           L39:
 02B0                   .dbline 166
 02B0 80910000          lds R24,_add
 02B4 8F5F              subi R24,255    ; addi 1
 02B6 80930000          sts _add,R24
 02BA           L41:
 02BA                   .dbline 166
 02BA 20900000          lds R2,_add
 02BE 4215              cp R20,R2
 02C0 70F7              brsh L38
 02C2                   .dbline 168
 02C2           ;          {data[add]=' ';}
 02C2           ;       LCD_updata;
 02C2 2224              clr R2
 02C4 20920000          sts _new,R2
 02C8                   .dbline -2
 02C8           L28:
 02C8 00D0              rcall pop_gset2
 02CA                   .dbline 0 ; func end
 02CA 0895              ret
 02CC                   .dbsym r e 20 c
 02CC                   .dbsym r s 22 pkc
 02CC                   .dbsym r y 18 c
 02CC                   .dbsym r x 16 c
 02CC                   .dbend
                        .area lit(rom, con, rel)
 0002           L43:
 0002 00                .byte 0
 0003 000000000000000000        .byte 0,0,0,0,0,0,0,0,0
                        .area text(rom, con, rel)
 02CC                   .dbfile E:\刻录的\电子技术\项目\驱动程序\LCD1602四线接口应用范例\LCD_1602_Driver.c
 02CC                   .dbfunc e LCD_write_number _LCD_write_number fV
 02CC           ;              c -> R10
 02CC           ;              b -> R12
 02CC           ;            lcd -> y+0
 02CC           ;              i -> R14
 02CC           ;              e -> R6
 02CC           ;              s -> R8,R9
 02CC           ;            dat -> y+24
 02CC           ;              d -> y+22
 02CC           ;              y -> y+20
 02CC           ;              x -> R14
                        .even
 02CC           _LCD_write_number::
 02CC 3A93              st -y,r19
 02CE 2A93              st -y,r18
 02D0 00D0              rcall push_gset5
 02D2 E02E              mov R14,R16
 02D4 2A97              sbiw R28,10
 02D6 8C8C              ldd R8,y+28
 02D8 9D8C              ldd R9,y+29
 02DA 6E8C              ldd R6,y+30
 02DC                   .dbline -1
 02DC                   .dbline 182
 02DC           ;   }
 02DC           ; /*-----------------------------------------------------------------------
 02DC           ; LCD_write_number  : 数字显示函数
 02DC           ; 
 02DC           ; 输入参数:
 02DC           ;           X、Y    : 显示字符串的位置
 02DC           ;                d     :在第d位插入小数点
 02DC           ;                data      :要显示的数据 长整形
 02DC           ;                    *s     :数据的单位
 02DC           ;                e       : 把从最后一个字符到x=e之间的内容删除
 02DC           ; 编写日期       :2005/10/18                   
 02DC           ; -----------------------------------------------------------------------*/ 
 02DC           ; void LCD_write_number(unsigned char x,unsigned char y,unsigned char d,unsigned long dat,const unsigned char *s,unsigned char e)
 02DC           ;   { 
 02DC                   .dbline 184
 02DC           ;     unsigned char  i;
 02DC           ;       unsigned char b=0;
 02DC CC24              clr R12
 02DE                   .dbline 185
 02DE           ;       unsigned char c='.';
 02DE 8EE2              ldi R24,46
 02E0 A82E              mov R10,R24
 02E2                   .dbline 186
 02E2           ;       unsigned char lcd[10]={0};
 02E2 80E0              ldi R24,<L43
 02E4 90E0              ldi R25,>L43
 02E6 FE01              movw R30,R28
 02E8 0AE0              ldi R16,10
 02EA 10E0              ldi R17,0
 02EC FA93              st -y,R31
 02EE EA93              st -y,R30
 02F0 9A93              st -y,R25
 02F2 8A93              st -y,R24
 02F4 00D0              rcall asgncblk
 02F6                   .dbline 187
 02F6           ;       if(y<2)//如果Y>1则不重新计算地址
 02F6 8C89              ldd R24,y+20
 02F8 8230              cpi R24,2
 02FA 38F4              brsh L44
 02FC                   .dbline 188
 02FC           ;     add=y*16+x;//设置起始座标
 02FC 80E1              ldi R24,16
 02FE 0C88              ldd R0,y+20
 0300 809D              mul R24,R0
 0302 202C              mov R2,R0
 0304 2E0C              add R2,R14
 0306 20920000          sts _add,R2
 030A           L44:
 030A                   .dbline 190
 030A           ;     
 030A           ;    for (i=10;i>0;i--) 
 030A 8AE0              ldi R24,10
 030C E82E              mov R14,R24
 030E 36C0              rjmp L49
 0310           L46:
 0310                   .dbline 191
 0310                   .dbline 192
 0310 4AE0              ldi R20,10
 0312 50E0              ldi R21,0
 0314 60E0              ldi R22,0
 0316 70E0              ldi R23,0
 0318 FE01              movw R30,R28
 031A 208C              ldd R2,z+24
 031C 318C              ldd R3,z+25
 031E 428C              ldd R4,z+26
 0320 538C              ldd R5,z+27
 0322 7A93              st -y,R23
 0324 6A93              st -y,R22
 0326 5A93              st -y,R21
 0328 4A93              st -y,R20
 032A 8101              movw R16,R2
 032C 9201              movw R18,R4
 032E 00D0              rcall mod32u
 0330 1801              movw R2,R16
 0332 2901              movw R4,R18
 0334 40E3              ldi R20,48
 0336 50E0              ldi R21,0
 0338 60E0              ldi R22,0
 033A 70E0              ldi R23,0
 033C 240E              add R2,R20
 033E 351E              adc R3,R21
 0340 461E              adc R4,R22
 0342 571E              adc R5,R23
 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 2082              std z+0,R2
 0350                   .dbline 193
 0350 4AE0              ldi R20,10
 0352 50E0              ldi R21,0
 0354 60E0              ldi R22,0
 0356 70E0              ldi R23,0
 0358 FE01              movw R30,R28
 035A 208C              ldd R2,z+24
 035C 318C              ldd R3,z+25
 035E 428C              ldd R4,z+26
 0360 538C              ldd R5,z+27
 0362 7A93              st -y,R23
 0364 6A93              st -y,R22
 0366 5A93              st -y,R21
 0368 4A93              st -y,R20
 036A 8101              movw R16,R2
 036C 9201              movw R18,R4
 036E 00D0              rcall div32u
 0370 FE01              movw R30,R28
 0372 008F              std z+24,R16
 0374 118F              std z+25,R17
 0376 228F              std z+26,R18
 0378 338F              std z+27,R19
 037A                   .dbline 194
 037A           L47:
 037A                   .dbline 190
 037A EA94              dec R14
 037C           L49:
 037C                   .dbline 190
 037C 2224              clr R2
 037E 2E14              cp R2,R14
 0380 08F4              brsh X1
 0382 C6CF              rjmp L46
 0384           X1:
 0384                   .dbline 196
 0384           ;       {
 0384           ;         lcd[i]=dat%10+48;
 0384           ;               dat=dat/10;
 0384           ;       }
 0384           ;         
 0384           ;       for(i=1;i<11;i++)
 0384 EE24              clr R14
 0386 E394              inc R14
 0388 79C0              rjmp L53
 038A           L50:
 038A                   .dbline 197
 038A           ;          { 
 038A                   .dbline 198
 038A           ;            if(i==11-d)
 038A 8BE0              ldi R24,11
 038C 0E88              ldd R0,y+22
 038E 8019              sub R24,R0
 0390 E816              cp R14,R24
 0392 C1F4              brne L54
 0394                   .dbline 199
 0394           ;                  {  
 0394                   .dbline 200
 0394           ;                     if(lcd_data[add]==c)
 0394 80E0              ldi R24,<_lcd_data
 0396 90E0              ldi R25,>_lcd_data
 0398 E0910000          lds R30,_add
 039C FF27              clr R31
 039E E80F              add R30,R24
 03A0 F91F              adc R31,R25
 03A2 2080              ldd R2,z+0
 03A4 2A14              cp R2,R10
 03A6 09F4              brne L56
 03A8                   .dbline 201
 03A8           ;                            {}
 03A8                   .dbline 201
 03A8 08C0              rjmp L57
 03AA           L56:
 03AA                   .dbline 203
 03AA           ;                         else
 03AA           ;                            {data[add]=c;}     
 03AA                   .dbline 203
 03AA 80E0              ldi R24,<_data
 03AC 90E0              ldi R25,>_data
 03AE E0910000          lds R30,_add
 03B2 FF27              clr R31
 03B4 E80F              add R30,R24
 03B6 F91F              adc R31,R25
 03B8 A082              std z+0,R10
 03BA                   .dbline 203
 03BA           L57:
 03BA                   .dbline 204
 03BA           ;                         add++;
 03BA 80910000          lds R24,_add
 03BE 8F5F              subi R24,255    ; addi 1
 03C0 80930000          sts _add,R24
 03C4                   .dbline 205
 03C4           ;                       }   
 03C4           L54:
 03C4                   .dbline 206
 03C4           ;            if((lcd[i]-48+b)==0)
 03C4 CE01              movw R24,R28
 03C6 EE2D              mov R30,R14
 03C8 FF27              clr R31
 03CA E80F              add R30,R24
 03CC F91F              adc R31,R25
 03CE 8081              ldd R24,z+0
 03D0 8053              subi R24,48
 03D2 8C0D              add R24,R12
 03D4 09F0              breq X2
 03D6 2BC0              rjmp L58
 03D8           X2:
 03D8                   .dbline 207
 03D8           ;            {
 03D8                   .dbline 208
 03D8           ;                  if(i>=(10-d))
 03D8 8AE0              ldi R24,10
 03DA 0E88              ldd R0,y+22
 03DC 8019              sub R24,R0
 03DE E816              cp R14,R24
 03E0 08F4              brsh X3
 03E2 4BC0              rjmp L59
 03E4           X3:
 03E4                   .dbline 209
 03E4           ;                  { 
 03E4                   .dbline 210
 03E4           ;                     if(lcd_data[add]==lcd[i])
 03E4 CE01              movw R24,R28
 03E6 EE2D              mov R30,R14
 03E8 FF27              clr R31
 03EA E80F              add R30,R24
 03EC F91F              adc R31,R25
 03EE 2080              ldd R2,z+0
 03F0 80E0              ldi R24,<_lcd_data
 03F2 90E0              ldi R25,>_lcd_data
 03F4 E0910000          lds R30,_add
 03F8 FF27              clr R31
 03FA E80F              add R30,R24
 03FC F91F              adc R31,R25
 03FE 3080              ldd R3,z+0
 0400 3214              cp R3,R2
 0402 09F4              brne L62
 0404                   .dbline 211
 0404           ;                            {}
 0404                   .dbline 211

⌨️ 快捷键说明

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