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

📄 ds18b20.lis

📁 基于AVR单片机的DS18B20测温程序.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module DS18B20.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\CRAZY\调试AVR_C\电升06~1\DS18B20.c
 0000                   .dbfunc e process _process fV
 0000           ;              p -> R10,R11
 0000           ;              i -> y+6
                        .even
 0000           _process::
 0000 00D0              rcall push_arg4
 0002 00D0              rcall push_gset3
 0004 AA84              ldd R10,y+10
 0006 BB84              ldd R11,y+11
 0008                   .dbline -1
 0008                   .dbline 20
 0008           ; #include <iom8v.h>
 0008           ; #include <macros.h>
 0008           ; 
 0008           ; #define LCM_Data  PORTB
 0008           ; #define Busy    0x80
 0008           ; 
 0008           ; #define  Set_DQ1        DDRC |= 0x08;  PORTC |= 0x08;         //总线拉高
 0008           ; #define  Set_DQ0        DDRC |= 0x08;  PORTC &= 0xf7;         //总线置低
 0008           ; #define  Read_DQ        PINC&0x08                             //读总线
 0008           ; #define  MatchROM       0xcc                                  //匹配ROM
 0008           ; #define  WriteMode      0x4e                                  //写模式
 0008           ; #define  TH             0x64                                  //设置温度上限100
 0008           ; #define  TL             0x8a                                  //设置温度下限-10
 0008           ; #define  MatchTemp      0x7f                                  //写温度匹配寄存器,12bit
 0008           ; #define  ConverTem      0x44                                  //DS18B20温度转换命令
 0008           ; #define  Get_Value      0xbe                                  //读取温度寄存器值
 0008           ; uchar data[5];
 0008           ; 
 0008           ; void process(long int i,uchar*p)
 0008           ; {
 0008                   .dbline 21
 0008           ; p[0]=i/1000;
 0008 48EE              ldi R20,232
 000A 53E0              ldi R21,3
 000C 60E0              ldi R22,0
 000E 70E0              ldi R23,0
 0010 FE01              movw R30,R28
 0012 2680              ldd R2,z+6
 0014 3780              ldd R3,z+7
 0016 4084              ldd R4,z+8
 0018 5184              ldd R5,z+9
 001A 7A93              st -y,R23
 001C 6A93              st -y,R22
 001E 5A93              st -y,R21
 0020 4A93              st -y,R20
 0022 8101              movw R16,R2
 0024 9201              movw R18,R4
 0026 00D0              rcall div32s
 0028 F501              movw R30,R10
 002A 0083              std z+0,R16
 002C                   .dbline 22
 002C           ; i=i%1000;
 002C 48EE              ldi R20,232
 002E 53E0              ldi R21,3
 0030 60E0              ldi R22,0
 0032 70E0              ldi R23,0
 0034 FE01              movw R30,R28
 0036 2680              ldd R2,z+6
 0038 3780              ldd R3,z+7
 003A 4084              ldd R4,z+8
 003C 5184              ldd R5,z+9
 003E 7A93              st -y,R23
 0040 6A93              st -y,R22
 0042 5A93              st -y,R21
 0044 4A93              st -y,R20
 0046 8101              movw R16,R2
 0048 9201              movw R18,R4
 004A 00D0              rcall mod32s
 004C FE01              movw R30,R28
 004E 0683              std z+6,R16
 0050 1783              std z+7,R17
 0052 2087              std z+8,R18
 0054 3187              std z+9,R19
 0056                   .dbline 23
 0056           ; p[1]=i/100;
 0056 44E6              ldi R20,100
 0058 50E0              ldi R21,0
 005A 60E0              ldi R22,0
 005C 70E0              ldi R23,0
 005E FE01              movw R30,R28
 0060 2680              ldd R2,z+6
 0062 3780              ldd R3,z+7
 0064 4084              ldd R4,z+8
 0066 5184              ldd R5,z+9
 0068 7A93              st -y,R23
 006A 6A93              st -y,R22
 006C 5A93              st -y,R21
 006E 4A93              st -y,R20
 0070 8101              movw R16,R2
 0072 9201              movw R18,R4
 0074 00D0              rcall div32s
 0076 F501              movw R30,R10
 0078 0183              std z+1,R16
 007A                   .dbline 24
 007A           ; i=i%100;
 007A 44E6              ldi R20,100
 007C 50E0              ldi R21,0
 007E 60E0              ldi R22,0
 0080 70E0              ldi R23,0
 0082 FE01              movw R30,R28
 0084 2680              ldd R2,z+6
 0086 3780              ldd R3,z+7
 0088 4084              ldd R4,z+8
 008A 5184              ldd R5,z+9
 008C 7A93              st -y,R23
 008E 6A93              st -y,R22
 0090 5A93              st -y,R21
 0092 4A93              st -y,R20
 0094 8101              movw R16,R2
 0096 9201              movw R18,R4
 0098 00D0              rcall mod32s
 009A FE01              movw R30,R28
 009C 0683              std z+6,R16
 009E 1783              std z+7,R17
 00A0 2087              std z+8,R18
 00A2 3187              std z+9,R19
 00A4                   .dbline 25
 00A4           ; p[2]=i/10;
 00A4 4AE0              ldi R20,10
 00A6 50E0              ldi R21,0
 00A8 60E0              ldi R22,0
 00AA 70E0              ldi R23,0
 00AC FE01              movw R30,R28
 00AE 2680              ldd R2,z+6
 00B0 3780              ldd R3,z+7
 00B2 4084              ldd R4,z+8
 00B4 5184              ldd R5,z+9
 00B6 7A93              st -y,R23
 00B8 6A93              st -y,R22
 00BA 5A93              st -y,R21
 00BC 4A93              st -y,R20
 00BE 8101              movw R16,R2
 00C0 9201              movw R18,R4
 00C2 00D0              rcall div32s
 00C4 F501              movw R30,R10
 00C6 0283              std z+2,R16
 00C8                   .dbline 26
 00C8           ; i=i%10;
 00C8 4AE0              ldi R20,10
 00CA 50E0              ldi R21,0
 00CC 60E0              ldi R22,0
 00CE 70E0              ldi R23,0
 00D0 FE01              movw R30,R28
 00D2 2680              ldd R2,z+6
 00D4 3780              ldd R3,z+7
 00D6 4084              ldd R4,z+8
 00D8 5184              ldd R5,z+9
 00DA 7A93              st -y,R23
 00DC 6A93              st -y,R22
 00DE 5A93              st -y,R21
 00E0 4A93              st -y,R20
 00E2 8101              movw R16,R2
 00E4 9201              movw R18,R4
 00E6 00D0              rcall mod32s
 00E8 FE01              movw R30,R28
 00EA 0683              std z+6,R16
 00EC 1783              std z+7,R17
 00EE 2087              std z+8,R18
 00F0 3187              std z+9,R19
 00F2                   .dbline 27
 00F2           ; p[3]=i;
 00F2 FE01              movw R30,R28
 00F4 2680              ldd R2,z+6
 00F6 3780              ldd R3,z+7
 00F8 F501              movw R30,R10
 00FA 2382              std z+3,R2
 00FC                   .dbline 28
 00FC           ; for(i=0;i<4;i++)
 00FC 40E0              ldi R20,0
 00FE 50E0              ldi R21,0
 0100 60E0              ldi R22,0
 0102 70E0              ldi R23,0
 0104 FE01              movw R30,R28
 0106 4683              std z+6,R20
 0108 5783              std z+7,R21
 010A 6087              std z+8,R22
 010C 7187              std z+9,R23
 010E           L2:
 010E                   .dbline 29
 010E FE01              movw R30,R28
 0110 2680              ldd R2,z+6
 0112 3780              ldd R3,z+7
 0114 2A0C              add R2,R10
 0116 3B1C              adc R3,R11
 0118 F101              movw R30,R2
 011A 8081              ldd R24,z+0
 011C 805D              subi R24,208    ; addi 48
 011E 8083              std z+0,R24
 0120           L3:
 0120                   .dbline 28
 0120 41E0              ldi R20,1
 0122 50E0              ldi R21,0
 0124 60E0              ldi R22,0
 0126 70E0              ldi R23,0
 0128 FE01              movw R30,R28
 012A 2680              ldd R2,z+6
 012C 3780              ldd R3,z+7
 012E 4084              ldd R4,z+8
 0130 5184              ldd R5,z+9
 0132 240E              add R2,R20
 0134 351E              adc R3,R21
 0136 461E              adc R4,R22
 0138 571E              adc R5,R23
 013A FE01              movw R30,R28
 013C 2682              std z+6,R2
 013E 3782              std z+7,R3
 0140 4086              std z+8,R4
 0142 5186              std z+9,R5
 0144                   .dbline 28
 0144 44E0              ldi R20,4
 0146 50E0              ldi R21,0
 0148 60E0              ldi R22,0
 014A 70E0              ldi R23,0
 014C FE01              movw R30,R28
 014E 2680              ldd R2,z+6
 0150 3780              ldd R3,z+7
 0152 4084              ldd R4,z+8
 0154 5184              ldd R5,z+9
 0156 2416              cp R2,R20
 0158 3506              cpc R3,R21
 015A 4606              cpc R4,R22
 015C 5706              cpc R5,R23
 015E 0CF4              brge X0
 0160 D6CF              rjmp L2
 0162           X0:
 0162                   .dbline 30
 0162           ; p[i]+=0x30;
 0162           ; p[4]='$'; 
 0162 84E2              ldi R24,36
 0164 F501              movw R30,R10
 0166 8483              std z+4,R24
 0168                   .dbline -2
 0168           L1:
 0168 00D0              rcall pop_gset3
 016A 2496              adiw R28,4
 016C                   .dbline 0 ; func end
 016C 0895              ret
 016E                   .dbsym r p 10 pc
 016E                   .dbsym l i 6 L
 016E                   .dbend
 016E                   .dbfunc e delayms _delayms fV
 016E           ;              j -> R20,R21
 016E           ;              i -> R16,R17
                        .even
 016E           _delayms::
 016E 00D0              rcall push_gset1
 0170                   .dbline -1
 0170                   .dbline 35
 0170           ; }
 0170           ; 
 0170           ; 
 0170           ; void delayms(uint i)
 0170           ; {
 0170                   .dbline 37
 0170           ;  uint j;
 0170           ;  for(;i!=0;i--)
 0170 0BC0              rjmp L10
 0172           L7:
 0172                   .dbline 38
 0172           ;  for(j=0;j<8000;j++)
 0172 4427              clr R20
 0174 5527              clr R21
 0176 02C0              rjmp L14
 0178           L11:
 0178                   .dbline 39
 0178           L12:
 0178                   .dbline 38
 0178 4F5F              subi R20,255  ; offset = 1
 017A 5F4F              sbci R21,255
 017C           L14:
 017C                   .dbline 38
 017C 4034              cpi R20,64
 017E EFE1              ldi R30,31
 0180 5E07              cpc R21,R30
 0182 D0F3              brlo L11
 0184           L8:
 0184                   .dbline 37
 0184 0150              subi R16,1
 0186 1040              sbci R17,0
 0188           L10:
 0188                   .dbline 37
 0188 0030              cpi R16,0
 018A 0107              cpc R16,R17
 018C 91F7              brne L7
 018E           X1:
 018E                   .dbline -2
 018E           L6:
 018E 00D0              rcall pop_gset1
 0190                   .dbline 0 ; func end
 0190 0895              ret
 0192                   .dbsym r j 20 i
 0192                   .dbsym r i 16 i
 0192                   .dbend
 0192                   .dbfunc e delayus _delayus fV
 0192           ;              i -> R16,R17
                        .even
 0192           _delayus::
 0192                   .dbline -1
 0192                   .dbline 43
 0192           ;  ;
 0192           ; }
 0192           ; 
 0192           ; void delayus(uint i)
 0192           ; {
 0192                   .dbline 44
 0192           ;  for(;i!=0;i--)
 0192 02C0              rjmp L19
 0194           L16:
 0194                   .dbline 45
 0194           L17:
 0194                   .dbline 44
 0194 0150              subi R16,1
 0196 1040              sbci R17,0
 0198           L19:
 0198                   .dbline 44
 0198 0030              cpi R16,0
 019A 0107              cpc R16,R17
 019C D9F7              brne L16
 019E           X2:
 019E                   .dbline -2
 019E           L15:
 019E                   .dbline 0 ; func end
 019E 0895              ret
 01A0                   .dbsym r i 16 i
 01A0                   .dbend
 01A0                   .dbfunc e port_init _port_init fV
                        .even
 01A0           _port_init::
 01A0                   .dbline -1
 01A0                   .dbline 52
 01A0           ;  ;
 01A0           ; }
 01A0           ;  
 01A0           ;  
 01A0           ;  
 01A0           ; 
 01A0           ; void port_init(void)
 01A0           ; {
 01A0                   .dbline 53
 01A0           ;    DDRD  = 0xfe;
 01A0 8EEF              ldi R24,254
 01A2 81BB              out 0x11,R24
 01A4                   .dbline 54
 01A4           ;    PORTD = 0xff;
 01A4 8FEF              ldi R24,255
 01A6 82BB              out 0x12,R24
 01A8                   .dbline 55
 01A8           ;    DDRB  = 0xff;
 01A8 87BB              out 0x17,R24
 01AA                   .dbline 56
 01AA           ;    PORTB = 0xff;
 01AA 88BB              out 0x18,R24
 01AC                   .dbline 57
 01AC           ;    DDRC  = 0xff;
 01AC 84BB              out 0x14,R24
 01AE                   .dbline 58
 01AE           ;    PORTC = 0xff;
 01AE 85BB              out 0x15,R24
 01B0                   .dbline -2
 01B0           L20:
 01B0                   .dbline 0 ; func end
 01B0 0895              ret
 01B2                   .dbend
 01B2                   .dbfunc e WriteDataLCM _WriteDataLCM fV
 01B2           ;          WDLCM -> R20
                        .even
 01B2           _WriteDataLCM::
 01B2 00D0              rcall push_gset1
 01B4 402F              mov R20,R16
 01B6                   .dbline -1
 01B6                   .dbline 65
 01B6           ; }
 01B6           ; 
 01B6           ; 
 01B6           ; /**********************************************************/ 
 01B6           ; //写数据
 01B6           ; void WriteDataLCM(unsigned char WDLCM)
 01B6           ; {
 01B6                   .dbline 67
 01B6           ;  //ReadStatusLCM(); //检测忙
 01B6           ;  LCM_Data = WDLCM;
 01B6 48BB              out 0x18,R20
 01B8                   .dbline 70
 01B8           ;  //PORTC=0B00000100;
 01B8           ;  //PORTC=0B00000100;
 01B8           ;  delayms(1);
 01B8 01E0              ldi R16,1
 01BA 10E0              ldi R17,0

⌨️ 快捷键说明

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