                        .module DS18B20.C
                        .area text(rom, con, rel)
 0000                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
                        .area data(ram, con, rel)
 0000                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0000           _disp::
 0000                   .blkb 2
                        .area idata
 0000 C0F9              .byte 192,249
                        .area data(ram, con, rel)
 0002                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0002                   .blkb 2
                        .area idata
 0002 A4B0              .byte 164,176
                        .area data(ram, con, rel)
 0004                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0004                   .blkb 2
                        .area idata
 0004 9992              .byte 153,146
                        .area data(ram, con, rel)
 0006                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0006                   .blkb 2
                        .area idata
 0006 82F8              .byte 130,248
                        .area data(ram, con, rel)
 0008                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0008                   .blkb 2
                        .area idata
 0008 8090              .byte 128,144
                        .area data(ram, con, rel)
 000A                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 000A                   .blkb 2
                        .area idata
 000A 8883              .byte 136,131
                        .area data(ram, con, rel)
 000C                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 000C                   .blkb 2
                        .area idata
 000C C6A1              .byte 198,161
                        .area data(ram, con, rel)
 000E                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 000E                   .blkb 2
                        .area idata
 000E 868E              .byte 134,142
                        .area data(ram, con, rel)
 0010                   .dbfile ..\..\..\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0010                   .dbfile F:\²©¿Æµç×ÓÌÔ±¦µêËùÓÐ×ÊÁÏ\²©¿Æ²úÆ·ÅäÌ×ÎÄ¼þ\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0010                   .dbsym e disp _disp A[16:16]c
 0010           _led_buf::
 0010                   .blkb 2
                        .area idata
 0010 0102              .byte 1,2
                        .area data(ram, con, rel)
 0012                   .dbfile F:\²©¿Æµç×ÓÌÔ±¦µêËùÓÐ×ÊÁÏ\²©¿Æ²úÆ·ÅäÌ×ÎÄ¼þ\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0012                   .blkb 2
                        .area idata
 0012 0304              .byte 3,4
                        .area data(ram, con, rel)
 0014                   .dbfile F:\²©¿Æµç×ÓÌÔ±¦µêËùÓÐ×ÊÁÏ\²©¿Æ²úÆ·ÅäÌ×ÎÄ¼þ\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0014                   .blkb 1
                        .area idata
 0014 08                .byte 8
                        .area data(ram, con, rel)
 0015                   .dbfile F:\²©¿Æµç×ÓÌÔ±¦µêËùÓÐ×ÊÁÏ\²©¿Æ²úÆ·ÅäÌ×ÎÄ¼þ\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0015                   .dbsym e led_buf _led_buf A[5:5]c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\²©¿Æµç×ÓÌÔ±¦µêËùÓÐ×ÊÁÏ\²©¿Æ²úÆ·ÅäÌ×ÎÄ¼þ\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0000                   .dbfunc e delay_10us _delay_10us fV
 0000           ;              j -> R20
 0000           ;              i -> R16
                        .even
 0000           _delay_10us::
 0000 4A93              st -y,R20
 0002                   .dbline -1
 0002                   .dbline 43
 0002           ; 
 0002           ; /********************************************************
 0002           ; ÊµÑé¶þÊ®:   DS18B20ÊµÑé
 0002           ; ËµÃ÷:       1£©½«DS18B20²åÈëB20²å×ù
 0002           ;             2) ²ÉÓÃÓÒ±ßËÄÎ»ÊýÂë¹ÜÏÔÊ¾µ±Ç°ÎÂ¶ÈÖµ
 0002           ;                      
 0002           ; CPUÐÍºÅ:  ATMEGA128A
 0002           ; Ê±ÖÓ:     8MHz¡£
 0002           ; ÈÕÆÚ£º    2009-8-2
 0002           ; ÁªÏµ·½·¨: MCU.2000@163.com 
 0002           ;  ********************************************************/    
 0002           ; 
 0002           ; 
 0002           ; #include <iom128v.h>                                  /*°üº¬Ïà¹ØÍ·ÎÄ¼þ*/
 0002           ; #include<macros.h>
 0002           ; 
 0002           ; 
 0002           ; #define DQ_IN DDRE &= ~(1 << PE6)             /*ÉèÖÃÊäÈë*/
 0002           ; #define DQ_OUT        DDRE |= (1 << PE6)              /*ÉèÖÃÊä³ö*/
 0002           ; #define DQ_CLR        PORTE &= ~(1 << PE6)    /*ÖÃµÍµçÆ½*/
 0002           ; #define DQ_SET        PORTE |= (1 << PE6)             /*ÖÃ¸ßµçÆ½*/
 0002           ; #define DQ_R  PINE & (1 << PE6)               /*¶ÁÁËµçÆ½*/
 0002           ; 
 0002           ; unsigned char flag;                                           /*ÖÐ¶Ï±êÖ¾»º´æ*/
 0002           ; unsigned char led_buf[];                          /*ÏÔÊ¾ÐÅÏ¢*/
 0002           ; 
 0002           ; unsigned char disp[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
 0002           ;                         0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
 0002           ; 
 0002           ; /*********************************************************************
 0002           ; Ç°4Î»ÎªÏÔÊ¾ÊýÖµ¡£
 0002           ; ×îºóÒ»Î»ÎªÐ¡ÊýµãÏÔÊ¾Î»ÖÃ¡£
 0002           ; **********************************************************************/
 0002           ; unsigned char led_buf[] = {1, 2, 3, 4, 8};                    /*ÏÔÊ¾ÐÅÏ¢*/
 0002           ; 
 0002           ; /*********************************************************************
 0002           ; ÑÓÊ±º¯Êý
 0002           ; 
 0002           ; ÑÓÊ±Ê±¼äÔ¼10ms£º
 0002           ; Ê±ÖÓÆµÂÊÎª£º7.3728MHz¡£
 0002           ; **********************************************************************/
 0002           ; void delay_10us(unsigned char i) 
 0002           ; {
 0002 06C0              xjmp L3
 0004           L2:
 0004                   .dbline 46
 0004           ;        unsigned char j;
 0004           ;        while(i--)
 0004           ;      {
 0004                   .dbline 47
 0004           ;           j=5;
 0004 45E0              ldi R20,5
 0006           L5:
 0006                   .dbline 48
 0006           ;               while(j--);
 0006           L6:
 0006                   .dbline 48
 0006 242E              mov R2,R20
 0008 3324              clr R3
 000A 4150              subi R20,1
 000C 2220              tst R2
 000E D9F7              brne L5
 0010           X0:
 0010                   .dbline 49
 0010           ;        }
 0010           L3:
 0010                   .dbline 45
 0010 202E              mov R2,R16
 0012 3324              clr R3
 0014 0150              subi R16,1
 0016 2220              tst R2
 0018 A9F7              brne L2
 001A           X1:
 001A                   .dbline -2
 001A           L1:
 001A                   .dbline 0 ; func end
 001A 4991              ld R20,y+
 001C 0895              ret
 001E                   .dbsym r j 20 c
 001E                   .dbsym r i 16 c
 001E                   .dbend
 001E                   .dbfunc e delay_ms _delay_ms fV
 001E           ;          temp1 -> R20
 001E           ;          temp2 -> R22
 001E           ;              i -> R16,R17
                        .even
 001E           _delay_ms::
 001E 0E940000          xcall push_xgsetF000
 0022                   .dbline -1
 0022                   .dbline 59
 0022           ; }
 0022           ; 
 0022           ; /*********************************************************************
 0022           ; ÑÓÊ±º¯Êý
 0022           ; 
 0022           ; ÑÓÊ±µ¥Î»Îª£ºmS¡£
 0022           ; CPUÆµÂÊÎª£º7¡£3728MHz¡£
 0022           ; *********************************************************************/
 0022           ; void delay_ms(unsigned int i) 
 0022           ; {
 0022 0DC0              xjmp L10
 0024           L9:
 0024                   .dbline 64
 0024           ; 
 0024           ;       unsigned char temp1,temp2;
 0024           ;       
 0024           ;       while (i --) 
 0024           ;       {
 0024                   .dbline 65
 0024           ;               temp1=35;temp2=102;      
 0024 43E2              ldi R20,35
 0026                   .dbline 65
 0026 66E6              ldi R22,102
 0028 05C0              xjmp L13
 002A           L15:
 002A                   .dbline 67
 002A           ;         while(temp1--)
 002A           ;               while(temp2--);
 002A           L16:
 002A                   .dbline 67
 002A 262E              mov R2,R22
 002C 3324              clr R3
 002E 6150              subi R22,1
 0030 2220              tst R2
 0032 D9F7              brne L15
 0034           X2:
 0034           L13:
 0034                   .dbline 66
 0034 242E              mov R2,R20
 0036 3324              clr R3
 0038 4150              subi R20,1
 003A 2220              tst R2
 003C B1F7              brne L16
 003E           X3:
 003E                   .dbline 68
 003E           ;       }
 003E           L10:
 003E                   .dbline 63
 003E A801              movw R20,R16
 0040 0150              subi R16,1
 0042 1040              sbci R17,0
 0044 4030              cpi R20,0
 0046 4507              cpc R20,R21
 0048 69F7              brne L9
 004A           X4:
 004A                   .dbline -2
 004A           L8:
 004A                   .dbline 0 ; func end
 004A 0C940000          xjmp pop_xgsetF000
 004E                   .dbsym r temp1 20 c
 004E                   .dbsym r temp2 22 c
 004E                   .dbsym r i 16 i
 004E                   .dbend
 004E                   .dbfunc e ds1820_reset _ds1820_reset fc
 004E           ;              i -> R20
                        .even
 004E           _ds1820_reset::
 004E 4A93              st -y,R20
 0050                   .dbline -1
 0050                   .dbline 73
 0050           ; }
 0050           ; 
 0050           ; /*DS18B20¸´Î»º¯Êý*/
 0050           ; unsigned char ds1820_reset(void) 
 0050           ; {
 0050                   .dbline 75
 0050           ;       unsigned char i;
 0050           ;       flag = SREG;                            /*ÖÐ¶Ï±£»¤*/
 0050 2FB6              in R2,0x3f
 0052 20920000          sts _flag,R2
 0056                   .dbline 76
 0056           ;       CLI();                                          /*¹ØÖÐ¶Ï*/
 0056 F894              cli
 0058                   .dbline 77
 0058           ;       DQ_OUT;
 0058 169A              sbi 0x2,6
 005A                   .dbline 78
 005A           ;       DQ_CLR;
 005A 1E98              cbi 0x3,6
 005C                   .dbline 79
 005C           ;       delay_10us(49);                         /*ÑÓÊ±500uS(480-960)*/
 005C 01E3              ldi R16,49
 005E D0DF              xcall _delay_10us
 0060                   .dbline 80
 0060           ;       DQ_SET;
 0060 1E9A              sbi 0x3,6
 0062                   .dbline 81
 0062           ;       DQ_IN;
 0062 1698              cbi 0x2,6
 0064                   .dbline 82
 0064           ;       delay_10us(7);                          /*ÑÓÊ±80uS*/
 0064 07E0              ldi R16,7
 0066 CCDF              xcall _delay_10us
 0068                   .dbline 83
 0068           ;       i = DQ_R;
 0068 41B1              in R20,0x1
 006A 4074              andi R20,64
 006C                   .dbline 84
 006C           ;       delay_10us(49);                         /*ÑÓÊ±500uS(±£³Ö>480uS)*/
 006C 01E3              ldi R16,49
 006E C8DF              xcall _delay_10us
 0070                   .dbline 85
 0070           ;       if (flag & 0x80) SEI();         /*»Ö¸´ÖÐ¶Ï×´Ì¬*/
 0070 20900000          lds R2,_flag
 0074 27FE              sbrs R2,7
 0076 01C0              rjmp L19
 0078           X5:
 0078                   .dbline 85
 0078 7894              sei
 007A           L19:
 007A                   .dbline 86
 007A           ;       if (i) return 0x00;     
 007A 4423              tst R20
 007C 11F0              breq L21
 007E           X6:
 007E                   .dbline 86
 007E 0027              clr R16
 0080 01C0              xjmp L18
 0082           L21:
 0082                   .dbline 87
 0082           ;       else   return 0x01;     
 0082 01E0              ldi R16,1
 0084                   .dbline -2
 0084           L18:
 0084                   .dbline 0 ; func end
 0084 4991              ld R20,y+
 0086 0895              ret
 0088                   .dbsym r i 20 c
 0088                   .dbend
 0088                   .dbfunc e ds1820_read_byte _ds1820_read_byte fc
 0088           ;          value -> R20
 0088           ;              i -> R22
                        .even
 0088           _ds1820_read_byte::
 0088 4A93              st -y,R20
 008A 6A93              st -y,R22
 008C                   .dbline -1
 008C                   .dbline 92
 008C           ; }
 008C           ; 
 008C           ; /*DS18B20×Ö½Ú¶ÁÈ¡º¯Êý*/
 008C           ; unsigned char ds1820_read_byte(void) 
 008C           ; {
 008C                   .dbline 94
 008C           ;       unsigned char i;
 008C           ;       unsigned char value = 0;
 008C 4427              clr R20
 008E                   .dbline 95
 008E           ;       flag = SREG;                            /*ÖÐ¶Ï±£»¤*/
 008E 2FB6              in R2,0x3f
 0090 20920000          sts _flag,R2
 0094                   .dbline 96
 0094           ;       CLI();                                          /*¹ØÖÐ¶Ï*/
 0094 F894              cli
 0096                   .dbline 97
 0096           ;       for (i = 8; i != 0; i--) 
 0096 68E0              ldi R22,8
 0098 11C0              xjmp L27
 009A           L24:
 009A                   .dbline 98
 009A           ;       {
 009A                   .dbline 99
 009A           ;               value >>= 1;
 009A 4695              lsr R20
 009C                   .dbline 100
 009C           ;               DQ_OUT;
 009C 169A              sbi 0x2,6
 009E                   .dbline 101
 009E           ;               DQ_CLR;
 009E 1E98              cbi 0x3,6
 00A0                   .dbline 102
 00A0           ;               NOP();                                  /*ÑÓÊ±4uS*/
 00A0 0000              nop
 00A2                   .dbline 103
 00A2           ;               NOP();
 00A2 0000              nop
 00A4                   .dbline 104
 00A4           ;               NOP();
 00A4 0000              nop
 00A6                   .dbline 105
 00A6           ;               NOP();
 00A6 0000              nop
 00A8                   .dbline 106
 00A8           ;               DQ_SET;
 00A8 1E9A              sbi 0x3,6
 00AA                   .dbline 107
 00AA           ;               DQ_IN;
 00AA 1698              cbi 0x2,6
 00AC                   .dbline 108
 00AC           ;         delay_10us(1);          /*ÑÓÊ±10uS*/
 00AC 01E0              ldi R16,1
 00AE A8DF              xcall _delay_10us
 00B0                   .dbline 109
 00B0           ;               if (DQ_R) value|=0x80;
 00B0 0E9B              sbis 0x1,6
 00B2 01C0              rjmp L28
 00B4           X7:
 00B4                   .dbline 109
 00B4 4068              ori R20,128
 00B6           L28:
 00B6                   .dbline 110
 00B6           ;               delay_10us(5);                  /*ÑÓÊ±60uS*/
 00B6 05E0              ldi R16,5
 00B8 A3DF              xcall _delay_10us
 00BA                   .dbline 111
 00BA           ;       }
 00BA           L25:
 00BA                   .dbline 97
 00BA 6A95              dec R22
 00BC           L27:
 00BC                   .dbline 97
 00BC 6623              tst R22
 00BE 69F7              brne L24
 00C0           X8:
 00C0                   .dbline 112
 00C0           ;       if (flag & 0x80) SEI();     /*»Ö¸´ÖÐ¶Ï×´Ì¬*/            
 00C0 20900000          lds R2,_flag
 00C4 27FE              sbrs R2,7
 00C6 01C0              rjmp L30
 00C8           X9:
 00C8                   .dbline 112
 00C8 7894              sei
 00CA           L30:
 00CA                   .dbline 113
 00CA           ;       return(value);
 00CA 042F              mov R16,R20
 00CC                   .dbline -2
 00CC           L23:
 00CC                   .dbline 0 ; func end
 00CC 6991              ld R22,y+
 00CE 4991              ld R20,y+
 00D0 0895              ret
 00D2                   .dbsym r value 20 c
 00D2                   .dbsym r i 22 c
 00D2                   .dbend
 00D2                   .dbfunc e ds1820_write_byte _ds1820_write_byte fV
 00D2           ;              i -> R20
 00D2           ;          value -> R10
                        .even
 00D2           _ds1820_write_byte::
 00D2 AA92              st -y,R10
 00D4 4A93              st -y,R20
 00D6 A02E              mov R10,R16
 00D8                   .dbline -1
 00D8                   .dbline 118
 00D8           ; }
 00D8           ; 
 00D8           ; /*DS18B20×Ö½ÚÐ´Èëº¯Êý*/
 00D8           ; void ds1820_write_byte(unsigned char value) 
 00D8           ; {
 00D8                   .dbline 120
 00D8           ;       unsigned char i;
 00D8           ;       flag = SREG;                            /*ÖÐ¶Ï±£»¤*/
 00D8 2FB6              in R2,0x3f
 00DA 20920000          sts _flag,R2
 00DE                   .dbline 121
 00DE           ;       CLI();                                          /*¹ØÖÐ¶Ï*/
 00DE F894              cli
 00E0                   .dbline 122
 00E0           ;       for (i = 8; i != 0; i--) 
 00E0 48E0              ldi R20,8
 00E2 0EC0              xjmp L36
 00E4           L33:
 00E4                   .dbline 123
 00E4           ;       {
 00E4                   .dbline 124
 00E4           ;               DQ_OUT;
 00E4 169A              sbi 0x2,6
 00E6                   .dbline 125
 00E6           ;               DQ_CLR;
 00E6 1E98              cbi 0x3,6
 00E8                   .dbline 126
 00E8           ;               NOP();                                  /*ÑÓÊ±4uS*/
 00E8 0000              nop
 00EA                   .dbline 127
 00EA           ;               NOP();
 00EA 0000              nop
 00EC                   .dbline 128
 00EC           ;               NOP();
 00EC 0000              nop
 00EE                   .dbline 129
 00EE           ;               NOP();
 00EE 0000              nop
 00F0                   .dbline 130
 00F0           ;               if (value & 0x01) DQ_SET;                       
 00F0 A0FE              sbrs R10,0
 00F2 01C0              rjmp L37
 00F4           X10:
 00F4                   .dbline 130
 00F4 1E9A              sbi 0x3,6
 00F6           L37:
 00F6                   .dbline 131
 00F6           ;               delay_10us(7);                  /*ÑÓÊ±80uS*/
 00F6 07E0              ldi R16,7
 00F8 83DF              xcall _delay_10us
 00FA                   .dbline 132
 00FA           ;               DQ_SET;                                 /*Î»½áÊø*/
 00FA 1E9A              sbi 0x3,6
 00FC                   .dbline 133
 00FC           ;               value >>= 1;
 00FC A694              lsr R10
 00FE                   .dbline 134
 00FE           ;       }
 00FE           L34:
 00FE                   .dbline 122
 00FE 4A95              dec R20
 0100           L36:
 0100                   .dbline 122
 0100 4423              tst R20
 0102 81F7              brne L33
 0104           X11:
 0104                   .dbline 135
 0104           ;       if (flag & 0x80) SEI();         /*»Ö¸´ÖÐ¶Ï×´Ì¬*/        
 0104 20900000          lds R2,_flag
 0108 27FE              sbrs R2,7
 010A 01C0              rjmp L39
 010C           X12:
 010C                   .dbline 135
 010C 7894              sei
 010E           L39:
 010E                   .dbline -2
 010E           L32:
 010E                   .dbline 0 ; func end
 010E 4991              ld R20,y+
 0110 A990              ld R10,y+
 0112 0895              ret
 0114                   .dbsym r i 20 c
 0114                   .dbsym r value 10 c
 0114                   .dbend
 0114                   .dbfunc e ds1820_start _ds1820_start fV
                        .even
 0114           _ds1820_start::
 0114                   .dbline -1
 0114                   .dbline 140
 0114           ; }
 0114           ; 
 0114           ; /*Æô¶¯ds1820×ª»»*/
 0114           ; void ds1820_start(void) 
 0114           ; {
 0114                   .dbline 141
 0114           ;       ds1820_reset();
 0114 9CDF              xcall _ds1820_reset
 0116                   .dbline 142
 0116           ;       ds1820_write_byte(0xCC);        /*ÎðÂÔµØÖ·*/
 0116 0CEC              ldi R16,204
 0118 DCDF              xcall _ds1820_write_byte
 011A                   .dbline 143
 011A           ;       ds1820_write_byte(0x44);        /*Æô¶¯×ª»»*/
 011A 04E4              ldi R16,68
 011C                   .dbline -2
 011C           L41:
 011C                   .dbline 0 ; func end
 011C DACF              xjmp _ds1820_write_byte
 011E                   .dbend
 011E                   .dbfunc e ds1820_read_temp _ds1820_read_temp fi
 011E           ;            buf -> y+0
 011E           ;              i -> R20,R21
                        .even
 011E           _ds1820_read_temp::
 011E 4A93              st -y,R20
 0120 5A93              st -y,R21
 0122 2997              sbiw R28,9
 0124                   .dbline -1
 0124                   .dbline 148
 0124           ; }
 0124           ; 
 0124           ; /*DS8B20¶ÁÈ¡ÎÂ¶ÈÐÅÏ¢*/
 0124           ; unsigned int ds1820_read_temp(void) 
 0124           ; {
 0124                   .dbline 152
 0124           ;       unsigned int i;
 0124           ;       unsigned char buf[9];
 0124           ; 
 0124           ;       ds1820_reset();
 0124 94DF              xcall _ds1820_reset
 0126                   .dbline 153
 0126           ;       ds1820_write_byte(0xCC);        /*ÎðÂÔµØÖ·*/
 0126 0CEC              ldi R16,204
 0128 D4DF              xcall _ds1820_write_byte
 012A                   .dbline 154
 012A           ;       ds1820_write_byte(0xBE);        /*¶ÁÈ¡ÎÂ¶È*/
 012A 0EEB              ldi R16,190
 012C D2DF              xcall _ds1820_write_byte
 012E                   .dbline 155
 012E           ;       for (i = 0; i < 9; i++) 
 012E 4427              clr R20
 0130 5527              clr R21
 0132 08C0              xjmp L46
 0134           L43:
 0134                   .dbline 156
 0134           ;       {
 0134                   .dbline 157
 0134           ;               buf[i] = ds1820_read_byte();
 0134 A9DF              xcall _ds1820_read_byte
 0136 CE01              movw R24,R28
 0138 FA01              movw R30,R20
 013A E80F              add R30,R24
 013C F91F              adc R31,R25
 013E 0083              std z+0,R16
 0140                   .dbline 158
 0140           ;       }
 0140           L44:
 0140                   .dbline 155
 0140 4F5F              subi R20,255  ; offset = 1
 0142 5F4F              sbci R21,255
 0144           L46:
 0144                   .dbline 155
 0144 4930              cpi R20,9
 0146 E0E0              ldi R30,0
 0148 5E07              cpc R21,R30
 014A A0F3              brlo L43
 014C           X13:
 014C                   .dbline 159
 014C           ;       i = buf[1];
 014C 4981              ldd R20,y+1
 014E 5527              clr R21
 0150                   .dbline 160
 0150           ;       i <<= 8;
 0150 542F              mov R21,R20
 0152 4427              clr R20
 0154                   .dbline 161
 0154           ;       i |= buf[0];
 0154 2880              ldd R2,y+0
 0156 3324              clr R3
 0158 4229              or R20,R2
 015A 5329              or R21,R3
 015C                   .dbline 162
 015C           ;       return i;
 015C 8A01              movw R16,R20
 015E                   .dbline -2
 015E           L42:
 015E                   .dbline 0 ; func end
 015E 2996              adiw R28,9
 0160 5991              ld R21,y+
 0162 4991              ld R20,y+
 0164 0895              ret
 0166                   .dbsym l buf 0 A[9:9]c
 0166                   .dbsym r i 20 i
 0166                   .dbend
 0166                   .dbfunc e led_display _led_display fV
                        .even
 0166           _led_display::
 0166                   .dbline -1
 0166                   .dbline 167
 0166           ; }
 0166           ; 
 0166           ; /*LEDÏÔÊ¾µ±Ç°ÎÂ¶ÈÖµ*/
 0166           ; void led_display(void)
 0166           ; {
 0166                   .dbline 168
 0166           ;        PORTA=0X00;
 0166 2224              clr R2
 0168 2BBA              out 0x1b,R2
 016A                   .dbline 169
 016A           ;        PORTC=disp[led_buf[3]];
 016A 80E0              ldi R24,<_disp
 016C 90E0              ldi R25,>_disp
 016E E0911300          lds R30,_led_buf+3
 0172 FF27              clr R31
 0174 E80F              add R30,R24
 0176 F91F              adc R31,R25
 0178 2080              ldd R2,z+0
 017A 25BA              out 0x15,R2
 017C                   .dbline 170
 017C           ;        PORTA=0X10;
 017C 80E1              ldi R24,16
 017E 8BBB              out 0x1b,R24
 0180                   .dbline 171
 0180           ;        delay_10us(10);
 0180 0AE0              ldi R16,10
 0182 3EDF              xcall _delay_10us
 0184                   .dbline 173
 0184           ;  
 0184           ;      PORTA=0X00;
 0184 2224              clr R2
 0186 2BBA              out 0x1b,R2
 0188                   .dbline 174
 0188           ;        PORTC=disp[led_buf[2]];
 0188 80E0              ldi R24,<_disp
 018A 90E0              ldi R25,>_disp
 018C E0911200          lds R30,_led_buf+2
 0190 FF27              clr R31
 0192 E80F              add R30,R24
 0194 F91F              adc R31,R25
 0196 2080              ldd R2,z+0
 0198 25BA              out 0x15,R2
 019A                   .dbline 175
 019A           ;        PORTA=0X20; 
 019A 80E2              ldi R24,32
 019C 8BBB              out 0x1b,R24
 019E                   .dbline 176
 019E           ;        delay_10us(10);         
 019E 0AE0              ldi R16,10
 01A0 2FDF              xcall _delay_10us
 01A2                   .dbline 178
 01A2           ;      
 01A2           ;        PORTA=0X00;
 01A2 2224              clr R2
 01A4 2BBA              out 0x1b,R2
 01A6                   .dbline 179
 01A6           ;        PORTC=disp[led_buf[1]] & 0x7f;    //Ìí¼ÓÐ¡Êýµã
 01A6 80E0              ldi R24,<_disp
 01A8 90E0              ldi R25,>_disp
 01AA E0911100          lds R30,_led_buf+1
 01AE FF27              clr R31
 01B0 E80F              add R30,R24
 01B2 F91F              adc R31,R25
 01B4 8081              ldd R24,z+0
 01B6 8F77              andi R24,127
 01B8 85BB              out 0x15,R24
 01BA                   .dbline 180
 01BA           ;        PORTA=0X40;
 01BA 80E4              ldi R24,64
 01BC 8BBB              out 0x1b,R24
 01BE                   .dbline 181
 01BE           ;        delay_10us(10);
 01BE 0AE0              ldi R16,10
 01C0 1FDF              xcall _delay_10us
 01C2                   .dbline 183
 01C2           ;        
 01C2           ;        PORTA=0X00;
 01C2 2224              clr R2
 01C4 2BBA              out 0x1b,R2
 01C6                   .dbline 184
 01C6           ;        PORTC=disp[led_buf[0]];
 01C6 80E0              ldi R24,<_disp
 01C8 90E0              ldi R25,>_disp
 01CA E0911000          lds R30,_led_buf
 01CE FF27              clr R31
 01D0 E80F              add R30,R24
 01D2 F91F              adc R31,R25
 01D4 2080              ldd R2,z+0
 01D6 25BA              out 0x15,R2
 01D8                   .dbline 185
 01D8           ;        PORTA=0x80;                 
 01D8 80E8              ldi R24,128
 01DA 8BBB              out 0x1b,R24
 01DC                   .dbline 186
 01DC           ;        delay_10us(10);
 01DC 0AE0              ldi R16,10
 01DE 10DF              xcall _delay_10us
 01E0                   .dbline 188
 01E0           ;        
 01E0           ;        PORTA=0X00;      
 01E0 2224              clr R2
 01E2 2BBA              out 0x1b,R2
 01E4                   .dbline -2
 01E4           L48:
 01E4                   .dbline 0 ; func end
 01E4 0895              ret
 01E6                   .dbend
 01E6                   .dbfunc e main _main fV
 01E6           ;              i -> R10,R11
 01E6           ;              m -> R20
                        .even
 01E6           _main::
 01E6                   .dbline -1
 01E6                   .dbline 199
 01E6           ; }
 01E6           ; /********************************************************
 01E6           ; Ö÷º¯Êý
 01E6           ; 
 01E6           ; ÊµÏÖÏµÍ³µÄ³õÊ¼»¯²Ù×÷¡£
 01E6           ; ÖÜÆÚÐÔ¶ÁÈ¡ÎÂ¶È¡£
 01E6           ; È»ºó·ÅÈëÏÔÊ¾»º´æÇø¡£
 01E6           ; ÉÏÃæÁ½¸öÈÎÎñÖ®¼äÍêÈ«¶ÀÁ¢ÔËÐÐ£¬·½±ãÒÆÖ²¡£
 01E6           ; ********************************************************/
 01E6           ; void main(void) 
 01E6           ; {
 01E6                   .dbline 203
 01E6           ;       unsigned int i;
 01E6           ;     unsigned char m;
 01E6           ; 
 01E6           ;        DDRA=0XFF;
 01E6 8FEF              ldi R24,255
 01E8 8ABB              out 0x1a,R24
 01EA                   .dbline 204
 01EA           ;        PORTA=0XFF;
 01EA 8BBB              out 0x1b,R24
 01EC                   .dbline 206
 01EC           ;       
 01EC           ;        DDRC=0XFF;                         //ÊýÂë¹Ü¶ÎÂë¿ØÖÆ¶Ë¿ÚÉèÎªÊä³ö
 01EC 84BB              out 0x14,R24
 01EE                   .dbline 207
 01EE           ;        PORTC=0X00;
 01EE 2224              clr R2
 01F0 25BA              out 0x15,R2
 01F2                   .dbline 209
 01F2           ;        
 01F2           ;        DDRF|=0X0E;
 01F2 80916100          lds R24,97
 01F6 8E60              ori R24,14
 01F8 80936100          sts 97,R24
 01FC                   .dbline 210
 01FC           ;        PORTF|=0X0E;
 01FC 80916200          lds R24,98
 0200 8E60              ori R24,14
 0202 80936200          sts 98,R24
 0206                   .dbline 211
 0206           ;        PORTF&=0xF7;                       //Ëø´æ¹Ø±ÕLED
 0206 80916200          lds R24,98
 020A 877F              andi R24,247
 020C 80936200          sts 98,R24
 0210                   .dbline 213
 0210           ;                           
 0210           ;        PORTA=0X00;                        //ÊýÂë¹ÜÎ»¿ØÖÆ
 0210 2BBA              out 0x1b,R2
 0212                   .dbline 215
 0212           ;        
 0212           ;        DDRB |=0X10;           //PB4ÉèÎªÊä³ö
 0212 BC9A              sbi 0x17,4
 0214                   .dbline 216
 0214           ;        PORTB|=0X10;           //¹Ø±ÕPB4Íâ½ÓµÄLED
 0214 C49A              sbi 0x18,4
 0216                   .dbline 218
 0216           ;       
 0216           ;       for(m=0;m<62;m++)
 0216 4427              clr R20
 0218 02C0              xjmp L56
 021A           L53:
 021A                   .dbline 219
 021A           ;       led_display();
 021A A5DF              xcall _led_display
 021C           L54:
 021C                   .dbline 218
 021C 4395              inc R20
 021E           L56:
 021E                   .dbline 218
 021E 4E33              cpi R20,62
 0220 E0F3              brlo L53
 0222           X14:
 0222                   .dbline 220
 0222           ;       ds1820_reset();                                         /*¸´Î»D18B20*/
 0222 15DF              xcall _ds1820_reset
 0224 3DC0              xjmp L58
 0226           L57:
 0226                   .dbline 222
 0226           ;       while (1) 
 0226           ;       {
 0226                   .dbline 223
 0226           ;               ds1820_start();                                 /*Æô¶¯Ò»´Î×ª»»*/
 0226 76DF              xcall _ds1820_start
 0228                   .dbline 224
 0228           ;               for(m=0;m<62;m++)
 0228 4427              clr R20
 022A 02C0              xjmp L63
 022C           L60:
 022C                   .dbline 225
 022C           ;               led_display();
 022C 9CDF              xcall _led_display
 022E           L61:
 022E                   .dbline 224
 022E 4395              inc R20
 0230           L63:
 0230                   .dbline 224
 0230 4E33              cpi R20,62
 0232 E0F3              brlo L60
 0234           X15:
 0234                   .dbline 226
 0234           ;               i = ds1820_read_temp();                 /*¶ÁÈ¡ÎÂ¶ÈÊýÖµ*/
 0234 74DF              xcall _ds1820_read_temp
 0236 5801              movw R10,R16
 0238                   .dbline 227
 0238           ;               i = (i * 10) / 16;                              /*ÊýÖµ´¦Àí*/
 0238 0AE0              ldi R16,10
 023A 10E0              ldi R17,0
 023C 9501              movw R18,R10
 023E 0E940000          xcall empy16s
 0242 5801              movw R10,R16
 0244 B694              lsr R11
 0246 A794              ror R10
 0248 B694              lsr R11
 024A A794              ror R10
 024C B694              lsr R11
 024E A794              ror R10
 0250 B694              lsr R11
 0252 A794              ror R10
 0254                   .dbline 228
 0254           ;               led_buf[3] = i / 1000;                  /*½«ÏÔÊ¾ÐÅÏ¢¼ÓÔØµ½ÏÔÊ¾»º´æÇø*/
 0254 28EE              ldi R18,1000
 0256 33E0              ldi R19,3
 0258 8501              movw R16,R10
 025A 0E940000          xcall div16u
 025E 00931300          sts _led_buf+3,R16
 0262                   .dbline 229
 0262           ;               i = i % 1000;
 0262 28EE              ldi R18,1000
 0264 33E0              ldi R19,3
 0266 8501              movw R16,R10
 0268 0E940000          xcall mod16u
 026C 5801              movw R10,R16
 026E                   .dbline 230
 026E           ;               led_buf[2] = i / 100;
 026E 24E6              ldi R18,100
 0270 30E0              ldi R19,0
 0272 0E940000          xcall div16u
 0276 00931200          sts _led_buf+2,R16
 027A                   .dbline 231
 027A           ;               i = i % 100;
 027A 24E6              ldi R18,100
 027C 30E0              ldi R19,0
 027E 8501              movw R16,R10
 0280 0E940000          xcall mod16u
 0284 5801              movw R10,R16
 0286                   .dbline 232
 0286           ;               led_buf[1] = i / 10;
 0286 2AE0              ldi R18,10
 0288 30E0              ldi R19,0
 028A 0E940000          xcall div16u
 028E 00931100          sts _led_buf+1,R16
 0292                   .dbline 233
 0292           ;               led_buf[0] = i % 10;
 0292 2AE0              ldi R18,10
 0294 30E0              ldi R19,0
 0296 8501              movw R16,R10
 0298 0E940000          xcall mod16u
 029C 00931000          sts _led_buf,R16
 02A0                   .dbline 234
 02A0           ;       }
 02A0           L58:
 02A0                   .dbline 221
 02A0 C2CF              xjmp L57
 02A2           X16:
 02A2                   .dbline -2
 02A2           L52:
 02A2                   .dbline 0 ; func end
 02A2 0895              ret
 02A4                   .dbsym r i 10 i
 02A4                   .dbsym r m 20 c
 02A4                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\²©¿Æµç×ÓÌÔ±¦µêËùÓÐ×ÊÁÏ\²©¿Æ²úÆ·ÅäÌ×ÎÄ¼þ\BK-AVR~1\BK-AVR128ÅäÌ×ÊµÑé³ÌÐò\ÊµÑé¶þ~2\DS18B20.C
 0000           _flag::
 0000                   .blkb 1
 0001                   .dbsym e flag _flag c
 0001           ; }
