CCS PCM C Compiler, Version 4.106, 47914               15-V-13 22:58

               Filename: Z:\home\kaklik\svnMLAB\Modules\Sensors\SHT25V01A\SW\PIC16F887\main.lst

               ROM used: 2319 words (28%)
                         Largest free fragment is 2048
               RAM used: 17 (5%) at main() level
                         43 (12%) worst case
               Stack:    2 locations

*
0000:  MOVLW  08
0001:  MOVWF  0A
0002:  GOTO   000
0003:  NOP
.................... /* 
.................... SHT25  sensor demo firmware  
.................... */ 
....................  
.................... #include "main.h" 
.................... #include <16F887.h> 
.................... //////// Standard Header file for the PIC16F887 device //////////////// 
.................... #device PIC16F887 
.................... #list 
....................  
.................... #device adc=8 
....................  
.................... #FUSES NOWDT                    //No Watch Dog Timer 
.................... #FUSES INTRC_IO                    //Internal RC Osc 
.................... #FUSES NOPUT                    //No Power Up Timer 
.................... #FUSES MCLR                     //Master Clear pin enabled 
.................... #FUSES NOPROTECT                //Code not protected from reading 
.................... #FUSES NOCPD                    //No EE protection 
.................... #FUSES NOBROWNOUT               //No brownout reset 
.................... #FUSES IESO                     //Internal External Switch Over mode enabled 
.................... #FUSES FCMEN                    //Fail-safe clock monitor enabled 
.................... #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O 
.................... #FUSES NODEBUG                  //No Debug mode for ICD 
.................... #FUSES NOWRT                    //Program memory not write protected 
.................... #FUSES BORV40                   //Brownout reset at 4.0V 
....................  
.................... #use delay(clock=8000000) 
*
0169:  MOVLW  30
016A:  MOVWF  04
016B:  BCF    03.7
016C:  MOVF   00,W
016D:  BTFSC  03.2
016E:  GOTO   17C
016F:  MOVLW  02
0170:  MOVWF  78
0171:  CLRF   77
0172:  DECFSZ 77,F
0173:  GOTO   172
0174:  DECFSZ 78,F
0175:  GOTO   171
0176:  MOVLW  97
0177:  MOVWF  77
0178:  DECFSZ 77,F
0179:  GOTO   178
017A:  DECFSZ 00,F
017B:  GOTO   16F
017C:  RETURN
....................  
.................... #use i2c(master, sda=PIN_C4, scl=PIN_C3) 
*
002C:  MOVLW  08
002D:  MOVWF  78
002E:  NOP
002F:  BCF    07.3
0030:  BCF    20.3
0031:  MOVF   20,W
0032:  BSF    03.5
0033:  MOVWF  07
0034:  NOP
0035:  BCF    03.5
0036:  RLF    30,F
0037:  BCF    07.4
0038:  BTFSS  03.0
0039:  GOTO   040
003A:  BSF    20.4
003B:  MOVF   20,W
003C:  BSF    03.5
003D:  MOVWF  07
003E:  GOTO   044
003F:  BCF    03.5
0040:  BCF    20.4
0041:  MOVF   20,W
0042:  BSF    03.5
0043:  MOVWF  07
0044:  NOP
0045:  BCF    03.5
0046:  BSF    20.3
0047:  MOVF   20,W
0048:  BSF    03.5
0049:  MOVWF  07
004A:  BCF    03.5
004B:  BTFSS  07.3
004C:  GOTO   04B
004D:  DECFSZ 78,F
004E:  GOTO   02E
004F:  NOP
0050:  BCF    07.3
0051:  BCF    20.3
0052:  MOVF   20,W
0053:  BSF    03.5
0054:  MOVWF  07
0055:  NOP
0056:  BCF    03.5
0057:  BSF    20.4
0058:  MOVF   20,W
0059:  BSF    03.5
005A:  MOVWF  07
005B:  NOP
005C:  NOP
005D:  BCF    03.5
005E:  BSF    20.3
005F:  MOVF   20,W
0060:  BSF    03.5
0061:  MOVWF  07
0062:  BCF    03.5
0063:  BTFSS  07.3
0064:  GOTO   063
0065:  CLRF   78
0066:  NOP
0067:  BTFSC  07.4
0068:  BSF    78.0
0069:  BCF    07.3
006A:  BCF    20.3
006B:  MOVF   20,W
006C:  BSF    03.5
006D:  MOVWF  07
006E:  BCF    03.5
006F:  BCF    07.4
0070:  BCF    20.4
0071:  MOVF   20,W
0072:  BSF    03.5
0073:  MOVWF  07
0074:  BCF    03.5
0075:  RETURN
*
017D:  MOVLW  08
017E:  MOVWF  31
017F:  MOVF   77,W
0180:  MOVWF  32
0181:  BSF    20.4
0182:  MOVF   20,W
0183:  BSF    03.5
0184:  MOVWF  07
0185:  NOP
0186:  BCF    03.5
0187:  BSF    20.3
0188:  MOVF   20,W
0189:  BSF    03.5
018A:  MOVWF  07
018B:  BCF    03.5
018C:  BTFSS  07.3
018D:  GOTO   18C
018E:  BTFSC  07.4
018F:  BSF    03.0
0190:  BTFSS  07.4
0191:  BCF    03.0
0192:  RLF    78,F
0193:  NOP
0194:  BCF    20.3
0195:  MOVF   20,W
0196:  BSF    03.5
0197:  MOVWF  07
0198:  BCF    03.5
0199:  BCF    07.3
019A:  DECFSZ 31,F
019B:  GOTO   181
019C:  BSF    20.4
019D:  MOVF   20,W
019E:  BSF    03.5
019F:  MOVWF  07
01A0:  NOP
01A1:  BCF    03.5
01A2:  BCF    07.4
01A3:  MOVF   32,W
01A4:  BTFSC  03.2
01A5:  GOTO   1AB
01A6:  BCF    20.4
01A7:  MOVF   20,W
01A8:  BSF    03.5
01A9:  MOVWF  07
01AA:  BCF    03.5
01AB:  NOP
01AC:  BSF    20.3
01AD:  MOVF   20,W
01AE:  BSF    03.5
01AF:  MOVWF  07
01B0:  BCF    03.5
01B1:  BTFSS  07.3
01B2:  GOTO   1B1
01B3:  NOP
01B4:  BCF    07.3
01B5:  BCF    20.3
01B6:  MOVF   20,W
01B7:  BSF    03.5
01B8:  MOVWF  07
01B9:  NOP
01BA:  BCF    03.5
01BB:  BCF    07.4
01BC:  BCF    20.4
01BD:  MOVF   20,W
01BE:  BSF    03.5
01BF:  MOVWF  07
01C0:  BCF    03.5
01C1:  RETURN
.................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD 
*
00AE:  BCF    20.7
00AF:  MOVF   20,W
00B0:  BSF    03.5
00B1:  MOVWF  07
00B2:  BCF    03.5
00B3:  BCF    07.7
00B4:  MOVLW  08
00B5:  MOVWF  78
00B6:  GOTO   0B7
00B7:  NOP
00B8:  BSF    78.7
00B9:  GOTO   0C8
00BA:  BCF    78.7
00BB:  RRF    39,F
00BC:  BTFSC  03.0
00BD:  BSF    07.7
00BE:  BTFSS  03.0
00BF:  BCF    07.7
00C0:  BSF    78.6
00C1:  GOTO   0C8
00C2:  BCF    78.6
00C3:  DECFSZ 78,F
00C4:  GOTO   0BB
00C5:  GOTO   0C6
00C6:  NOP
00C7:  BSF    07.7
00C8:  MOVLW  3F
00C9:  MOVWF  04
00CA:  DECFSZ 04,F
00CB:  GOTO   0CA
00CC:  NOP
00CD:  BTFSC  78.7
00CE:  GOTO   0BA
00CF:  BTFSC  78.6
00D0:  GOTO   0C2
00D1:  RETURN
....................  
....................  
.................... #include "SHT25.h" 
....................  
.................... #define SHT25_HEATER_ON   0x04 
.................... #define SHT25_HEATER_OFF   0x00 
.................... #define SHT25_OTP_reload_off  0x02 
.................... #define SHT25_RH12_T14  0x00 
.................... #define SHT25_RH8_T12  0x01 
.................... #define SHT25_RH10_T13  0x80 
.................... #define SHT25_RH11_T11  0x81 
....................  
.................... #define SHT25_ADDR  0x80 
....................  
.................... #include "SHT25.c" 
.................... void SHT25_soft_reset() 
.................... { 
....................   i2c_start();     // Start condition 
*
0076:  BSF    20.4
0077:  MOVF   20,W
0078:  BSF    03.5
0079:  MOVWF  07
007A:  NOP
007B:  BCF    03.5
007C:  BSF    20.3
007D:  MOVF   20,W
007E:  BSF    03.5
007F:  MOVWF  07
0080:  NOP
0081:  BCF    03.5
0082:  BCF    07.4
0083:  BCF    20.4
0084:  MOVF   20,W
0085:  BSF    03.5
0086:  MOVWF  07
0087:  NOP
0088:  BCF    03.5
0089:  BCF    07.3
008A:  BCF    20.3
008B:  MOVF   20,W
008C:  BSF    03.5
008D:  MOVWF  07
....................   i2c_write(0x80); // Device address 
008E:  MOVLW  80
008F:  BCF    03.5
0090:  MOVWF  30
0091:  CALL   02C
....................   i2c_write(0xFE);    // Device command 
0092:  MOVLW  FE
0093:  MOVWF  30
0094:  CALL   02C
....................   i2c_stop();      // Stop condition 
0095:  BCF    20.4
0096:  MOVF   20,W
0097:  BSF    03.5
0098:  MOVWF  07
0099:  NOP
009A:  BCF    03.5
009B:  BSF    20.3
009C:  MOVF   20,W
009D:  BSF    03.5
009E:  MOVWF  07
009F:  BCF    03.5
00A0:  BTFSS  07.3
00A1:  GOTO   0A0
00A2:  NOP
00A3:  GOTO   0A4
00A4:  NOP
00A5:  BSF    20.4
00A6:  MOVF   20,W
00A7:  BSF    03.5
00A8:  MOVWF  07
00A9:  NOP
.................... } 
00AA:  BCF    03.5
00AB:  BSF    0A.3
00AC:  BCF    0A.4
00AD:  GOTO   06A (RETURN)
....................  
.................... unsigned int8 SHT25_setup(unsigned int8 setup_reg )  // writes to status register and returns its value 
.................... { 
.................... unsigned int8 reg; 
....................  
....................   i2c_start();     // Start condition 
*
05E4:  BSF    20.4
05E5:  MOVF   20,W
05E6:  BSF    03.5
05E7:  MOVWF  07
05E8:  NOP
05E9:  BCF    03.5
05EA:  BSF    20.3
05EB:  MOVF   20,W
05EC:  BSF    03.5
05ED:  MOVWF  07
05EE:  NOP
05EF:  BCF    03.5
05F0:  BCF    07.4
05F1:  BCF    20.4
05F2:  MOVF   20,W
05F3:  BSF    03.5
05F4:  MOVWF  07
05F5:  NOP
05F6:  BCF    03.5
05F7:  BCF    07.3
05F8:  BCF    20.3
05F9:  MOVF   20,W
05FA:  BSF    03.5
05FB:  MOVWF  07
....................   i2c_write(SHT25_ADDR); // Device address 
05FC:  MOVLW  80
05FD:  BCF    03.5
05FE:  MOVWF  30
05FF:  CALL   02C
....................   i2c_write(0xE7);    // Device command 
0600:  MOVLW  E7
0601:  MOVWF  30
0602:  CALL   02C
....................  
....................   i2c_start();     // Start condition 
0603:  BSF    20.4
0604:  MOVF   20,W
0605:  BSF    03.5
0606:  MOVWF  07
0607:  NOP
0608:  BCF    03.5
0609:  BSF    20.3
060A:  MOVF   20,W
060B:  BSF    03.5
060C:  MOVWF  07
060D:  NOP
060E:  BCF    03.5
060F:  BTFSS  07.3
0610:  GOTO   60F
0611:  BCF    07.4
0612:  BCF    20.4
0613:  MOVF   20,W
0614:  BSF    03.5
0615:  MOVWF  07
0616:  NOP
0617:  BCF    03.5
0618:  BCF    07.3
0619:  BCF    20.3
061A:  MOVF   20,W
061B:  BSF    03.5
061C:  MOVWF  07
....................   i2c_write(SHT25_ADDR+1); // Device address 
061D:  MOVLW  81
061E:  BCF    03.5
061F:  MOVWF  30
0620:  CALL   02C
....................   reg=i2c_read(0);    // Read status actual status register 
0621:  CLRF   77
0622:  CALL   17D
0623:  MOVF   78,W
0624:  MOVWF  2C
....................  
....................   reg = (reg & 0x3A) | setup_reg; 
0625:  MOVF   2C,W
0626:  ANDLW  3A
0627:  IORWF  2B,W
0628:  MOVWF  2C
....................  
....................   i2c_start();     // Start condition 
0629:  BSF    20.4
062A:  MOVF   20,W
062B:  BSF    03.5
062C:  MOVWF  07
062D:  NOP
062E:  BCF    03.5
062F:  BSF    20.3
0630:  MOVF   20,W
0631:  BSF    03.5
0632:  MOVWF  07
0633:  NOP
0634:  BCF    03.5
0635:  BTFSS  07.3
0636:  GOTO   635
0637:  BCF    07.4
0638:  BCF    20.4
0639:  MOVF   20,W
063A:  BSF    03.5
063B:  MOVWF  07
063C:  NOP
063D:  BCF    03.5
063E:  BCF    07.3
063F:  BCF    20.3
0640:  MOVF   20,W
0641:  BSF    03.5
0642:  MOVWF  07
....................   i2c_write(SHT25_ADDR); // Device address 
0643:  MOVLW  80
0644:  BCF    03.5
0645:  MOVWF  30
0646:  CALL   02C
....................   i2c_write(0xE6);    // Write to status register 
0647:  MOVLW  E6
0648:  MOVWF  30
0649:  CALL   02C
....................   i2c_write(reg);    // Device command 
064A:  MOVF   2C,W
064B:  MOVWF  30
064C:  CALL   02C
....................   i2c_stop();      // Stop condition 
064D:  BCF    20.4
064E:  MOVF   20,W
064F:  BSF    03.5
0650:  MOVWF  07
0651:  NOP
0652:  BCF    03.5
0653:  BSF    20.3
0654:  MOVF   20,W
0655:  BSF    03.5
0656:  MOVWF  07
0657:  BCF    03.5
0658:  BTFSS  07.3
0659:  GOTO   658
065A:  NOP
065B:  GOTO   65C
065C:  NOP
065D:  BSF    20.4
065E:  MOVF   20,W
065F:  BSF    03.5
0660:  MOVWF  07
0661:  NOP
....................  
....................   delay_ms(10); 
0662:  MOVLW  0A
0663:  BCF    03.5
0664:  MOVWF  30
0665:  CALL   169
....................  
....................   i2c_start();     // Start condition 
0666:  BSF    20.4
0667:  MOVF   20,W
0668:  BSF    03.5
0669:  MOVWF  07
066A:  NOP
066B:  BCF    03.5
066C:  BSF    20.3
066D:  MOVF   20,W
066E:  BSF    03.5
066F:  MOVWF  07
0670:  NOP
0671:  BCF    03.5
0672:  BCF    07.4
0673:  BCF    20.4
0674:  MOVF   20,W
0675:  BSF    03.5
0676:  MOVWF  07
0677:  NOP
0678:  BCF    03.5
0679:  BCF    07.3
067A:  BCF    20.3
067B:  MOVF   20,W
067C:  BSF    03.5
067D:  MOVWF  07
....................   i2c_write(SHT25_ADDR); // Device address 
067E:  MOVLW  80
067F:  BCF    03.5
0680:  MOVWF  30
0681:  CALL   02C
....................   i2c_write(0xE7);    // Device command 
0682:  MOVLW  E7
0683:  MOVWF  30
0684:  CALL   02C
....................  
....................   i2c_start();     // Start condition 
0685:  BSF    20.4
0686:  MOVF   20,W
0687:  BSF    03.5
0688:  MOVWF  07
0689:  NOP
068A:  BCF    03.5
068B:  BSF    20.3
068C:  MOVF   20,W
068D:  BSF    03.5
068E:  MOVWF  07
068F:  NOP
0690:  BCF    03.5
0691:  BTFSS  07.3
0692:  GOTO   691
0693:  BCF    07.4
0694:  BCF    20.4
0695:  MOVF   20,W
0696:  BSF    03.5
0697:  MOVWF  07
0698:  NOP
0699:  BCF    03.5
069A:  BCF    07.3
069B:  BCF    20.3
069C:  MOVF   20,W
069D:  BSF    03.5
069E:  MOVWF  07
....................   i2c_write(SHT25_ADDR+1); // Device address 
069F:  MOVLW  81
06A0:  BCF    03.5
06A1:  MOVWF  30
06A2:  CALL   02C
....................   reg=i2c_read(0);    // Read status actual status register 
06A3:  CLRF   77
06A4:  CALL   17D
06A5:  MOVF   78,W
06A6:  MOVWF  2C
....................  
....................   return (reg); 
06A7:  MOVF   2C,W
06A8:  MOVWF  78
.................... } 
06A9:  BSF    0A.3
06AA:  BCF    0A.4
06AB:  GOTO   0C0 (RETURN)
....................  
....................  
.................... float SHT25_get_temp() 
.................... { 
.................... unsigned int8 MSB, LSB, Check; 
.................... unsigned int16 data; 
....................  
....................    i2c_start(); 
*
045F:  BSF    20.4
0460:  MOVF   20,W
0461:  BSF    03.5
0462:  MOVWF  07
0463:  NOP
0464:  BCF    03.5
0465:  BSF    20.3
0466:  MOVF   20,W
0467:  BSF    03.5
0468:  MOVWF  07
0469:  NOP
046A:  BCF    03.5
046B:  BTFSS  07.3
046C:  GOTO   46B
046D:  BCF    07.4
046E:  BCF    20.4
046F:  MOVF   20,W
0470:  BSF    03.5
0471:  MOVWF  07
0472:  NOP
0473:  BCF    03.5
0474:  BCF    07.3
0475:  BCF    20.3
0476:  MOVF   20,W
0477:  BSF    03.5
0478:  MOVWF  07
....................    I2C_Write(SHT25_ADDR); 
0479:  MOVLW  80
047A:  BCF    03.5
047B:  MOVWF  30
047C:  CALL   02C
....................    I2C_write(0xE3); 
047D:  MOVLW  E3
047E:  MOVWF  30
047F:  CALL   02C
....................    i2c_stop(); 
0480:  BCF    20.4
0481:  MOVF   20,W
0482:  BSF    03.5
0483:  MOVWF  07
0484:  NOP
0485:  BCF    03.5
0486:  BSF    20.3
0487:  MOVF   20,W
0488:  BSF    03.5
0489:  MOVWF  07
048A:  BCF    03.5
048B:  BTFSS  07.3
048C:  GOTO   48B
048D:  NOP
048E:  GOTO   48F
048F:  NOP
0490:  BSF    20.4
0491:  MOVF   20,W
0492:  BSF    03.5
0493:  MOVWF  07
0494:  NOP
....................    
....................    delay_ms(100); 
0495:  MOVLW  64
0496:  BCF    03.5
0497:  MOVWF  30
0498:  CALL   169
....................     
....................    i2c_start(); 
0499:  BSF    20.4
049A:  MOVF   20,W
049B:  BSF    03.5
049C:  MOVWF  07
049D:  NOP
049E:  BCF    03.5
049F:  BSF    20.3
04A0:  MOVF   20,W
04A1:  BSF    03.5
04A2:  MOVWF  07
04A3:  NOP
04A4:  BCF    03.5
04A5:  BCF    07.4
04A6:  BCF    20.4
04A7:  MOVF   20,W
04A8:  BSF    03.5
04A9:  MOVWF  07
04AA:  NOP
04AB:  BCF    03.5
04AC:  BCF    07.3
04AD:  BCF    20.3
04AE:  MOVF   20,W
04AF:  BSF    03.5
04B0:  MOVWF  07
....................    I2C_Write(SHT25_ADDR+1); 
04B1:  MOVLW  81
04B2:  BCF    03.5
04B3:  MOVWF  30
04B4:  CALL   02C
....................    MSB=i2c_read(1); 
04B5:  MOVLW  01
04B6:  MOVWF  77
04B7:  CALL   17D
04B8:  MOVF   78,W
04B9:  MOVWF  2B
....................    LSB=i2c_read(1); 
04BA:  MOVLW  01
04BB:  MOVWF  77
04BC:  CALL   17D
04BD:  MOVF   78,W
04BE:  MOVWF  2C
....................    Check=i2c_read(0); 
04BF:  CLRF   77
04C0:  CALL   17D
04C1:  MOVF   78,W
04C2:  MOVWF  2D
....................    i2c_stop(); 
04C3:  BCF    20.4
04C4:  MOVF   20,W
04C5:  BSF    03.5
04C6:  MOVWF  07
04C7:  NOP
04C8:  BCF    03.5
04C9:  BSF    20.3
04CA:  MOVF   20,W
04CB:  BSF    03.5
04CC:  MOVWF  07
04CD:  BCF    03.5
04CE:  BTFSS  07.3
04CF:  GOTO   4CE
04D0:  NOP
04D1:  GOTO   4D2
04D2:  NOP
04D3:  BSF    20.4
04D4:  MOVF   20,W
04D5:  BSF    03.5
04D6:  MOVWF  07
04D7:  NOP
....................        
....................    LSB = LSB >> 2; // trow out status bits 
04D8:  BCF    03.5
04D9:  RRF    2C,F
04DA:  RRF    2C,F
04DB:  MOVLW  3F
04DC:  ANDWF  2C,F
....................  
....................    data = (((unsigned int16) MSB << 8) + (LSB << 4)); 
04DD:  CLRF   31
04DE:  MOVF   2B,W
04DF:  MOVWF  30
04E0:  MOVWF  31
04E1:  CLRF   30
04E2:  SWAPF  2C,W
04E3:  MOVWF  77
04E4:  MOVLW  F0
04E5:  ANDWF  77,F
04E6:  MOVF   77,W
04E7:  ADDWF  30,W
04E8:  MOVWF  2E
04E9:  MOVF   31,W
04EA:  MOVWF  2F
04EB:  BTFSC  03.0
04EC:  INCF   2F,F
....................    return(-46.85 + 175.72*((float)data/0xFFFF)); 
04ED:  MOVF   2F,W
04EE:  MOVWF  31
04EF:  MOVF   2E,W
04F0:  MOVWF  30
04F1:  CALL   1C2
04F2:  MOVF   77,W
04F3:  MOVWF  30
04F4:  MOVF   78,W
04F5:  MOVWF  31
04F6:  MOVF   79,W
04F7:  MOVWF  32
04F8:  MOVF   7A,W
04F9:  MOVWF  33
04FA:  MOVWF  37
04FB:  MOVF   79,W
04FC:  MOVWF  36
04FD:  MOVF   78,W
04FE:  MOVWF  35
04FF:  MOVF   77,W
0500:  MOVWF  34
0501:  CLRF   3B
0502:  MOVLW  FF
0503:  MOVWF  3A
0504:  MOVLW  7F
0505:  MOVWF  39
0506:  MOVLW  8E
0507:  MOVWF  38
0508:  CALL   1DF
0509:  MOVLW  52
050A:  MOVWF  3C
050B:  MOVLW  B8
050C:  MOVWF  3B
050D:  MOVLW  2F
050E:  MOVWF  3A
050F:  MOVLW  86
0510:  MOVWF  39
0511:  MOVF   7A,W
0512:  MOVWF  40
0513:  MOVF   79,W
0514:  MOVWF  3F
0515:  MOVF   78,W
0516:  MOVWF  3E
0517:  MOVF   77,W
0518:  MOVWF  3D
0519:  CALL   2A9
051A:  BCF    03.1
051B:  MOVLW  66
051C:  MOVWF  33
051D:  MOVWF  32
051E:  MOVLW  BB
051F:  MOVWF  31
0520:  MOVLW  84
0521:  MOVWF  30
0522:  MOVF   7A,W
0523:  MOVWF  37
0524:  MOVF   79,W
0525:  MOVWF  36
0526:  MOVF   78,W
0527:  MOVWF  35
0528:  MOVF   77,W
0529:  MOVWF  34
052A:  CALL   31E
.................... } 
052B:  BSF    0A.3
052C:  BCF    0A.4
052D:  GOTO   0A8 (RETURN)
....................  
.................... float SHT25_get_hum() 
.................... { 
.................... unsigned int8 MSB, LSB, Check; 
.................... unsigned int16 data; 
....................  
....................    i2c_start();   //RH 
052E:  BSF    20.4
052F:  MOVF   20,W
0530:  BSF    03.5
0531:  MOVWF  07
0532:  NOP
0533:  BCF    03.5
0534:  BSF    20.3
0535:  MOVF   20,W
0536:  BSF    03.5
0537:  MOVWF  07
0538:  NOP
0539:  BCF    03.5
053A:  BCF    07.4
053B:  BCF    20.4
053C:  MOVF   20,W
053D:  BSF    03.5
053E:  MOVWF  07
053F:  NOP
0540:  BCF    03.5
0541:  BCF    07.3
0542:  BCF    20.3
0543:  MOVF   20,W
0544:  BSF    03.5
0545:  MOVWF  07
....................    I2C_Write(SHT25_ADDR); 
0546:  MOVLW  80
0547:  BCF    03.5
0548:  MOVWF  30
0549:  CALL   02C
....................    I2C_write(0xE5); 
054A:  MOVLW  E5
054B:  MOVWF  30
054C:  CALL   02C
....................  
....................    delay_ms(100); 
054D:  MOVLW  64
054E:  MOVWF  30
054F:  CALL   169
....................  
....................    i2c_start(); 
0550:  BSF    20.4
0551:  MOVF   20,W
0552:  BSF    03.5
0553:  MOVWF  07
0554:  NOP
0555:  BCF    03.5
0556:  BSF    20.3
0557:  MOVF   20,W
0558:  BSF    03.5
0559:  MOVWF  07
055A:  NOP
055B:  BCF    03.5
055C:  BTFSS  07.3
055D:  GOTO   55C
055E:  BCF    07.4
055F:  BCF    20.4
0560:  MOVF   20,W
0561:  BSF    03.5
0562:  MOVWF  07
0563:  NOP
0564:  BCF    03.5
0565:  BCF    07.3
0566:  BCF    20.3
0567:  MOVF   20,W
0568:  BSF    03.5
0569:  MOVWF  07
....................    I2C_Write(SHT25_ADDR+1); 
056A:  MOVLW  81
056B:  BCF    03.5
056C:  MOVWF  30
056D:  CALL   02C
....................    MSB=i2c_read(1); 
056E:  MOVLW  01
056F:  MOVWF  77
0570:  CALL   17D
0571:  MOVF   78,W
0572:  MOVWF  2B
....................    LSB=i2c_read(1); 
0573:  MOVLW  01
0574:  MOVWF  77
0575:  CALL   17D
0576:  MOVF   78,W
0577:  MOVWF  2C
....................    Check=i2c_read(0); 
0578:  CLRF   77
0579:  CALL   17D
057A:  MOVF   78,W
057B:  MOVWF  2D
....................    i2c_stop();  
057C:  BCF    20.4
057D:  MOVF   20,W
057E:  BSF    03.5
057F:  MOVWF  07
0580:  NOP
0581:  BCF    03.5
0582:  BSF    20.3
0583:  MOVF   20,W
0584:  BSF    03.5
0585:  MOVWF  07
0586:  BCF    03.5
0587:  BTFSS  07.3
0588:  GOTO   587
0589:  NOP
058A:  GOTO   58B
058B:  NOP
058C:  BSF    20.4
058D:  MOVF   20,W
058E:  BSF    03.5
058F:  MOVWF  07
0590:  NOP
....................  
....................    LSB = LSB >> 2; // trow out status bits 
0591:  BCF    03.5
0592:  RRF    2C,F
0593:  RRF    2C,F
0594:  MOVLW  3F
0595:  ANDWF  2C,F
....................  
....................    data = (((unsigned int16) MSB << 8) + (LSB << 4) ); 
0596:  CLRF   31
0597:  MOVF   2B,W
0598:  MOVWF  30
0599:  MOVWF  31
059A:  CLRF   30
059B:  SWAPF  2C,W
059C:  MOVWF  77
059D:  MOVLW  F0
059E:  ANDWF  77,F
059F:  MOVF   77,W
05A0:  ADDWF  30,W
05A1:  MOVWF  2E
05A2:  MOVF   31,W
05A3:  MOVWF  2F
05A4:  BTFSC  03.0
05A5:  INCF   2F,F
....................    return( -6.0 + 125.0*((float)data/0xFFFF)); 
05A6:  MOVF   2F,W
05A7:  MOVWF  31
05A8:  MOVF   2E,W
05A9:  MOVWF  30
05AA:  CALL   1C2
05AB:  MOVF   77,W
05AC:  MOVWF  30
05AD:  MOVF   78,W
05AE:  MOVWF  31
05AF:  MOVF   79,W
05B0:  MOVWF  32
05B1:  MOVF   7A,W
05B2:  MOVWF  33
05B3:  MOVWF  37
05B4:  MOVF   79,W
05B5:  MOVWF  36
05B6:  MOVF   78,W
05B7:  MOVWF  35
05B8:  MOVF   77,W
05B9:  MOVWF  34
05BA:  CLRF   3B
05BB:  MOVLW  FF
05BC:  MOVWF  3A
05BD:  MOVLW  7F
05BE:  MOVWF  39
05BF:  MOVLW  8E
05C0:  MOVWF  38
05C1:  CALL   1DF
05C2:  CLRF   3C
05C3:  CLRF   3B
05C4:  MOVLW  7A
05C5:  MOVWF  3A
05C6:  MOVLW  85
05C7:  MOVWF  39
05C8:  MOVF   7A,W
05C9:  MOVWF  40
05CA:  MOVF   79,W
05CB:  MOVWF  3F
05CC:  MOVF   78,W
05CD:  MOVWF  3E
05CE:  MOVF   77,W
05CF:  MOVWF  3D
05D0:  CALL   2A9
05D1:  BCF    03.1
05D2:  CLRF   33
05D3:  CLRF   32
05D4:  MOVLW  C0
05D5:  MOVWF  31
05D6:  MOVLW  81
05D7:  MOVWF  30
05D8:  MOVF   7A,W
05D9:  MOVWF  37
05DA:  MOVF   79,W
05DB:  MOVWF  36
05DC:  MOVF   78,W
05DD:  MOVWF  35
05DE:  MOVF   77,W
05DF:  MOVWF  34
05E0:  CALL   31E
.................... }       
05E1:  BSF    0A.3
05E2:  BCF    0A.4
05E3:  GOTO   0B3 (RETURN)
....................  
....................  
....................  
....................  
....................  
.................... void main() 
.................... { 
*
0800:  CLRF   04
0801:  BCF    03.7
0802:  MOVLW  1F
0803:  ANDWF  03,F
0804:  MOVLW  71
0805:  BSF    03.5
0806:  MOVWF  0F
0807:  MOVF   0F,W
0808:  BCF    03.5
0809:  BCF    20.7
080A:  MOVF   20,W
080B:  BSF    03.5
080C:  MOVWF  07
080D:  BCF    03.5
080E:  BSF    07.7
080F:  BSF    03.5
0810:  BSF    03.6
0811:  MOVF   09,W
0812:  ANDLW  C0
0813:  MOVWF  09
0814:  BCF    03.6
0815:  BCF    1F.4
0816:  BCF    1F.5
0817:  MOVLW  00
0818:  BSF    03.6
0819:  MOVWF  08
081A:  BCF    03.5
081B:  CLRF   07
081C:  CLRF   08
081D:  CLRF   09
*
0821:  CLRF   21
.................... unsigned int8 i=0, sht_config; 
.................... float temperature, humidity; 
....................  
....................    setup_adc_ports(NO_ANALOGS|VSS_VDD); 
0822:  BSF    03.5
0823:  BSF    03.6
0824:  MOVF   09,W
0825:  ANDLW  C0
0826:  MOVWF  09
0827:  BCF    03.6
0828:  BCF    1F.4
0829:  BCF    1F.5
082A:  MOVLW  00
082B:  BSF    03.6
082C:  MOVWF  08
....................    setup_adc(ADC_CLOCK_DIV_2); 
082D:  BCF    03.5
082E:  BCF    03.6
082F:  BCF    1F.6
0830:  BCF    1F.7
0831:  BSF    03.5
0832:  BCF    1F.7
0833:  BCF    03.5
0834:  BSF    1F.0
....................    setup_spi(SPI_SS_DISABLED); 
0835:  BCF    14.5
0836:  BCF    20.5
0837:  MOVF   20,W
0838:  BSF    03.5
0839:  MOVWF  07
083A:  BCF    03.5
083B:  BSF    20.4
083C:  MOVF   20,W
083D:  BSF    03.5
083E:  MOVWF  07
083F:  BCF    03.5
0840:  BCF    20.3
0841:  MOVF   20,W
0842:  BSF    03.5
0843:  MOVWF  07
0844:  MOVLW  01
0845:  BCF    03.5
0846:  MOVWF  14
0847:  MOVLW  00
0848:  BSF    03.5
0849:  MOVWF  14
....................    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 
084A:  MOVF   01,W
084B:  ANDLW  C7
084C:  IORLW  08
084D:  MOVWF  01
....................    setup_timer_1(T1_DISABLED); 
084E:  BCF    03.5
084F:  CLRF   10
....................    setup_timer_2(T2_DISABLED,0,1); 
0850:  MOVLW  00
0851:  MOVWF  78
0852:  MOVWF  12
0853:  MOVLW  00
0854:  BSF    03.5
0855:  MOVWF  12
....................    setup_ccp1(CCP_OFF); 
0856:  BCF    03.5
0857:  BSF    20.2
0858:  MOVF   20,W
0859:  BSF    03.5
085A:  MOVWF  07
085B:  BCF    03.5
085C:  CLRF   17
085D:  BSF    03.5
085E:  CLRF   1B
085F:  CLRF   1C
0860:  MOVLW  01
0861:  MOVWF  1D
....................    setup_comparator(NC_NC_NC_NC); 
0862:  BCF    03.5
0863:  BSF    03.6
0864:  CLRF   07
0865:  CLRF   08
0866:  CLRF   09
....................  
....................    SHT25_soft_reset(); 
0867:  BCF    0A.3
0868:  BCF    03.6
0869:  GOTO   076
086A:  BSF    0A.3
....................    printf("SHT25 humidity and temperature sensor example \r\n",); 
086B:  MOVLW  04
086C:  BSF    03.6
086D:  MOVWF  0D
086E:  MOVLW  00
086F:  MOVWF  0F
0870:  BCF    0A.3
0871:  BCF    03.6
0872:  GOTO   0D2
0873:  BSF    0A.3
....................    printf("Temperature  Humidity[%%]  \r\n"); 
0874:  MOVLW  1D
0875:  BSF    03.6
0876:  MOVWF  0D
0877:  MOVLW  00
0878:  MOVWF  0F
0879:  BCF    03.0
087A:  MOVLW  16
087B:  BCF    03.6
087C:  MOVWF  2B
087D:  BCF    0A.3
087E:  CALL   11A
087F:  BSF    0A.3
0880:  MOVLW  25
0881:  MOVWF  39
0882:  BCF    0A.3
0883:  CALL   0AE
0884:  BSF    0A.3
0885:  MOVLW  29
0886:  BSF    03.6
0887:  MOVWF  0D
0888:  MOVLW  00
0889:  MOVWF  0F
088A:  BCF    03.0
088B:  MOVLW  05
088C:  BCF    03.6
088D:  MOVWF  2B
088E:  BCF    0A.3
088F:  CALL   11A
0890:  BSF    0A.3
....................    delay_ms (500); 
0891:  MOVLW  02
0892:  MOVWF  2B
0893:  MOVLW  FA
0894:  MOVWF  30
0895:  BCF    0A.3
0896:  CALL   169
0897:  BSF    0A.3
0898:  DECFSZ 2B,F
0899:  GOTO   093
....................  
....................  
....................   while(TRUE) 
....................   {  
....................     if (i<100) sht_config = SHT25_RH12_T14 | SHT25_HEATER_OFF; // loop alters on chip heater on and off to check correct function 
089A:  MOVF   21,W
089B:  SUBLW  63
089C:  BTFSS  03.0
089D:  GOTO   0A0
089E:  CLRF   22
....................     else 
089F:  GOTO   0A6
....................     { 
....................       sht_config = SHT25_RH12_T14 | SHT25_HEATER_ON; 
08A0:  MOVLW  04
08A1:  MOVWF  22
....................       if (i > 120) i = 0; 
08A2:  MOVF   21,W
08A3:  SUBLW  78
08A4:  BTFSS  03.0
08A5:  CLRF   21
....................     } 
....................     
....................     temperature = SHT25_get_temp(); 
08A6:  BCF    0A.3
08A7:  GOTO   45F
08A8:  BSF    0A.3
08A9:  MOVF   7A,W
08AA:  MOVWF  26
08AB:  MOVF   79,W
08AC:  MOVWF  25
08AD:  MOVF   78,W
08AE:  MOVWF  24
08AF:  MOVF   77,W
08B0:  MOVWF  23
....................     humidity = SHT25_get_hum(); 
08B1:  BCF    0A.3
08B2:  GOTO   52E
08B3:  BSF    0A.3
08B4:  MOVF   7A,W
08B5:  MOVWF  2A
08B6:  MOVF   79,W
08B7:  MOVWF  29
08B8:  MOVF   78,W
08B9:  MOVWF  28
08BA:  MOVF   77,W
08BB:  MOVWF  27
....................  
....................     printf("%f %f %X %X \r\n",temperature, humidity, SHT25_setup(sht_config),sht_config); 
08BC:  MOVF   22,W
08BD:  MOVWF  2B
08BE:  BCF    0A.3
08BF:  GOTO   5E4
08C0:  BSF    0A.3
08C1:  MOVF   78,W
08C2:  MOVWF  2B
08C3:  MOVLW  89
08C4:  MOVWF  04
08C5:  MOVF   26,W
08C6:  MOVWF  2F
08C7:  MOVF   25,W
08C8:  MOVWF  2E
08C9:  MOVF   24,W
08CA:  MOVWF  2D
08CB:  MOVF   23,W
08CC:  MOVWF  2C
08CD:  MOVLW  02
08CE:  MOVWF  30
08CF:  BCF    0A.3
08D0:  CALL   6EE
08D1:  BSF    0A.3
08D2:  MOVLW  20
08D3:  MOVWF  39
08D4:  BCF    0A.3
08D5:  CALL   0AE
08D6:  BSF    0A.3
08D7:  MOVLW  89
08D8:  MOVWF  04
08D9:  MOVF   2A,W
08DA:  MOVWF  2F
08DB:  MOVF   29,W
08DC:  MOVWF  2E
08DD:  MOVF   28,W
08DE:  MOVWF  2D
08DF:  MOVF   27,W
08E0:  MOVWF  2C
08E1:  MOVLW  02
08E2:  MOVWF  30
08E3:  BCF    0A.3
08E4:  CALL   6EE
08E5:  BSF    0A.3
08E6:  MOVLW  20
08E7:  MOVWF  39
08E8:  BCF    0A.3
08E9:  CALL   0AE
08EA:  BSF    0A.3
08EB:  MOVF   2B,W
08EC:  MOVWF  2C
08ED:  MOVLW  37
08EE:  MOVWF  2D
08EF:  BCF    0A.3
08F0:  CALL   7D5
08F1:  BSF    0A.3
08F2:  MOVLW  20
08F3:  MOVWF  39
08F4:  BCF    0A.3
08F5:  CALL   0AE
08F6:  BSF    0A.3
08F7:  MOVF   22,W
08F8:  MOVWF  2C
08F9:  MOVLW  37
08FA:  MOVWF  2D
08FB:  BCF    0A.3
08FC:  CALL   7D5
08FD:  BSF    0A.3
08FE:  MOVLW  20
08FF:  MOVWF  39
0900:  BCF    0A.3
0901:  CALL   0AE
0902:  BSF    0A.3
0903:  MOVLW  0D
0904:  MOVWF  39
0905:  BCF    0A.3
0906:  CALL   0AE
0907:  BSF    0A.3
0908:  MOVLW  0A
0909:  MOVWF  39
090A:  BCF    0A.3
090B:  CALL   0AE
090C:  BSF    0A.3
....................     i++; 
090D:  INCF   21,F
....................     delay_ms(1000); 
090E:  MOVLW  04
090F:  MOVWF  2B
0910:  MOVLW  FA
0911:  MOVWF  30
0912:  BCF    0A.3
0913:  CALL   169
0914:  BSF    0A.3
0915:  DECFSZ 2B,F
0916:  GOTO   110
....................   }  
0917:  GOTO   09A
.................... } 
....................  
0918:  SLEEP

Configuration Fuses:
   Word  1: 2CF4   INTRC_IO NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUG
   Word  2: 3FFF   NOWRT BORV40