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

📄 ds18b20.lis

📁 非常经典的基于AVR m16的DS18B20 C 程序 !1
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0090 8C98              cbi 0x11,4
 0092                   .dbline 76
 0092 03E2              ldi R16,35
 0094 0E940000          xcall _delay_us
 0098                   .dbline 77
 0098           L14:
 0098                   .dbline 63
 0098 6A95              dec R22
 009A           L16:
 009A                   .dbline 63
 009A 2224              clr R2
 009C 2616              cp R2,R22
 009E 28F3              brlo L13
 00A0                   .dbline 78
 00A0           ;               delay_us(16);           //14.92us
 00A0           ;               delay_us(16);           //14.92us
 00A0           ;               RLS_DS18B20;            //释放总线
 00A0           ;               delay_us(35);           //30.38us
 00A0           ;               }
 00A0           ;       delay_us(2);                    //2.71us(大于1us就行了)
 00A0 02E0              ldi R16,2
 00A2 0E940000          xcall _delay_us
 00A6                   .dbline 79
 00A6           ;       return(retVal);
 00A6 042F              mov R16,R20
 00A8                   .dbline -2
 00A8           L12:
 00A8 0E940000          xcall pop_gset2
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbsym r retVal 20 c
 00AE                   .dbsym r i 22 c
 00AE                   .dbend
 00AE                   .dbfunc e write_DS18B20 _write_DS18B20 fV
 00AE           ;           temp -> R20
 00AE           ;              i -> R22
 00AE           ;             wb -> R10
                        .even
 00AE           _write_DS18B20::
 00AE 0E940000          xcall push_gset3
 00B2 A02E              mov R10,R16
 00B4                   .dbline -1
 00B4                   .dbline 89
 00B4           ;       }
 00B4           ; 
 00B4           ; /****************************************
 00B4           ; * 函数名称: uchar write_DS18B20(void) *
 00B4           ; * 函数功能:写DS18B20一个字节                 *
 00B4           ; * 入    口:需写入的字节数据wb                        *
 00B4           ; * 返    回:无                                                        *
 00B4           ; ****************************************/
 00B4           ; void write_DS18B20(uchar wb)
 00B4           ;     {
 00B4                   .dbline 92
 00B4           ;       uchar i;
 00B4           ;       uchar temp;
 00B4           ;       RLS_DS18B20;            //释放总线
 00B4 8C98              cbi 0x11,4
 00B6                   .dbline 93
 00B6           ;       for(i=0;i<8;i++)
 00B6 6627              clr R22
 00B8 1AC0              xjmp L23
 00BA           L20:
 00BA                   .dbline 94
 00BA           ;           {
 00BA                   .dbline 95
 00BA           ;               HLD_DS18B20;            //Maga16控制总线
 00BA 8C9A              sbi 0x11,4
 00BC                   .dbline 96
 00BC           ;               CLR_DS18B20;            //强制拉低
 00BC 9498              cbi 0x12,4
 00BE                   .dbline 97
 00BE           ;               delay_us(16);           //14.92us
 00BE 00E1              ldi R16,16
 00C0 0E940000          xcall _delay_us
 00C4                   .dbline 98
 00C4           ;               temp=wb>>i;
 00C4 0A2D              mov R16,R10
 00C6 162F              mov R17,R22
 00C8 0E940000          xcall lsr8
 00CC 402F              mov R20,R16
 00CE                   .dbline 99
 00CE           ;               temp&=0x01;
 00CE 4170              andi R20,1
 00D0                   .dbline 100
 00D0           ;               if(temp)
 00D0 11F0              breq L24
 00D2                   .dbline 101
 00D2           ;               RLS_DS18B20;            //释放总线
 00D2 8C98              cbi 0x11,4
 00D4 01C0              xjmp L25
 00D6           L24:
 00D6                   .dbline 103
 00D6           ;               else
 00D6           ;               CLR_DS18B20;            //强制拉低
 00D6 9498              cbi 0x12,4
 00D8           L25:
 00D8                   .dbline 104
 00D8 00E1              ldi R16,16
 00DA 0E940000          xcall _delay_us
 00DE                   .dbline 105
 00DE 03E2              ldi R16,35
 00E0 0E940000          xcall _delay_us
 00E4                   .dbline 106
 00E4 8C98              cbi 0x11,4
 00E6                   .dbline 107
 00E6 02E0              ldi R16,2
 00E8 0E940000          xcall _delay_us
 00EC                   .dbline 108
 00EC           L21:
 00EC                   .dbline 93
 00EC 6395              inc R22
 00EE           L23:
 00EE                   .dbline 93
 00EE 6830              cpi R22,8
 00F0 20F3              brlo L20
 00F2                   .dbline -2
 00F2           L19:
 00F2 0E940000          xcall pop_gset3
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym r temp 20 c
 00F8                   .dbsym r i 22 c
 00F8                   .dbsym r wb 10 c
 00F8                   .dbend
 00F8                   .dbfunc e read_Temp _read_Temp fi
 00F8           ;              x -> R20,R21
 00F8           ;          tempH -> R20
 00F8           ;          tempL -> R22
                        .even
 00F8           _read_Temp::
 00F8 0E940000          xcall push_gset2
 00FC                   .dbline -1
 00FC                   .dbline 118
 00FC           ;               delay_us(16);           //14.92us
 00FC           ;               delay_us(35);           //30.38us
 00FC           ;               RLS_DS18B20;            //释放总线
 00FC           ;               delay_us(2);            //2.71us(大于1us就行了)
 00FC           ;           }
 00FC           ;     }
 00FC           ; 
 00FC           ; /****************************************
 00FC           ; * 函数名称: uint read_Temp(void)          *
 00FC           ; * 函数功能:读DS18B20温度                             *
 00FC           ; * 入    口:无                                                        *
 00FC           ; * 返    回:读出的数据字节                            *
 00FC           ; ****************************************/
 00FC           ; uint read_Temp(void)
 00FC           ;       {
 00FC                   .dbline 121
 00FC           ;       uchar tempL,tempH;
 00FC           ;       uint x;
 00FC           ;       rst_DS18B20();
 00FC 81DF              xcall _rst_DS18B20
 00FE                   .dbline 122
 00FE           ;       write_DS18B20(0xcc);        //跳过ROM
 00FE 0CEC              ldi R16,204
 0100 D6DF              xcall _write_DS18B20
 0102                   .dbline 123
 0102           ;       write_DS18B20(0x44);            //启动温度转换
 0102 04E4              ldi R16,68
 0104 D4DF              xcall _write_DS18B20
 0106                   .dbline 124
 0106           ;       delay_us(1);
 0106 01E0              ldi R16,1
 0108 0E940000          xcall _delay_us
 010C                   .dbline 125
 010C           ;       rst_DS18B20();
 010C 79DF              xcall _rst_DS18B20
 010E                   .dbline 126
 010E           ;       write_DS18B20(0xcc);            //跳过ROM
 010E 0CEC              ldi R16,204
 0110 CEDF              xcall _write_DS18B20
 0112                   .dbline 127
 0112           ;       write_DS18B20(0xbe);            //读数据
 0112 0EEB              ldi R16,190
 0114 CCDF              xcall _write_DS18B20
 0116                   .dbline 128
 0116           ;       tempL=read_DS18B20();
 0116 A3DF              xcall _read_DS18B20
 0118 602F              mov R22,R16
 011A                   .dbline 129
 011A           ;       tempH=read_DS18B20();
 011A A1DF              xcall _read_DS18B20
 011C 402F              mov R20,R16
 011E                   .dbline 130
 011E           ;       x=(tempH<<8)|tempL;
 011E 542F              mov R21,R20
 0120 462F              mov R20,R22
 0122                   .dbline 131
 0122           ;       return(x);
 0122 8A01              movw R16,R20
 0124                   .dbline -2
 0124           L26:
 0124 0E940000          xcall pop_gset2
 0128                   .dbline 0 ; func end
 0128 0895              ret
 012A                   .dbsym r x 20 i
 012A                   .dbsym r tempH 20 c
 012A                   .dbsym r tempL 22 c
 012A                   .dbend

⌨️ 快捷键说明

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