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

📄 ds18b20.lis

📁 ds18b20+1602液晶显示 基于atmega16l单片机的编程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00A4           ;       {
 00A4                   .dbline 64
 00A4           ;           temp =val>>i;
 00A4 0A2D              mov R16,R10
 00A6 162F              mov R17,R22
 00A8 0E940000          xcall lsr8
 00AC 402F              mov R20,R16
 00AE                   .dbline 65
 00AE           ;               if((temp&0x01) == 0x01)
 00AE 842F              mov R24,R20
 00B0 8170              andi R24,1
 00B2 8130              cpi R24,1
 00B4 19F4              brne L15
 00B6                   .dbline 66
 00B6           ;               DS18B20_WriteBit(1);
 00B6 01E0              ldi R16,1
 00B8 C0DF              xcall _DS18B20_WriteBit
 00BA 02C0              xjmp L16
 00BC           L15:
 00BC                   .dbline 68
 00BC           ;               else 
 00BC           ;               DS18B20_WriteBit(0);
 00BC 0027              clr R16
 00BE BDDF              xcall _DS18B20_WriteBit
 00C0           L16:
 00C0                   .dbline 71
 00C0           L12:
 00C0                   .dbline 62
 00C0 6395              inc R22
 00C2           L14:
 00C2                   .dbline 62
 00C2 6830              cpi R22,8
 00C4 78F3              brlo L11
 00C6                   .dbline 73
 00C6           ;               
 00C6           ;               
 00C6           ;       }
 00C6           ;       
 00C6           ;        delay_nus(60);      //延时
 00C6 0CE3              ldi R16,60
 00C8 10E0              ldi R17,0
 00CA 0E940000          xcall _delay_nus
 00CE                   .dbline -2
 00CE           L10:
 00CE 0E940000          xcall pop_gset3
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbsym r temp 20 c
 00D4                   .dbsym r i 22 c
 00D4                   .dbsym r val 10 c
 00D4                   .dbend
 00D4                   .dbfunc e DS18B20_ReadChar _DS18B20_ReadChar fc
 00D4           ;         R_data -> R20
 00D4           ;              i -> R22
                        .even
 00D4           _DS18B20_ReadChar::
 00D4 0E940000          xcall push_gset2
 00D8                   .dbline -1
 00D8                   .dbline 77
 00D8           ; }
 00D8           ; 
 00D8           ; byte DS18B20_ReadChar(void)      //读一个字节数据函数
 00D8           ; {                                         
 00D8                   .dbline 78
 00D8           ;   unsigned char i = 0;
 00D8 6627              clr R22
 00DA                   .dbline 79
 00DA           ;   byte R_data = 0;
 00DA 4427              clr R20
 00DC                   .dbline 81
 00DC           ;    
 00DC           ;    for (i=0;i<8;i++)
 00DC 09C0              xjmp L21
 00DE           L18:
 00DE                   .dbline 82
 00DE           ;     {
 00DE                   .dbline 83
 00DE           ;         if(DS18B20_ReadBit())
 00DE C3DF              xcall _DS18B20_ReadBit
 00E0 0023              tst R16
 00E2 29F0              breq L22
 00E4                   .dbline 84
 00E4           ;           R_data |=1<<i;
 00E4 01E0              ldi R16,1
 00E6 162F              mov R17,R22
 00E8 0E940000          xcall lsl8
 00EC 402B              or R20,R16
 00EE           L22:
 00EE                   .dbline 85
 00EE           L19:
 00EE                   .dbline 81
 00EE 6395              inc R22
 00F0           L21:
 00F0                   .dbline 81
 00F0 6830              cpi R22,8
 00F2 A8F3              brlo L18
 00F4                   .dbline 86
 00F4           ;     }
 00F4           ;     return (R_data);
 00F4 042F              mov R16,R20
 00F6                   .dbline -2
 00F6           L17:
 00F6 0E940000          xcall pop_gset2
 00FA                   .dbline 0 ; func end
 00FA 0895              ret
 00FC                   .dbsym r R_data 20 c
 00FC                   .dbsym r i 22 c
 00FC                   .dbend
 00FC                   .dbfunc e ReadTemperature _ReadTemperature fi
 00FC           ;      tempValue -> R20,R21
 00FC           ;            Rom -> y+0
                        .even
 00FC           _ReadTemperature::
 00FC 0E940000          xcall push_gset1
 0100 2297              sbiw R28,2
 0102                   .dbline -1
 0102                   .dbline 90
 0102           ; }
 0102           ; 
 0102           ; unsigned int ReadTemperature(void)     //读取温度函数
 0102           ; {
 0102                   .dbline 93
 0102           ;        byte Rom[2];
 0102           ;      unsigned int tempValue;
 0102           ;        if(DS18B20_Reset())
 0102 7EDF              xcall _DS18B20_Reset
 0104 0023              tst R16
 0106 19F0              breq L25
 0108                   .dbline 94
 0108           ;        {
 0108                   .dbline 95
 0108           ;               return 0xffff;
 0108 0FEF              ldi R16,65535
 010A 1FEF              ldi R17,255
 010C 23C0              xjmp L24
 010E           L25:
 010E                   .dbline 97
 010E           ;        }
 010E           ;      DS18B20_WriteChar(0xcc) ;  //跳过读序号列号的操作
 010E 0CEC              ldi R16,204
 0110 C3DF              xcall _DS18B20_WriteChar
 0112                   .dbline 98
 0112           ;      DS18B20_WriteChar(0x44) ;  //启动温度转换
 0112 04E4              ldi R16,68
 0114 C1DF              xcall _DS18B20_WriteChar
 0116                   .dbline 99
 0116           ;        delay_nus(100); 
 0116 04E6              ldi R16,100
 0118 10E0              ldi R17,0
 011A 0E940000          xcall _delay_nus
 011E                   .dbline 100
 011E           ;       if(DS18B20_Reset())
 011E 70DF              xcall _DS18B20_Reset
 0120 0023              tst R16
 0122 19F0              breq L27
 0124                   .dbline 101
 0124           ;        {
 0124                   .dbline 102
 0124           ;               return 0xffff;
 0124 0FEF              ldi R16,65535
 0126 1FEF              ldi R17,255
 0128 15C0              xjmp L24
 012A           L27:
 012A                   .dbline 104
 012A           ;        }
 012A           ;      DS18B20_WriteChar(0xCC) ;  //跳过读序号列号的操作
 012A 0CEC              ldi R16,204
 012C B5DF              xcall _DS18B20_WriteChar
 012E                   .dbline 105
 012E           ;      DS18B20_WriteChar(0xBE) ;  //读取温度寄存器
 012E 0EEB              ldi R16,190
 0130 B3DF              xcall _DS18B20_WriteChar
 0132                   .dbline 106
 0132           ;       delay_nus(200); 
 0132 08EC              ldi R16,200
 0134 10E0              ldi R17,0
 0136 0E940000          xcall _delay_nus
 013A                   .dbline 107
 013A           ;      Rom[0] = DS18B20_ReadChar() ;   //读温度低8位
 013A CCDF              xcall _DS18B20_ReadChar
 013C 0883              std y+0,R16
 013E                   .dbline 108
 013E           ;      Rom[1] = DS18B20_ReadChar() ;   //读温度高8位 
 013E CADF              xcall _DS18B20_ReadChar
 0140 0983              std y+1,R16
 0142                   .dbline 112
 0142           ;       /* *tempValue = Rom[1];
 0142           ;        *tempValue <<= 8;
 0142           ;        *tempValue |= Rom[0];*/
 0142           ;        tempValue = Rom[1];
 0142 402F              mov R20,R16
 0144 5527              clr R21
 0146                   .dbline 113
 0146           ;        tempValue <<= 8;
 0146 542F              mov R21,R20
 0148 4427              clr R20
 014A                   .dbline 114
 014A           ;        tempValue |= Rom[0];
 014A 2880              ldd R2,y+0
 014C 3324              clr R3
 014E 4229              or R20,R2
 0150 5329              or R21,R3
 0152                   .dbline 115
 0152           ;        return tempValue;
 0152 8A01              movw R16,R20
 0154                   .dbline -2
 0154           L24:
 0154 2296              adiw R28,2
 0156 0E940000          xcall pop_gset1
 015A                   .dbline 0 ; func end
 015A 0895              ret
 015C                   .dbsym r tempValue 20 i
 015C                   .dbsym l Rom 0 A[2:2]c
 015C                   .dbend

⌨️ 快捷键说明

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