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

📄 main.lis

📁 ds18b20多个时候的分辨函数
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 016A BC2C              mov R11,R12
 016C                   .dbline 274
 016C           ;   return(x);
 016C 8501              movw R16,R10
 016E                   .dbline -2
 016E           L40:
 016E                   .dbline 0 ; func end
 016E 0C940000          xjmp pop_xgset003C
 0172                   .dbsym r x 10 i
 0172                   .dbsym r tempH 12 c
 0172                   .dbsym r tempL 10 c
 0172                   .dbend
 0172                   .dbfunc e USART_Init _USART_Init fV
 0172           ;            tmp -> R10,R11
 0172           ;           baud -> R10,R11
                        .even
 0172           _USART_Init::
 0172 0E940000          xcall push_xgsetF00C
 0176 5801              movw R10,R16
 0178                   .dbline -1
 0178                   .dbline 282
 0178           ; }
 0178           ; 
 0178           ; /*******************************************************************************
 0178           ; 串口操作相关函数
 0178           ; *******************************************************************************/
 0178           ; 
 0178           ; void USART_Init( unsigned int baud )
 0178           ; {
 0178                   .dbline 285
 0178           ; unsigned int tmp;
 0178           ; /* 设置波特率*/
 0178           ; tmp= F_CPU/baud/16-1;
 0178 1501              movw R2,R10
 017A 4424              clr R4
 017C 5524              clr R5
 017E 40E0              ldi R20,0
 0180 50E8              ldi R21,128
 0182 60E7              ldi R22,112
 0184 70E0              ldi R23,0
 0186 5A92              st -y,R5
 0188 4A92              st -y,R4
 018A 3A92              st -y,R3
 018C 2A92              st -y,R2
 018E 8A01              movw R16,R20
 0190 9B01              movw R18,R22
 0192 0E940000          xcall div32s
 0196 40E1              ldi R20,16
 0198 50E0              ldi R21,0
 019A 60E0              ldi R22,0
 019C 70E0              ldi R23,0
 019E 7A93              st -y,R23
 01A0 6A93              st -y,R22
 01A2 5A93              st -y,R21
 01A4 4A93              st -y,R20
 01A6 0E940000          xcall div32s
 01AA 1801              movw R2,R16
 01AC 2901              movw R4,R18
 01AE 41E0              ldi R20,1
 01B0 50E0              ldi R21,0
 01B2 60E0              ldi R22,0
 01B4 70E0              ldi R23,0
 01B6 241A              sub R2,R20
 01B8 350A              sbc R3,R21
 01BA 460A              sbc R4,R22
 01BC 570A              sbc R5,R23
 01BE 5101              movw R10,R2
 01C0                   .dbline 286
 01C0           ; UBRRH = (unsigned char)(tmp>>8);
 01C0 232C              mov R2,R3
 01C2 3324              clr R3
 01C4 20BC              out 0x20,R2
 01C6                   .dbline 287
 01C6           ; UBRRL = (unsigned char)tmp;
 01C6 A9B8              out 0x9,R10
 01C8                   .dbline 289
 01C8           ; /* 接收器与发送器使能*/
 01C8           ; UCSRB = (1<<RXEN)|(1<<TXEN);
 01C8 88E1              ldi R24,24
 01CA 8AB9              out 0xa,R24
 01CC                   .dbline 291
 01CC           ; /* 设置帧格式: 8 个数据位, 2 个停止位*/
 01CC           ; UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);
 01CC 8EE8              ldi R24,142
 01CE 80BD              out 0x20,R24
 01D0                   .dbline -2
 01D0           L41:
 01D0                   .dbline 0 ; func end
 01D0 0C940000          xjmp pop_xgsetF00C
 01D4                   .dbsym r tmp 10 i
 01D4                   .dbsym r baud 10 i
 01D4                   .dbend
 01D4                   .dbfunc e USART_Transmit _USART_Transmit fV
 01D4           ;           data -> R16
                        .even
 01D4           _USART_Transmit::
 01D4                   .dbline -1
 01D4                   .dbline 296
 01D4           ; }
 01D4           ; 
 01D4           ; // 数据发送【发送5 到8 位数据位的帧】
 01D4           ; void USART_Transmit( unsigned char data )
 01D4           ; {
 01D4           L43:
 01D4                   .dbline 299
 01D4           ; /* 等待发送缓冲器为空 */
 01D4           ; while ( !( UCSRA & (1<<UDRE)) )
 01D4           ; ;
 01D4           L44:
 01D4                   .dbline 298
 01D4 5D9B              sbis 0xb,5
 01D6 FECF              rjmp L43
 01D8           X11:
 01D8                   .dbline 301
 01D8           ; /* 将数据放入缓冲器,发送数据 */
 01D8           ; UDR = data;
 01D8 0CB9              out 0xc,R16
 01DA                   .dbline -2
 01DA           L42:
 01DA                   .dbline 0 ; func end
 01DA 0895              ret
 01DC                   .dbsym r data 16 c
 01DC                   .dbend
 01DC                   .dbfunc e read_rom _read_rom fc
 01DC           ;       end_flag -> R10
 01DC           ;           num2 -> y+10
 01DC           ;            chr -> R12
 01DC           ;           flag -> y+0
 01DC           ;     flag_count -> R20
 01DC           ;            num -> y+20
 01DC           ;              i -> R22
 01DC           ;         retVal -> y+19
 01DC           ;           temp -> y+18
                        .even
 01DC           _read_rom::
 01DC 0E940000          xcall push_xgsetF0FC
 01E0 6597              sbiw R28,21
 01E2                   .dbline -1
 01E2                   .dbline 306
 01E2           ; } 
 01E2           ; 
 01E2           ; 
 01E2           ; 
 01E2           ; unsigned char read_rom(void){
 01E2                   .dbline 308
 01E2           ;  unsigned char i;
 01E2           ;  unsigned char num=0;
 01E2 0024              clr R0
 01E4 0C8A              std y+20,R0
 01E6                   .dbline 310
 01E6           ;  unsigned char num2[8];
 01E6           ;  unsigned char retVal=0;
 01E6 0B8A              std y+19,R0
 01E8                   .dbline 311
 01E8           ;  unsigned char temp=0;
 01E8 0A8A              std y+18,R0
 01EA                   .dbline 314
 01EA           ;  unsigned char chr;
 01EA           ;  unsigned char flag[10];
 01EA           ;  unsigned char flag_count=0;
 01EA 4427              clr R20
 01EC                   .dbline 315
 01EC           ;  unsigned char end_flag=0; 
 01EC AA24              clr R10
 01EE                   .dbline 316
 01EE           ;  B20_num=0;
 01EE 2224              clr R2
 01F0 20924600          sts _B20_num,R2
 01F4           L47:
 01F4                   .dbline 318
 01F4           ;  
 01F4           ;  do{
 01F4                   .dbline 319
 01F4           ;  flag_count=0;
 01F4 4427              clr R20
 01F6                   .dbline 320
 01F6           ;  end_flag=0;
 01F6 AA24              clr R10
 01F8                   .dbline 321
 01F8           ;  i=resetDS18B20();
 01F8 22DF              xcall _resetDS18B20
 01FA 602F              mov R22,R16
 01FC                   .dbline 322
 01FC           ;  writeuint8DS18B20(0xf0);   
 01FC 00EF              ldi R16,240
 01FE 90DF              xcall _writeuint8DS18B20
 0200                   .dbline 323
 0200           ;  RLS_DS18B20;     //释放总线
 0200 D098              cbi 0x1a,0
 0202                   .dbline 324
 0202           ;  for(chr=0;chr<8;chr++){
 0202 CC24              clr R12
 0204 4DC0              xjmp L53
 0206           L50:
 0206                   .dbline 324
 0206                   .dbline 325
 0206           ;  num=0;
 0206 0024              clr R0
 0208 0C8A              std y+20,R0
 020A                   .dbline 326
 020A           ;  for(i=0;i<8;i++){
 020A 6627              clr R22
 020C 3DC0              xjmp L57
 020E           L54:
 020E                   .dbline 326
 020E                   .dbline 327
 020E           ;     num=num>>1;
 020E 0C88              ldd R0,y+20
 0210 0694              lsr R0
 0212 0C8A              std y+20,R0
 0214                   .dbline 328
 0214           ;     retVal=0;
 0214 0024              clr R0
 0216 0B8A              std y+19,R0
 0218                   .dbline 329
 0218           ;       temp=0;
 0218 0A8A              std y+18,R0
 021A                   .dbline 331
 021A           ;     
 021A           ;     temp=read_a_bit();
 021A 4DDF              xcall _read_a_bit
 021C 0A8B              std y+18,R16
 021E                   .dbline 332
 021E           ;       if(temp)
 021E 002E              mov R0,R16
 0220 0023              tst R16
 0222 19F0              breq L58
 0224           X12:
 0224                   .dbline 333
 0224           ;       retVal|=0x01;
 0224 8B89              ldd R24,y+19
 0226 8160              ori R24,1
 0228 8B8B              std y+19,R24
 022A           L58:
 022A                   .dbline 334
 022A           ;       retVal<<=1;
 022A 0B88              ldd R0,y+19
 022C 000C              lsl R0
 022E 0B8A              std y+19,R0
 0230                   .dbline 335
 0230           ;       temp=0;
 0230 0024              clr R0
 0232 0A8A              std y+18,R0
 0234                   .dbline 337
 0234           ; 
 0234           ;       temp=read_a_bit();
 0234 40DF              xcall _read_a_bit
 0236 E02E              mov R14,R16
 0238 EA8A              std y+18,R14
 023A                   .dbline 338
 023A           ;       if(temp)
 023A 0E2C              mov R0,R14
 023C 0023              tst R16
 023E 19F0              breq L60
 0240           X13:
 0240                   .dbline 339
 0240           ;       retVal|=0x01;
 0240 8B89              ldd R24,y+19
 0242 8160              ori R24,1
 0244 8B8B              std y+19,R24
 0246           L60:
 0246                   .dbline 341
 0246           ;     
 0246           ;       if(retVal==bit_1){        //1
 0246 8B89              ldd R24,y+19
 0248 8230              cpi R24,2
 024A 31F4              brne L62
 024C           X14:
 024C                   .dbline 341
 024C                   .dbline 342
 024C           ;       write_a_bit(1);
 024C 01E0              ldi R16,1
 024E 1FDF              xcall _write_a_bit
 0250                   .dbline 343
 0250           ;       num|=0x80;
 0250 8C89              ldd R24,y+20
 0252 8068              ori R24,128
 0254 8C8B              std y+20,R24
 0256                   .dbline 344
 0256           ;       }
 0256 17C0              xjmp L63
 0258           L62:
 0258                   .dbline 345
 0258           ;       else if(retVal==bit_0){    //0
 0258 8B89              ldd R24,y+19
 025A 8130              cpi R24,1
 025C 19F4              brne L64
 025E           X15:
 025E                   .dbline 345
 025E                   .dbline 347
 025E           ;           
 025E           ;           write_a_bit(0);
 025E 0027              clr R16
 0260 16DF              xcall _write_a_bit
 0262                   .dbline 348
 0262           ;       }else {              //maybe o or 1
 0262 11C0              xjmp L65
 0264           L64:
 0264                   .dbline 348
 0264                   .dbline 349
 0264           ;           if(flag[flag_count]==0){
 0264 CE01              movw R24,R28
 0266 E42F              mov R30,R20
 0268 FF27              clr R31
 026A E80F              add R30,R24
 026C F91F              adc R31,R25
 026E 2080              ldd R2,z+0
 0270 2220              tst R2
 0272 19F4              brne L66
 0274           X16:
 0274                   .dbline 349
 0274                   .dbline 350
 0274           ;               write_a_bit(0);
 0274 0027              clr R16
 0276 0BDF              xcall _write_a_bit
 0278                   .dbline 352
 0278           ;               
 0278           ;               }
 0278 05C0              xjmp L67
 027A           L66:
 027A                   .dbline 353
 027A           ;               else{
 027A                   .dbline 354
 027A           ;               write_a_bit(0x01);
 027A 01E0              ldi R16,1
 027C 08DF              xcall _write_a_bit
 027E                   .dbline 355
 027E           ;               num|=0x80;
 027E 8C89              ldd R24,y+20
 0280 8068              ori R24,128
 0282 8C8B              std y+20,R24
 0284                   .dbline 357
 0284           ;               
 0284           ;               }
 0284           L67:
 0284                   .dbline 358
 0284           ;               flag_count++;
 0284 4395              inc R20
 0286                   .dbline 360
 0286           ;               
 0286           ;       }
 0286           L65:
 0286           L63:
 0286                   .dbline 363
 0286           ;       
 0286           ;       

⌨️ 快捷键说明

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