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

📄 measure.lis

📁 ATmega128单片机对SHT7x温湿度传感器的驱动程序。编译环境:ICC AVR
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0426                   .dbline -1
 0426                   .dbline 266
 0426           ; }
 0426           ; 
 0426           ; void s_transstart(void)
 0426           ; //----------------------------------------------------------------------------------
 0426           ; // generates a transmission start 
 0426           ; //       _____         ________
 0426           ; // DATA:      |_______|
 0426           ; //           ___     ___
 0426           ; // SCK : ___|   |___|   |______
 0426           ; {  
 0426                   .dbline 267
 0426           ;    DATA_TO_1(); 
 0426 80916200          lds R24,98
 042A 8260              ori R24,2
 042C 80936200          sts 98,R24
 0430                   .dbline 268
 0430           ;    _NOP();
 0430 0000              nop
 0432                   .dbline 269
 0432           ;    SCK_TO_0();                   //Initial state
 0432 80916200          lds R24,98
 0436 8B7F              andi R24,251
 0438 80936200          sts 98,R24
 043C                   .dbline 270
 043C           ;    _NOP();
 043C 0000              nop
 043E                   .dbline 271
 043E           ;    SCK_TO_1();
 043E 80916200          lds R24,98
 0442 8460              ori R24,4
 0444 80936200          sts 98,R24
 0448                   .dbline 272
 0448           ;    _NOP(); 
 0448 0000              nop
 044A                   .dbline 273
 044A           ;    DATA_TO_0();
 044A 80916200          lds R24,98
 044E 8D7F              andi R24,253
 0450 80936200          sts 98,R24
 0454                   .dbline 274
 0454           ;    _NOP(); 
 0454 0000              nop
 0456                   .dbline 275
 0456           ;    SCK_TO_0();  
 0456 80916200          lds R24,98
 045A 8B7F              andi R24,251
 045C 80936200          sts 98,R24
 0460                   .dbline 277
 0460           ;    //delay_us(5);                   //pulswith approx. 5 us  
 0460           ;    _NOP();
 0460 0000              nop
 0462                   .dbline 278
 0462           ;    _NOP();
 0462 0000              nop
 0464                   .dbline 279
 0464           ;    _NOP();
 0464 0000              nop
 0466                   .dbline 280
 0466           ;    _NOP();
 0466 0000              nop
 0468                   .dbline 281
 0468           ;    _NOP();
 0468 0000              nop
 046A                   .dbline 282
 046A           ;    SCK_TO_1();
 046A 80916200          lds R24,98
 046E 8460              ori R24,4
 0470 80936200          sts 98,R24
 0474                   .dbline 283
 0474           ;    _NOP(); 
 0474 0000              nop
 0476                   .dbline 284
 0476           ;    DATA_TO_1();                  
 0476 80916200          lds R24,98
 047A 8260              ori R24,2
 047C 80936200          sts 98,R24
 0480                   .dbline 285
 0480           ;    _NOP(); 
 0480 0000              nop
 0482                   .dbline 286
 0482           ;    SCK_TO_0();        
 0482 80916200          lds R24,98
 0486 8B7F              andi R24,251
 0488 80936200          sts 98,R24
 048C                   .dbline 287
 048C           ;    _NOP();       
 048C 0000              nop
 048E                   .dbline -2
 048E           L41:
 048E                   .dbline 0 ; func end
 048E 0895              ret
 0490                   .dbend
 0490                   .dbfunc e s_connectionreset _s_connectionreset fV
 0490           ;              i -> R20
                        .even
 0490           _s_connectionreset::
 0490 4A93              st -y,R20
 0492 5A93              st -y,R21
 0494                   .dbline -1
 0494                   .dbline 298
 0494           ; } 
 0494           ; 
 0494           ; 
 0494           ; void s_connectionreset(void)
 0494           ; //----------------------------------------------------------------------------------
 0494           ; // communication reset: DATA-line=1 and at least 9 SCK cycles followed by transstart
 0494           ; //       _____________________________________________________         ________
 0494           ; // DATA:                                                      |_______|
 0494           ; //          _    _    _    _    _    _    _    _    _        ___     ___
 0494           ; // SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______|   |___|   |______
 0494           ; {  
 0494                   .dbline 300
 0494           ;   unsigned char i; 
 0494           ;   DATA_TO_1();     
 0494 80916200          lds R24,98
 0498 8260              ori R24,2
 049A 80936200          sts 98,R24
 049E                   .dbline 301
 049E           ;   _NOP();
 049E 0000              nop
 04A0                   .dbline 302
 04A0           ;   SCK_TO_0();                    //Initial state   
 04A0 80916200          lds R24,98
 04A4 8B7F              andi R24,251
 04A6 80936200          sts 98,R24
 04AA                   .dbline 303
 04AA           ;   _NOP();
 04AA 0000              nop
 04AC                   .dbline 304
 04AC           ;   for(i=0;i<9;i++)                  //9 SCK cycles
 04AC 4427              clr R20
 04AE 0DC0              xjmp L46
 04B0           L43:
 04B0                   .dbline 305
 04B0                   .dbline 305
 04B0 80916200          lds R24,98
 04B4 8460              ori R24,4
 04B6 80936200          sts 98,R24
 04BA                   .dbline 306
 04BA 0000              nop
 04BC                   .dbline 307
 04BC 80916200          lds R24,98
 04C0 8B7F              andi R24,251
 04C2 80936200          sts 98,R24
 04C6                   .dbline 308
 04C6 0000              nop
 04C8                   .dbline 309
 04C8           L44:
 04C8                   .dbline 304
 04C8 4395              inc R20
 04CA           L46:
 04CA                   .dbline 304
 04CA 4930              cpi R20,9
 04CC 88F3              brlo L43
 04CE           X18:
 04CE                   .dbline 310
 04CE           ;   { SCK_TO_1(); 
 04CE           ;     _NOP();
 04CE           ;     SCK_TO_0();
 04CE           ;     _NOP();
 04CE           ;   }
 04CE           ;   s_transstart();                   //transmission start
 04CE ABDF              xcall _s_transstart
 04D0                   .dbline -2
 04D0           L42:
 04D0 5991              ld R21,y+
 04D2 4991              ld R20,y+
 04D4                   .dbline 0 ; func end
 04D4 0895              ret
 04D6                   .dbsym r i 20 c
 04D6                   .dbend
 04D6                   .dbfunc e s_measure _s_measure fc
 04D6           ;          error -> R20,R21
 04D6           ;              k -> R12,R13
 04D6           ;              i -> R14,R15
 04D6           ;              j -> R22,R23
 04D6           ;           mode -> R12
 04D6           ;     p_checksum -> R10,R11
                        .even
 04D6           _s_measure::
 04D6 0E940000          xcall push_xgset5
 04DA C22E              mov R12,R18
 04DC 5801              movw R10,R16
 04DE                   .dbline -1
 04DE                   .dbline 317
 04DE           ; }  
 04DE           ; 
 04DE           ; 
 04DE           ; char s_measure(unsigned char *p_checksum, unsigned char mode)
 04DE           ; //----------------------------------------------------------------------------------
 04DE           ; // makes a measurement (humidity/temperature) with checksum
 04DE           ; { 
 04DE                   .dbline 318
 04DE           ;   unsigned error=0;
 04DE 4427              clr R20
 04E0 5527              clr R21
 04E2                   .dbline 321
 04E2           ;   unsigned int i,j,k;
 04E2           ; 
 04E2           ;   s_transstart();                   //transmission start
 04E2 A1DF              xcall _s_transstart
 04E4                   .dbline 322
 04E4           ;   switch(mode){                     //send command to sensor
 04E4 DD24              clr R13
 04E6 CC20              tst R12
 04E8 11F4              brne X19
 04EA DD20              tst R13
 04EC 31F0              breq L51
 04EE           X19:
 04EE C601              movw R24,R12
 04F0 8130              cpi R24,1
 04F2 E0E0              ldi R30,0
 04F4 9E07              cpc R25,R30
 04F6 41F0              breq L52
 04F8           X20:
 04F8 0DC0              xjmp L49
 04FA           X21:
 04FA                   .dbline 322
 04FA           L51:
 04FA                   .dbline 323
 04FA           ;     case TEMP : error+=s_write_byte(MEASURE_TEMP); break;
 04FA 03E0              ldi R16,3
 04FC 96DD              xcall _s_write_byte
 04FE 202E              mov R2,R16
 0500 3324              clr R3
 0502 420D              add R20,R2
 0504 531D              adc R21,R3
 0506                   .dbline 323
 0506 06C0              xjmp L49
 0508           L52:
 0508                   .dbline 324
 0508           ;     case HUMI : error+=s_write_byte(MEASURE_HUMI); break;
 0508 05E0              ldi R16,5
 050A 8FDD              xcall _s_write_byte
 050C 202E              mov R2,R16
 050E 3324              clr R3
 0510 420D              add R20,R2
 0512 531D              adc R21,R3
 0514                   .dbline 324
 0514                   .dbline 325
 0514           ;     default     : break;       
 0514           L49:
 0514                   .dbline 327
 0514           ;   }
 0514           ;   PORTF |=0x02;
 0514 80916200          lds R24,98
 0518 8260              ori R24,2
 051A 80936200          sts 98,R24
 051E                   .dbline 328
 051E           ;   DDRF &=0xfd;
 051E 80916100          lds R24,97
 0522 8D7F              andi R24,253
 0524 80936100          sts 97,R24
 0528                   .dbline 329
 0528           ;   for(k=0;k<65535u;k++)
 0528 CC24              clr R12
 052A DD24              clr R13
 052C 1AC0              xjmp L56
 052E           L53:
 052E                   .dbline 330
 052E           ;   {
 052E                   .dbline 331
 052E           ;   for (i=0;i<65535u;i++)
 052E EE24              clr R14
 0530 FF24              clr R15
 0532 0BC0              xjmp L60
 0534           L57:
 0534                   .dbline 332
 0534           ;   {
 0534                   .dbline 333
 0534           ;       j=PINF&0x02;//DATA_status();//PORTF&0x02;
 0534 60B1              in R22,0x0
 0536 7727              clr R23
 0538 6270              andi R22,2
 053A 7070              andi R23,0
 053C                   .dbline 334
 053C 6030              cpi R22,0
 053E 6707              cpc R22,R23
 0540 09F4              brne L61
 0542           X22:
 0542                   .dbline 334
 0542           ;        if(j==0) break;
 0542 08C0              xjmp L59
 0544           L61:
 0544                   .dbline 335
 0544           L58:
 0544                   .dbline 331
 0544 C701              movw R24,R14
 0546 0196              adiw R24,1
 0548 7C01              movw R14,R24
 054A           L60:
 054A                   .dbline 331
 054A C701              movw R24,R14
 054C 8F3F              cpi R24,255
 054E EFEF              ldi R30,255
 0550 9E07              cpc R25,R30
 0552 80F3              brlo L57
 0554           X23:
 0554           L59:
 0554                   .dbline 336
 0554           ;       } 
 0554           ;       if(j==0)
 0554 6030              cpi R22,0
 0556 6707              cpc R22,R23
 0558 09F4              brne L63
 055A           X24:
 055A                   .dbline 337
 055A           ;       break;
 055A 08C0              xjmp L55
 055C           L63:
 055C                   .dbline 338
 055C           L54:
 055C                   .dbline 329
 055C C601              movw R24,R12
 055E 0196              adiw R24,1
 0560 6C01              movw R12,R24
 0562           L56:
 0562                   .dbline 329
 0562 C601              movw R24,R12
 0564 8F3F              cpi R24,255
 0566 EFEF              ldi R30,255
 0568 9E07              cpc R25,R30
 056A 08F3              brlo L53
 056C           X25:
 056C           L55:
 056C                   .dbline 342
 056C 6030              cpi R22,0
 056E 6707              cpc R22,R23
 0570 11F0              breq L65
 0572           X26:

⌨️ 快捷键说明

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