                        .module LCD_1602_Driver.c
                        .area data(ram, con, rel)
 0000           _new::
 0000                   .blkb 1
                        .area idata
 0000 20                .byte 32
                        .area data(ram, con, rel)
 0001                   .dbfile E:\¿ÌÂ¼µÄ\µç×Ó¼¼Êõ\ÏîÄ¿\Çý¶¯³ÌÐò\LCD1602ËÄÏß½Ó¿ÚÓ¦ÓÃ·¶Àý\LCD_1602_Driver.c
 0001                   .dbsym e new _new c
 0001           _num::
 0001                   .blkb 2
                        .area idata
 0001 0000              .word 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\¿ÌÂ¼µÄ\µç×Ó¼¼Êõ\ÏîÄ¿\Çý¶¯³ÌÐò\LCD1602ËÄÏß½Ó¿ÚÓ¦ÓÃ·¶Àý\LCD_1602_Driver.c
 0003                   .dbsym e num _num i
                        .area text(rom, con, rel)
 0000                   .dbfile E:\¿ÌÂ¼µÄ\µç×Ó¼¼Êõ\ÏîÄ¿\Çý¶¯³ÌÐò\LCD1602ËÄÏß½Ó¿ÚÓ¦ÓÃ·¶Àý\LCD_1602_Driver.c
 0000                   .dbfunc e LCD_init _LCD_init fV
                        .even
 0000           _LCD_init::
 0000                   .dbline -1
 0000                   .dbline 21
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; #include "LCD_1602.h"
 0000           ; void delay_nms(unsigned int n);
 0000           ; void delay_nus(unsigned int n);
 0000           ; unsigned char lcd_data[32];//32×Ö½ÚÏÔ´æ,¼ÇÂ¼LCDÉÏÏÔÊ¾µÄÊý¾Ý
 0000           ; unsigned char data[32];//32×Ö½Ú»º´æ,±£´æ½«ÒªÐ´ÈëLCDµÄÊý¾Ý
 0000           ; unsigned char add;//ÏÔ´æµØÖ·±êºÅ
 0000           ; unsigned char new=32;//ÏÔ´æ±êºÅ 
 0000           ; unsigned int num=0;
 0000           ; /**********************************************************
 0000           ; TC1602B LCD DISPLAY
 0000           ; ½¨Á¢Ê±¼ä£º2005Äê12ÔÂ12ºÅ
 0000           ; ÐÞ¸ÄÈÕÆÚ£º2005Äê12ÔÂ12ºÅ
 0000           ; LCD_writeº¯Êý¹¦ÄÜ£ºµ±command£½0Ê±£¬ÏòLCDÐ´ÈëÊý¾Ý£¬·ñÔòÏòLCDÐ´
 0000           ;                    ÈëÃüÁî
 0000           ; LCDµÚÒ»ÐÐÏÔÊ¾¼Ä´æÆ÷µØÖ·£º0X80-0X8F
 0000           ; LCDµÚ¶þÐÐÏÔÊ¾¼Ä´æÆ÷µØÖ·£º0XC0-0XCF
 0000           ; **********************************************************/
 0000           ; void LCD_init(void)
 0000           ;   { 
 0000                   .dbline 22
 0000           ;      LCD_EN_DDR|=LCD_EN;//Éè¶¨¸ÃÒý½Å·½ÏòÎªÊä³ö
 0000 8E9A              sbi 0x11,6
 0002                   .dbline 23
 0002           ;        LCD_RS_DDR|=LCD_RS;//Éè¶¨¸ÃÒý½Å·½ÏòÎªÊä³ö
 0002 8F9A              sbi 0x11,7
 0004                   .dbline 24
 0004           ;        LCD_D4_DDR|=LCD_D4;//Éè¶¨Êý¾Ý¿ÚÎªÊä³ö 
 0004 8D9A              sbi 0x11,5
 0006                   .dbline 25
 0006           ;        LCD_D5_DDR|=LCD_D5;//Éè¶¨Êý¾Ý¿ÚÎªÊä³ö  
 0006 8C9A              sbi 0x11,4
 0008                   .dbline 26
 0008           ;        LCD_D6_DDR|=LCD_D6;//Éè¶¨Êý¾Ý¿ÚÎªÊä³ö  
 0008 8B9A              sbi 0x11,3
 000A                   .dbline 27
 000A           ;        LCD_D7_DDR|=LCD_D7;//Éè¶¨Êý¾Ý¿ÚÎªÊä³ö
 000A 8A9A              sbi 0x11,2
 000C                   .dbline 29
 000C           ;        
 000C           ;         LCD_EN_PORT&=~LCD_EN;//ENÉèÎªµÍµçÆ½
 000C 9698              cbi 0x12,6
 000E                   .dbline 30
 000E           ;         LCD_RS_PORT&=~LCD_RS;//RSÉèÎªµÍµçÆ½
 000E 9798              cbi 0x12,7
 0010                   .dbline 31
 0010           ;         LCD_D4_PORT&=~LCD_D4;//Êý¾Ý¿ÚÖÃµÍµçÆ½
 0010 9598              cbi 0x12,5
 0012                   .dbline 32
 0012           ;         LCD_D5_PORT&=~LCD_D5;//Êý¾Ý¿ÚÖÃµÍµçÆ½
 0012 9498              cbi 0x12,4
 0014                   .dbline 33
 0014           ;         LCD_D6_PORT&=~LCD_D6;//Êý¾Ý¿ÚÖÃµÍµçÆ½
 0014 9398              cbi 0x12,3
 0016                   .dbline 34
 0016           ;         LCD_D7_PORT&=~LCD_D7;//Êý¾Ý¿ÚÖÃµÍµçÆ½
 0016 9298              cbi 0x12,2
 0018                   .dbline 36
 0018           ;         
 0018           ;     LCD_write_char(0,0x33);      //4bit test
 0018 23E3              ldi R18,51
 001A 30E0              ldi R19,0
 001C 0027              clr R16
 001E 1127              clr R17
 0020 2ED0              rcall _LCD_write_char
 0022                   .dbline 37
 0022           ;       delay_nms(25);
 0022 09E1              ldi R16,25
 0024 10E0              ldi R17,0
 0026 00D0              rcall _delay_nms
 0028                   .dbline 38
 0028           ;       LCD_write_char(0,0x32);
 0028 22E3              ldi R18,50
 002A 30E0              ldi R19,0
 002C 0027              clr R16
 002E 1127              clr R17
 0030 26D0              rcall _LCD_write_char
 0032                   .dbline 39
 0032           ;       delay_nms(15);
 0032 0FE0              ldi R16,15
 0034 10E0              ldi R17,0
 0036 00D0              rcall _delay_nms
 0038                   .dbline 40
 0038           ;       LCD_write_char(0,0x28);
 0038 28E2              ldi R18,40
 003A 30E0              ldi R19,0
 003C 0027              clr R16
 003E 1127              clr R17
 0040 1ED0              rcall _LCD_write_char
 0042                   .dbline 41
 0042           ;       delay_nms(15);
 0042 0FE0              ldi R16,15
 0044 10E0              ldi R17,0
 0046 00D0              rcall _delay_nms
 0048                   .dbline 42
 0048           ;     LCD_write_char(0,0x0C);      //ÏÔÊ¾¿ª
 0048 2CE0              ldi R18,12
 004A 30E0              ldi R19,0
 004C 0027              clr R16
 004E 1127              clr R17
 0050 16D0              rcall _LCD_write_char
 0052                   .dbline 43
 0052           ;       delay_nms(15);
 0052 0FE0              ldi R16,15
 0054 10E0              ldi R17,0
 0056 00D0              rcall _delay_nms
 0058                   .dbline 44
 0058           ;     LCD_write_char(0,0x01);      //ÏÔÊ¾ÇåÆÁ
 0058 21E0              ldi R18,1
 005A 30E0              ldi R19,0
 005C 0027              clr R16
 005E 1127              clr R17
 0060 0ED0              rcall _LCD_write_char
 0062                   .dbline 45
 0062           ;       delay_nms(15);
 0062 0FE0              ldi R16,15
 0064 10E0              ldi R17,0
 0066 00D0              rcall _delay_nms
 0068                   .dbline 46
 0068           ;     LCD_write_char(0,0x06);      //ÏÔÊ¾¹â±êÒÆ¶¯ÉèÖÃ   
 0068 26E0              ldi R18,6
 006A 30E0              ldi R19,0
 006C 0027              clr R16
 006E 1127              clr R17
 0070 06D0              rcall _LCD_write_char
 0072                   .dbline 47
 0072           ;       LCD_clear();
 0072 68D0              rcall _LCD_clear
 0074                   .dbline 48
 0074           ;       delay_nms(10);
 0074 0AE0              ldi R16,10
 0076 10E0              ldi R17,0
 0078 00D0              rcall _delay_nms
 007A                   .dbline 49
 007A           ;       LCD_init_CGRAM(); 
 007A 2DD3              rcall _LCD_init_CGRAM
 007C                   .dbline -2
 007C           L1:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbend
 007E                   .dbfunc e LCD_write_char _LCD_write_char fV
 007E           ;           data -> R20,R21
 007E           ;        command -> R22,R23
                        .even
 007E           _LCD_write_char::
 007E 00D0              rcall push_gset2
 0080 A901              movw R20,R18
 0082 B801              movw R22,R16
 0084                   .dbline -1
 0084                   .dbline 57
 0084           ;   }
 0084           ; /*-----------------------------------------------------------------------
 0084           ; LCD_write_char    : Ð´Ò»¸ö×Ö½Úµ½LCDµÄº¯Êý
 0084           ; ±àÐ´ÈÕÆÚ             £º2005-12-12 
 0084           ; ×îºóÐÞ¸ÄÈÕÆÚ      £º2005-12-12                
 0084           ; -----------------------------------------------------------------------*/
 0084           ; void LCD_write_char(unsigned command,unsigned data)
 0084           ;   { 
 0084                   .dbline 58
 0084           ;     if (command == 0)
 0084 6030              cpi R22,0
 0086 6707              cpc R22,R23
 0088 11F4              brne L3
 008A           X0:
 008A                   .dbline 59
 008A           ;       LCD_RS_PORT &= ~LCD_RS;   //RS=0  Ð´µØÖ·
 008A 9798              cbi 0x12,7
 008C 01C0              rjmp L4
 008E           L3:
 008E                   .dbline 61
 008E           ;       else
 008E           ;     LCD_RS_PORT |= LCD_RS;    //RS=1 Ð´Êý¾Ý
 008E 979A              sbi 0x12,7
 0090           L4:
 0090                   .dbline 63
 0090           ;       
 0090           ;     LCD_write_DATA_PORT(data);//Ð´¸ß4Î»
 0090 042F              mov R16,R20
 0092 18D0              rcall _LCD_write_DATA_PORT
 0094                   .dbline 64
 0094           ;     LCD_write_DATA_PORT(data<<4);//Ð´µÍ4Î»
 0094 042F              mov R16,R20
 0096 000F              lsl R16
 0098 111F              rol R17
 009A 000F              lsl R16
 009C 111F              rol R17
 009E 000F              lsl R16
 00A0 111F              rol R17
 00A2 000F              lsl R16
 00A4 111F              rol R17
 00A6 0ED0              rcall _LCD_write_DATA_PORT
 00A8                   .dbline 65
 00A8           ;       delay_nus(250);
 00A8 0AEF              ldi R16,250
 00AA 10E0              ldi R17,0
 00AC 00D0              rcall _delay_nus
 00AE                   .dbline 66
 00AE           ;       num++;//Í³¼ÆÏòLCD·¢ËÍµÄ×Ö½ÚÊý
 00AE 80910100          lds R24,_num
 00B2 90910200          lds R25,_num+1
 00B6 0196              adiw R24,1
 00B8 90930200          sts _num+1,R25
 00BC 80930100          sts _num,R24
 00C0                   .dbline -2
 00C0           L2:
 00C0 00D0              rcall pop_gset2
 00C2                   .dbline 0 ; func end
 00C2 0895              ret
 00C4                   .dbsym r data 20 i
 00C4                   .dbsym r command 22 i
 00C4                   .dbend
 00C4                   .dbfunc e LCD_write_DATA_PORT _LCD_write_DATA_PORT fV
 00C4           ;           data -> R20
                        .even
 00C4           _LCD_write_DATA_PORT::
 00C4 00D0              rcall push_gset1
 00C6 402F              mov R20,R16
 00C8                   .dbline -1
 00C8                   .dbline 76
 00C8           ;   }
 00C8           ; /*-----------------------------------------------------------------------
 00C8           ; LCD_write_DATA_PORT : Ð´Êý¾Ýµ½LCDÊý¾Ý¿Úº¯Êý
 00C8           ; 
 00C8           ; ÊäÈë²ÎÊýdata   £ºÒªÐ´ÈëµÄÊý¾Ý(½ö¸ß4Î»)
 00C8           ; ±àÐ´ÈÕÆÚ          £º2005-12-12
 00C8           ; ×îºóÐÞ¸ÄÈÕÆÚ   £º2005-12-12           
 00C8           ; -----------------------------------------------------------------------*/
 00C8           ; void LCD_write_DATA_PORT(unsigned char data)
 00C8           ; {   
 00C8                   .dbline 77
 00C8           ;     if((data>>4)%2)
 00C8 12E0              ldi R17,2
 00CA 042F              mov R16,R20
 00CC 0295              swap R16
 00CE 0F70              andi R16,#0x0F
 00D0 00D0              rcall mod8u
 00D2 0023              tst R16
 00D4 11F0              breq L6
 00D6                   .dbline 78
 00D6           ;         LCD_D4_PORT |=LCD_D4;
 00D6 959A              sbi 0x12,5
 00D8 01C0              rjmp L7
 00DA           L6:
 00DA                   .dbline 80
 00DA           ;       else
 00DA           ;         LCD_D4_PORT &=~LCD_D4;
 00DA 9598              cbi 0x12,5
 00DC           L7:
 00DC                   .dbline 82
 00DC           ;       
 00DC           ;       if((data>>5)%2)
 00DC 12E0              ldi R17,2
 00DE 042F              mov R16,R20
 00E0 0695              lsr R16
 00E2 0695              lsr R16
 00E4 0695              lsr R16
 00E6 0695              lsr R16
 00E8 0695              lsr R16
 00EA 00D0              rcall mod8u
 00EC 0023              tst R16
 00EE 11F0              breq L8
 00F0                   .dbline 83
 00F0           ;         LCD_D5_PORT |=LCD_D5;
 00F0 949A              sbi 0x12,4
 00F2 01C0              rjmp L9
 00F4           L8:
 00F4                   .dbline 85
 00F4           ;       else
 00F4           ;         LCD_D5_PORT &=~LCD_D5;
 00F4 9498              cbi 0x12,4
 00F6           L9:
 00F6                   .dbline 87
 00F6           ;         
 00F6           ;       if((data>>6)%2)
 00F6 12E0              ldi R17,2
 00F8 042F              mov R16,R20
 00FA 0695              lsr R16
 00FC 0695              lsr R16
 00FE 0695              lsr R16
 0100 0695              lsr R16
 0102 0695              lsr R16
 0104 0695              lsr R16
 0106 00D0              rcall mod8u
 0108 0023              tst R16
 010A 11F0              breq L10
 010C                   .dbline 88
 010C           ;         LCD_D6_PORT |=LCD_D6;
 010C 939A              sbi 0x12,3
 010E 01C0              rjmp L11
 0110           L10:
 0110                   .dbline 90
 0110           ;       else
 0110           ;         LCD_D6_PORT &=~LCD_D6;
 0110 9398              cbi 0x12,3
 0112           L11:
 0112                   .dbline 92
 0112           ;         
 0112           ;       if((data>>7)%2)
 0112 12E0              ldi R17,2
 0114 042F              mov R16,R20
 0116 0695              lsr R16
 0118 0695              lsr R16
 011A 0695              lsr R16
 011C 0695              lsr R16
 011E 0695              lsr R16
 0120 0695              lsr R16
 0122 0695              lsr R16
 0124 00D0              rcall mod8u
 0126 0023              tst R16
 0128 11F0              breq L12
 012A                   .dbline 93
 012A           ;         LCD_D7_PORT |=LCD_D7;
 012A 929A              sbi 0x12,2
 012C 01C0              rjmp L13
 012E           L12:
 012E                   .dbline 95
 012E           ;       else
 012E           ;         LCD_D7_PORT &=~LCD_D7;
 012E 9298              cbi 0x12,2
 0130           L13:
 0130                   .dbline 97
 0130           ;         
 0130           ;         LCD_EN_PORT |= LCD_EN; //EN¶Ë²úÉúÒ»¸öÓÉµÍµçÆ½±ä¸ßµçÆ½£¬Ð´LCD
 0130 969A              sbi 0x12,6
 0132                   .dbline 98
 0132           ;         delay_nus(25);
 0132 09E1              ldi R16,25
 0134 10E0              ldi R17,0
 0136 00D0              rcall _delay_nus
 0138                   .dbline 99
 0138           ;       LCD_EN_PORT &= ~LCD_EN; //EN¶Ë²úÉúÒ»¸öÓÉ¸ßµçÆ½±äµÍµçÆ½£¬Ð´LCD
 0138 9698              cbi 0x12,6
 013A                   .dbline 100
 013A           ;         delay_nus(25);
 013A 09E1              ldi R16,25
 013C 10E0              ldi R17,0
 013E 00D0              rcall _delay_nus
 0140                   .dbline -2
 0140           L5:
 0140 00D0              rcall pop_gset1
 0142                   .dbline 0 ; func end
 0142 0895              ret
 0144                   .dbsym r data 20 c
 0144                   .dbend
 0144                   .dbfunc e LCD_clear _LCD_clear fV
 0144           ;              i -> R20
                        .even
 0144           _LCD_clear::
 0144 00D0              rcall push_gset1
 0146                   .dbline -1
 0146                   .dbline 110
 0146           ; }
 0146           ; /*-----------------------------------------------------------------------
 0146           ; LCD_clear    : Çå³ýÆÁÄ»µÄº¯Êý
 0146           ; 
 0146           ; ÊäÈë²ÎÊý      £ºÎÞ
 0146           ; ±àÐ´ÈÕÆÚ      £º2005/10/18    
 0146           ;        ËµÃ÷      £º   lcd_data[]Ò²»á±»Çå0
 0146           ; -----------------------------------------------------------------------*/
 0146           ; void LCD_clear(void)
 0146           ;   {  
 0146                   .dbline 112
 0146           ;      unsigned char i;
 0146           ;      LCD_write_char(0,0x01);//ÏÔÊ¾ÇåÆÁ
 0146 21E0              ldi R18,1
 0148 30E0              ldi R19,0
 014A 0027              clr R16
 014C 1127              clr R17
 014E 97DF              rcall _LCD_write_char
 0150                   .dbline 113
 0150           ;        for(i=0;i<32;i++)
 0150 4427              clr R20
 0152 09C0              rjmp L18
 0154           L15:
 0154                   .dbline 114
 0154                   .dbline 115
 0154 80E0              ldi R24,<_lcd_data
 0156 90E0              ldi R25,>_lcd_data
 0158 E42F              mov R30,R20
 015A FF27              clr R31
 015C E80F              add R30,R24
 015E F91F              adc R31,R25
 0160 2224              clr R2
 0162 2082              std z+0,R2
 0164                   .dbline 116
 0164           L16:
 0164                   .dbline 113
 0164 4395              inc R20
 0166           L18:
 0166                   .dbline 113
 0166 4032              cpi R20,32
 0168 A8F3              brlo L15
 016A                   .dbline 117
 016A           ;          {
 016A           ;             lcd_data[i]=0;
 016A           ;          }
 016A           ;          delay_nus(500);
 016A 04EF              ldi R16,500
 016C 11E0              ldi R17,1
 016E 00D0              rcall _delay_nus
 0170                   .dbline -2
 0170           L14:
 0170 00D0              rcall pop_gset1
 0172                   .dbline 0 ; func end
 0172 0895              ret
 0174                   .dbsym r i 20 c
 0174                   .dbend
                        .area lit(rom, con, rel)
 0000           L20:
 0000 00                .byte 0
 0001 00                .byte 0
                        .area text(rom, con, rel)
 0174                   .dbfile E:\¿ÌÂ¼µÄ\µç×Ó¼¼Êõ\ÏîÄ¿\Çý¶¯³ÌÐò\LCD1602ËÄÏß½Ó¿ÚÓ¦ÓÃ·¶Àý\LCD_1602_Driver.c
 0174                   .dbfunc e LCD_check _LCD_check fV
 0174           ;            lcd -> y+0
 0174           ;              i -> R20
 0174           ;              y -> R22
 0174           ;              x -> R20
                        .even
 0174           _LCD_check::
 0174 00D0              rcall push_gset2
 0176 622F              mov R22,R18
 0178 402F              mov R20,R16
 017A 2297              sbiw R28,2
 017C                   .dbline -1
 017C                   .dbline 128
 017C           ;   }
 017C           ; /*-----------------------------------------------------------------------
 017C           ; LCD_check   : Í³¼Æ·¢ËÍÊý¾Ýµ½LCD´ÎÊýµÄº¯Êý
 017C           ; 
 017C           ; ÊäÈë²ÎÊý      £ºx,y ÏÔÊ¾½á¹ûµÄ×ù±ê
 017C           ; ±àÐ´ÈÕÆÚ      £º2005/10/18    
 017C           ;        ËµÃ÷      £ºÈç¹ûÃ¿Ãëµ÷ÓÃÒ»´Î£¬¾ÍÊÇÍ³¼ÆÃ¿ÃëµÄ´ÎÊý
 017C           ; -----------------------------------------------------------------------*/ 
 017C           ; void LCD_check(unsigned char x,unsigned char y) //¼ì²âÃ¿ÃëÖÓÐ´LCD
 017C           ;                                                                       //´ÎÊýµÄº¯Êý
 017C           ;   {  
 017C                   .dbline 130
 017C           ;     unsigned char  i;
 017C           ;       unsigned char  lcd[2]={0};
 017C 80E0              ldi R24,<L20
 017E 90E0              ldi R25,>L20
 0180 FE01              movw R30,R28
 0182 02E0              ldi R16,2
 0184 10E0              ldi R17,0
 0186 FA93              st -y,R31
 0188 EA93              st -y,R30
 018A 9A93              st -y,R25
 018C 8A93              st -y,R24
 018E 00D0              rcall asgncblk
 0190                   .dbline 131
 0190           ;       add=y*16+x;//ÉèÖÃÆðÊ¼×ù±ê
 0190 80E1              ldi R24,16
 0192 869F              mul R24,R22
 0194 202C              mov R2,R0
 0196 240E              add R2,R20
 0198 20920000          sts _add,R2
 019C                   .dbline 132
 019C           ;         lcd[0]=num/10+48;
 019C 2AE0              ldi R18,10
 019E 30E0              ldi R19,0
 01A0 00910100          lds R16,_num
 01A4 10910200          lds R17,_num+1
 01A8 00D0              rcall div16u
 01AA C801              movw R24,R16
 01AC C096              adiw R24,48
 01AE 8883              std y+0,R24
 01B0                   .dbline 133
 01B0           ;               lcd[1]=num%10+48;
 01B0 2AE0              ldi R18,10
 01B2 30E0              ldi R19,0
 01B4 00910100          lds R16,_num
 01B8 10910200          lds R17,_num+1
 01BC 00D0              rcall mod16u
 01BE C801              movw R24,R16
 01C0 C096              adiw R24,48
 01C2 8983              std y+1,R24
 01C4                   .dbline 134
 01C4           ;       num=0;  
 01C4 2224              clr R2
 01C6 3324              clr R3
 01C8 30920200          sts _num+1,R3
 01CC 20920100          sts _num,R2
 01D0                   .dbline 135
 01D0           ;    for (i=0;i<2;i++) 
 01D0 4427              clr R20
 01D2 25C0              rjmp L25
 01D4           L22:
 01D4                   .dbline 136
 01D4           ;       {
 01D4                   .dbline 137
 01D4           ;               if(lcd_data[add]==lcd[i]){}
 01D4 CE01              movw R24,R28
 01D6 E42F              mov R30,R20
 01D8 FF27              clr R31
 01DA E80F              add R30,R24
 01DC F91F              adc R31,R25
 01DE 2080              ldd R2,z+0
 01E0 80E0              ldi R24,<_lcd_data
 01E2 90E0              ldi R25,>_lcd_data
 01E4 E0910000          lds R30,_add
 01E8 FF27              clr R31
 01EA E80F              add R30,R24
 01EC F91F              adc R31,R25
 01EE 3080              ldd R3,z+0
 01F0 3214              cp R3,R2
 01F2 09F4              brne L26
 01F4                   .dbline 137
 01F4                   .dbline 137
 01F4 0EC0              rjmp L27
 01F6           L26:
 01F6                   .dbline 139
 01F6           ;                         else
 01F6           ;                            {data[add]=lcd[i];}
 01F6                   .dbline 139
 01F6 CE01              movw R24,R28
 01F8 E42F              mov R30,R20
 01FA FF27              clr R31
 01FC E80F              add R30,R24
 01FE F91F              adc R31,R25
 0200 2080              ldd R2,z+0
 0202 80E0              ldi R24,<_data
 0204 90E0              ldi R25,>_data
 0206 E0910000          lds R30,_add
 020A FF27              clr R31
 020C E80F              add R30,R24
 020E F91F              adc R31,R25
 0210 2082              std z+0,R2
 0212                   .dbline 139
 0212           L27:
 0212                   .dbline 140
 0212 80910000          lds R24,_add
 0216 8F5F              subi R24,255    ; addi 1
 0218 80930000          sts _add,R24
 021C                   .dbline 141
 021C           L23:
 021C                   .dbline 135
 021C 4395              inc R20
 021E           L25:
 021E                   .dbline 135
 021E 4230              cpi R20,2
 0220 C8F2              brlo L22
 0222                   .dbline 142
 0222           ;                         add++;
 0222           ;       }
 0222           ;       LCD_updata;
 0222 2224              clr R2
 0224 20920000          sts _new,R2
 0228                   .dbline -2
 0228           L19:
 0228 2296              adiw R28,2
 022A 00D0              rcall pop_gset2
 022C                   .dbline 0 ; func end
 022C 0895              ret
 022E                   .dbsym l lcd 0 A[2:2]c
 022E                   .dbsym r i 20 c
 022E                   .dbsym r y 22 c
 022E                   .dbsym r x 20 c
 022E                   .dbend
 022E                   .dbfunc e LCD_write_string _LCD_write_string fV
 022E           ;              e -> R20
 022E           ;              s -> R22,R23
 022E           ;              y -> R18
 022E           ;              x -> R16
                        .even
 022E           _LCD_write_string::
 022E 00D0              rcall push_gset2
 0230 6C81              ldd R22,y+4
 0232 7D81              ldd R23,y+5
 0234 4E81              ldd R20,y+6
 0236                   .dbline -1
 0236                   .dbline 153
 0236           ;   }
 0236           ; /*-----------------------------------------------------------------------
 0236           ; LCD_write_string  : Ó¢ÎÄ×Ö·û´®ÏÔÊ¾º¯Êý
 0236           ; 
 0236           ; ÊäÈë²ÎÊý£º*s       £ºÓ¢ÎÄ×Ö·û´®Ö¸Õë£»
 0236           ;                  X¡¢Y    : ÏÔÊ¾×Ö·û´®µÄÎ»ÖÃ
 0236           ;                                e          : °Ñ´Ó×îºóÒ»¸ö×Ö·ûµ½x=eÖ®¼äµÄÄÚÈÝÉ¾³ý
 0236           ; ±àÐ´ÈÕÆÚ          £º2005/10/18                
 0236           ; -----------------------------------------------------------------------*/
 0236           ; void LCD_write_string(unsigned char x,unsigned char y, const unsigned char *s,unsigned char e)
 0236           ;   { 
 0236                   .dbline 154
 0236           ;     if(y<2)
 0236 2230              cpi R18,2
 0238 50F5              brsh L32
 023A                   .dbline 155
 023A           ;       add=y*16+x;//ÉèÖÃÆðÊ¼×ù±ê
 023A 80E1              ldi R24,16
 023C 829F              mul R24,R18
 023E 202C              mov R2,R0
 0240 200E              add R2,R16
 0242 20920000          sts _add,R2
 0246 23C0              rjmp L32
 0248           L31:
 0248                   .dbline 157
 0248           ;     while (*s) 
 0248           ;       { 
 0248                   .dbline 158
 0248           ;           if(lcd_data[add]==*s)//Èç¹ûLCDÉÏÏÔÊ¾µÄÊýºÍ
 0248 80E0              ldi R24,<_lcd_data
 024A 90E0              ldi R25,>_lcd_data
 024C E0910000          lds R30,_add
 0250 FF27              clr R31
 0252 E80F              add R30,R24
 0254 F91F              adc R31,R25
 0256 2080              ldd R2,z+0
 0258 FB01              movw R30,R22
 025A E491              lpm R30,Z
 025C 2E16              cp R2,R30
 025E 09F4              brne L34
 0260                   .dbline 159
 0260           ;                  {}                             //´ýÐ´ÈëµÄÊýÏàÍ¬µÄ»°
 0260                   .dbline 159
 0260 0FC0              rjmp L35
 0262           L34:
 0262                   .dbline 160
 0262           ;               else{data[add]=*s;}//ÒªÏÔÊ¾µÄÊý¾Ý´æÈëÏÔ´æ
 0262                   .dbline 160
 0262 80E0              ldi R24,<_data
 0264 90E0              ldi R25,>_data
 0266 E0910000          lds R30,_add
 026A FF27              clr R31
 026C E80F              add R30,R24
 026E F91F              adc R31,R25
 0270 DB01              movw R26,R22
 0272 FA93              st -y,R31
 0274 EA93              st -y,R30
 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
 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
 0584 8E83              std y+6,R24
 0586                   .dbline 264
 0586           ;       lcd[7]=s%10+48;
 0586 1AE0              ldi R17,10
 0588 0889              ldd R16,y+16
 058A 00D0              rcall mod8u
 058C 802F              mov R24,R16
 058E 805D              subi R24,208    ; addi 48
 0590 8F83              std y+7,R24
 0592                   .dbline 270
 0592           ; /*Ê±ºÍ·ÖÖ®¼äµÄ:µÄÉÁ¶¯Ð§¹û
 0592           ;       if(lcd[7]%2)
 0592           ;          lcd[2]=':';
 0592           ;          else
 0592           ;          lcd[2]=' ';*/
 0592           ;    for (i=0;i<8;i++) 
 0592 4427              clr R20
 0594 25C0              rjmp L91
 0596           L88:
 0596                   .dbline 271
 0596           ;       {
 0596                   .dbline 272
 0596           ;               if(lcd_data[add]==lcd[i])
 0596 CE01              movw R24,R28
 0598 E42F              mov R30,R20
 059A FF27              clr R31
 059C E80F              add R30,R24
 059E F91F              adc R31,R25
 05A0 2080              ldd R2,z+0
 05A2 80E0              ldi R24,<_lcd_data
 05A4 90E0              ldi R25,>_lcd_data
 05A6 E0910000          lds R30,_add
 05AA FF27              clr R31
 05AC E80F              add R30,R24
 05AE F91F              adc R31,R25
 05B0 3080              ldd R3,z+0
 05B2 3214              cp R3,R2
 05B4 09F4              brne L92
 05B6                   .dbline 273
 05B6           ;                            {}
 05B6                   .dbline 273
 05B6 0EC0              rjmp L93
 05B8           L92:
 05B8                   .dbline 275
 05B8           ;                         else
 05B8           ;                            {data[add]=lcd[i];}    
 05B8                   .dbline 275
 05B8 CE01              movw R24,R28
 05BA E42F              mov R30,R20
 05BC FF27              clr R31
 05BE E80F              add R30,R24
 05C0 F91F              adc R31,R25
 05C2 2080              ldd R2,z+0
 05C4 80E0              ldi R24,<_data
 05C6 90E0              ldi R25,>_data
 05C8 E0910000          lds R30,_add
 05CC FF27              clr R31
 05CE E80F              add R30,R24
 05D0 F91F              adc R31,R25
 05D2 2082              std z+0,R2
 05D4                   .dbline 275
 05D4           L93:
 05D4                   .dbline 276
 05D4 80910000          lds R24,_add
 05D8 8F5F              subi R24,255    ; addi 1
 05DA 80930000          sts _add,R24
 05DE                   .dbline 277
 05DE           L89:
 05DE                   .dbline 270
 05DE 4395              inc R20
 05E0           L91:
 05E0                   .dbline 270
 05E0 4830              cpi R20,8
 05E2 C8F2              brlo L88
 05E4                   .dbline 278
 05E4           ;                         add++;
 05E4           ;       }
 05E4           ;       LCD_updata;
 05E4 2224              clr R2
 05E6 20920000          sts _new,R2
 05EA                   .dbline -2
 05EA           L77:
 05EA 2896              adiw R28,8
 05EC 00D0              rcall pop_gset2
 05EE                   .dbline 0 ; func end
 05EE 0895              ret
 05F0                   .dbsym l lcd 0 A[8:8]c
 05F0                   .dbsym r i 20 c
 05F0                   .dbsym l s 16 c
 05F0                   .dbsym l m 14 c
 05F0                   .dbsym l h 12 c
 05F0                   .dbsym r y 22 c
 05F0                   .dbsym r x 20 c
 05F0                   .dbend
 05F0                   .dbfunc e LCD_write_new _LCD_write_new fV
 05F0           ;        address -> R20
 05F0           ;        new_add -> R22
                        .even
 05F0           _LCD_write_new::
 05F0 00D0              rcall push_gset2
 05F2                   .dbline -1
 05F2                   .dbline 287
 05F2           ;   }
 05F2           ; /*----------------------------------------------------
 05F2           ;     LCD_write_new:Ð´ÏÔ´æº¯Êý
 05F2           ;       data[]:32×Ö½ÚµÄÏÔ´æ
 05F2           ;       new:ÏÔ´æ±êºÅ
 05F2           ;       ±àÐ´ÈÕÆÚ:2005/10/18
 05F2           ; -----------------------------------------------------*/  
 05F2           ; void  LCD_write_new(void)
 05F2           ;   {   
 05F2                   .dbline 289
 05F2           ;     unsigned char address;
 05F2           ;       unsigned char new_add=1;//1±íÊ¾Òª¸üÐÂµØÖ·
 05F2 61E0              ldi R22,1
 05F4 4FC0              rjmp L96
 05F6           L95:
 05F6                   .dbline 291
 05F6           ;       while(new<32)//ÏÔ´æ¹²32¸ö×Ö½Ú,±êºÅ´Ó0--31 
 05F6           ;       {    
 05F6                   .dbline 292
 05F6           ;                if(new==16)//»»ÐÐ
 05F6 80910000          lds R24,_new
 05FA 8031              cpi R24,16
 05FC 09F4              brne L98
 05FE                   .dbline 293
 05FE           ;                   new_add=1;     
 05FE 61E0              ldi R22,1
 0600           L98:
 0600                   .dbline 294
 0600           ;            if(data[new])//Ìø¹ýÎª0µÄÏÔ´æ
 0600 80E0              ldi R24,<_data
 0602 90E0              ldi R25,>_data
 0604 E0910000          lds R30,_new
 0608 FF27              clr R31
 060A E80F              add R30,R24
 060C F91F              adc R31,R25
 060E 2080              ldd R2,z+0
 0610 2220              tst R2
 0612 09F4              brne X5
 0614 39C0              rjmp L100
 0616           X5:
 0616                   .dbline 295
 0616           ;             {  
 0616                   .dbline 296
 0616           ;                       if(new_add)//µ±new_add=0Ê±±íÊ¾ÎÞÐè¸üÐÂµØÖ·
 0616 6623              tst R22
 0618 81F0              breq L102
 061A                   .dbline 297
 061A           ;                     {
 061A                   .dbline 298
 061A           ;                        if(new>15)
 061A 8FE0              ldi R24,15
 061C 20900000          lds R2,_new
 0620 8215              cp R24,R2
 0622 18F4              brsh L104
 0624                   .dbline 299
 0624           ;                              address=0xb0+new;
 0624 422D              mov R20,R2
 0626 4055              subi R20,80    ; addi 176
 0628 03C0              rjmp L105
 062A           L104:
 062A                   .dbline 301
 062A           ;                                else
 062A           ;                              address=0x80+new;
 062A 40910000          lds R20,_new
 062E 4058              subi R20,128    ; addi 128
 0630           L105:
 0630                   .dbline 302
 0630           ;                              LCD_write_char(0,address);//ÉèÖÃÆðÊ¼µØÖ·
 0630 242F              mov R18,R20
 0632 3327              clr R19
 0634 0027              clr R16
 0636 1127              clr R17
 0638 22DD              rcall _LCD_write_char
 063A                   .dbline 303
 063A           ;                      }                          
 063A           L102:
 063A                   .dbline 304
 063A           ;                         LCD_write_char(1,data[new]);//Ð´Êý¾Ý
 063A 80E0              ldi R24,<_data
 063C 90E0              ldi R25,>_data
 063E E0910000          lds R30,_new
 0642 FF27              clr R31
 0644 E80F              add R30,R24
 0646 F91F              adc R31,R25
 0648 2081              ldd R18,z+0
 064A 3327              clr R19
 064C 01E0              ldi R16,1
 064E 10E0              ldi R17,0
 0650 16DD              rcall _LCD_write_char
 0652                   .dbline 305
 0652           ;                         lcd_data[new]=data[new];
 0652 80E0              ldi R24,<_data
 0654 90E0              ldi R25,>_data
 0656 E0910000          lds R30,_new
 065A FF27              clr R31
 065C E80F              add R30,R24
 065E F91F              adc R31,R25
 0660 2080              ldd R2,z+0
 0662 80E0              ldi R24,<_lcd_data
 0664 90E0              ldi R25,>_lcd_data
 0666 E0910000          lds R30,_new
 066A FF27              clr R31
 066C E80F              add R30,R24
 066E F91F              adc R31,R25
 0670 2082              std z+0,R2
 0672                   .dbline 306
 0672           ;                         data[new]=0;//Ð´ÍêÊý¾Ýºó,ÏÔ´æÇå0
 0672 80E0              ldi R24,<_data
 0674 90E0              ldi R25,>_data
 0676 E0910000          lds R30,_new
 067A FF27              clr R31
 067C E80F              add R30,R24
 067E F91F              adc R31,R25
 0680 2224              clr R2
 0682 2082              std z+0,R2
 0684                   .dbline 307
 0684           ;                         new_add=0;
 0684 6627              clr R22
 0686                   .dbline 308
 0686           ;                       }
 0686 01C0              rjmp L101
 0688           L100:
 0688                   .dbline 310
 0688           ;               else
 0688           ;                  new_add=1;
 0688 61E0              ldi R22,1
 068A           L101:
 068A                   .dbline 311
 068A 80910000          lds R24,_new
 068E 8F5F              subi R24,255    ; addi 1
 0690 80930000          sts _new,R24
 0694                   .dbline 312
 0694           L96:
 0694                   .dbline 290
 0694 80910000          lds R24,_new
 0698 8032              cpi R24,32
 069A 08F4              brsh X6
 069C ACCF              rjmp L95
 069E           X6:
 069E                   .dbline -2
 069E           L94:
 069E 00D0              rcall pop_gset2
 06A0                   .dbline 0 ; func end
 06A0 0895              ret
 06A2                   .dbsym r address 20 c
 06A2                   .dbsym r new_add 22 c
 06A2                   .dbend
 06A2                   .dbfunc e LCD_write_CGRAM _LCD_write_CGRAM fV
 06A2           ;              n -> R20
 06A2           ;              y -> R18
 06A2           ;              x -> R16
                        .even
 06A2           _LCD_write_CGRAM::
 06A2 00D0              rcall push_gset1
 06A4 4A81              ldd R20,y+2
 06A6                   .dbline -1
 06A6                   .dbline 322
 06A6           ;                  new++;//
 06A6           ;       }
 06A6           ;   } 
 06A6           ; /*----------------------------------------------------
 06A6           ;     LCD_write_CGRAM:Ð´CGRAMµÄº¯Êý
 06A6           ;       ÊäÈë²ÎÊý£º
 06A6           ;           X¡¢Y    : ÏÔÊ¾Êý¾ÝµÄÆðÊ¼µÄÎ»ÖÃ
 06A6           ;                       n    : ´æÈëLCDµÄÍ¼°¸µÄ±àºÅ
 06A6           ;       ±àÐ´ÈÕÆÚ:2005/10/18
 06A6           ; -----------------------------------------------------*/ 
 06A6           ; void LCD_write_CGRAM(unsigned char x,unsigned char y,unsigned char n) 
 06A6           ; {  
 06A6                   .dbline 323
 06A6           ;    if(y<2)
 06A6 2230              cpi R18,2
 06A8 30F4              brsh L107
 06AA                   .dbline 324
 06AA           ;    add=y*16+x;//ÉèÖÃÆðÊ¼×ù±ê
 06AA 80E1              ldi R24,16
 06AC 829F              mul R24,R18
 06AE 202C              mov R2,R0
 06B0 200E              add R2,R16
 06B2 20920000          sts _add,R2
 06B6           L107:
 06B6                   .dbline 325
 06B6           ;     if(n==0)//0±íÊ¾¿ÕÊý¾Ý
 06B6 4423              tst R20
 06B8 09F4              brne L109
 06BA                   .dbline 326
 06BA           ;       n+=8;//ËùÒÔÒª¼ÓÉÏ8  (0>8/1>9/2>10...7>15)  
 06BA 485F              subi R20,248    ; addi 8
 06BC           L109:
 06BC                   .dbline 327
 06BC           ;       data[add]=n;      
 06BC 80E0              ldi R24,<_data
 06BE 90E0              ldi R25,>_data
 06C0 E0910000          lds R30,_add
 06C4 FF27              clr R31
 06C6 E80F              add R30,R24
 06C8 F91F              adc R31,R25
 06CA 4083              std z+0,R20
 06CC                   .dbline 328
 06CC           ;       LCD_updata;
 06CC 2224              clr R2
 06CE 20920000          sts _new,R2
 06D2                   .dbline -2
 06D2           L106:
 06D2 00D0              rcall pop_gset1
 06D4                   .dbline 0 ; func end
 06D4 0895              ret
 06D6                   .dbsym r n 20 c
 06D6                   .dbsym r y 18 c
 06D6                   .dbsym r x 16 c
 06D6                   .dbend
                        .area lit(rom, con, rel)
 0014           L112:
 0014 3F01              .byte 63,1
 0016 0101              .byte 1,1
 0018 0101              .byte 1,1
 001A 3F00              .byte 63,0
 001C 0004              .byte 0,4
 001E 021F              .byte 2,31
 0020 0204              .byte 2,4
 0022 0000              .byte 0,0
 0024 0004              .byte 0,4
 0026 0E15              .byte 14,21
 0028 0404              .byte 4,4
 002A 0400              .byte 4,0
 002C 001F              .byte 0,31
 002E 150E              .byte 21,14
 0030 0404              .byte 4,4
 0032 0400              .byte 4,0
 0034 001F              .byte 0,31
 0036 150A              .byte 21,10
 0038 0404              .byte 4,4
 003A 0400              .byte 4,0
 003C 0000              .byte 0,0
 003E 0206              .byte 2,6
 0040 0E1E              .byte 14,30
 0042 1E00              .byte 30,0
 0044 080C              .byte 8,12
 0046 0A09              .byte 10,9
 0048 0A0C              .byte 10,12
 004A 0800              .byte 8,0
 004C 080C              .byte 8,12
 004E 0E0F              .byte 14,15
 0050 0E0C              .byte 14,12
 0052 0800              .byte 8,0
                        .area text(rom, con, rel)
 06D6                   .dbfile E:\¿ÌÂ¼µÄ\µç×Ó¼¼Êõ\ÏîÄ¿\Çý¶¯³ÌÐò\LCD1602ËÄÏß½Ó¿ÚÓ¦ÓÃ·¶Àý\LCD_1602_Driver.c
 06D6                   .dbfunc e LCD_init_CGRAM _LCD_init_CGRAM fV
 06D6           ;            ads -> R20
 06D6           ;          CGRAM -> y+0
 06D6           ;              y -> R20
 06D6           ;              x -> R22
                        .even
 06D6           _LCD_init_CGRAM::
 06D6 00D0              rcall push_gset2
 06D8 EF97              sbiw R28,63
 06DA 2197              sbiw R28,1  ; offset = 64
 06DC                   .dbline -1
 06DC                   .dbline 336
 06DC           ; }
 06DC           ; /*----------------------------------------------------
 06DC           ;     LCD_init_CGRAM:³õÊ¼»¯CGRAMµÄº¯Êý
 06DC           ;       
 06DC           ;       ±àÐ´ÈÕÆÚ:2005/10/18
 06DC           ; -----------------------------------------------------*/ 
 06DC           ; void LCD_init_CGRAM(void)
 06DC           ;   {
 06DC                   .dbline 338
 06DC           ;      unsigned char CGRAM[8][8]=//CGRAMÍ¼°¸µÄ¶¨Òå
 06DC           ;        {  //1     2      3       4       5      6        7      x
 06DC 80E0              ldi R24,<L112
 06DE 90E0              ldi R25,>L112
 06E0 FE01              movw R30,R28
 06E2 00E4              ldi R16,64
 06E4 10E0              ldi R17,0
 06E6 FA93              st -y,R31
 06E8 EA93              st -y,R30
 06EA 9A93              st -y,R25
 06EC 8A93              st -y,R24
 06EE 00D0              rcall asgncblk
 06F0                   .dbline 348
 06F0           ;          {0x3F,0x01,0x01,0x01,0x01,0x01,0x3F,0x00},//0
 06F0           ;          {0x00,0x04,0x02,0x1F,0x02,0x04,0x00,0x00},//1
 06F0           ;          {0x00,0x04,0x0E,0x15,0x04,0x04,0x04,0x00},//2
 06F0           ;          {0x00,0x1F,0x15,0x0E,0x04,0x04,0x04,0x00},//3
 06F0           ;          {0x00,0x1F,0x15,0x0A,0x04,0x04,0x04,0x00},//4
 06F0           ;          {0x00,0x00,0x02,0x06,0x0E,0x1E,0x1E,0x00},//5
 06F0           ;          {0x08,0x0C,0x0A,0x09,0x0A,0x0C,0x08,0x00},//6                
 06F0           ;          {0x08,0x0C,0x0E,0x0F,0x0E,0x0C,0x08,0x00},//7
 06F0           ;        };
 06F0           ;          unsigned char ads=0x40;
 06F0 40E4              ldi R20,64
 06F2                   .dbline 351
 06F2           ;          unsigned char x,y;
 06F2           ;          
 06F2           ;          LCD_write_char(0,ads);//Ð´µØÖ·
 06F2 242F              mov R18,R20
 06F4 3327              clr R19
 06F6 0027              clr R16
 06F8 1127              clr R17
 06FA C1DC              rcall _LCD_write_char
 06FC                   .dbline 352
 06FC           ;          for(y=0;y<8;y++)
 06FC 4427              clr R20
 06FE 15C0              rjmp L116
 0700           L113:
 0700                   .dbline 353
 0700           ;            { 
 0700                   .dbline 354
 0700           ;                  for(x=0;x<8;x++)
 0700 6627              clr R22
 0702 10C0              rjmp L120
 0704           L117:
 0704                   .dbline 355
 0704                   .dbline 356
 0704 88E0              ldi R24,8
 0706 849F              mul R24,R20
 0708 1001              movw R2,R0
 070A CE01              movw R24,R28
 070C 280E              add R2,R24
 070E 391E              adc R3,R25
 0710 E62F              mov R30,R22
 0712 FF27              clr R31
 0714 E20D              add R30,R2
 0716 F31D              adc R31,R3
 0718 2081              ldd R18,z+0
 071A 3327              clr R19
 071C 01E0              ldi R16,1
 071E 10E0              ldi R17,0
 0720 AEDC              rcall _LCD_write_char
 0722                   .dbline 357
 0722           L118:
 0722                   .dbline 354
 0722 6395              inc R22
 0724           L120:
 0724                   .dbline 354
 0724 6830              cpi R22,8
 0726 70F3              brlo L117
 0728                   .dbline 358
 0728           L114:
 0728                   .dbline 352
 0728 4395              inc R20
 072A           L116:
 072A                   .dbline 352
 072A 4830              cpi R20,8
 072C 48F3              brlo L113
 072E                   .dbline -2
 072E           L111:
 072E EF96              adiw R28,63
 0730 2196              adiw R28,1  ; offset = 64
 0732 00D0              rcall pop_gset2
 0734                   .dbline 0 ; func end
 0734 0895              ret
 0736                   .dbsym r ads 20 c
 0736                   .dbsym l CGRAM 0 A[64:8:8]c
 0736                   .dbsym r y 20 c
 0736                   .dbsym r x 22 c
 0736                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\¿ÌÂ¼µÄ\µç×Ó¼¼Êõ\ÏîÄ¿\Çý¶¯³ÌÐò\LCD1602ËÄÏß½Ó¿ÚÓ¦ÓÃ·¶Àý\LCD_1602_Driver.c
 0000           _add::
 0000                   .blkb 1
 0001                   .dbsym e add _add c
 0001           _data::
 0001                   .blkb 32
 0021                   .dbsym e data _data A[32:32]c
 0021           _lcd_data::
 0021                   .blkb 32
 0041                   .dbsym e lcd_data _lcd_data A[32:32]c
