CCS PCM C Compiler, Version 4.106, 47914 15-V-13 22:58Filename: Z:\home\kaklik\svnMLAB\Modules\Sensors\SHT25V01A\SW\PIC16F887\main.lstROM used: 2319 words (28%)Largest free fragment is 2048RAM used: 17 (5%) at main() level43 (12%) worst caseStack: 2 locations*0000: MOVLW 080001: MOVWF 0A0002: GOTO 0000003: 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 30016A: MOVWF 04016B: BCF 03.7016C: MOVF 00,W016D: BTFSC 03.2016E: GOTO 17C016F: MOVLW 020170: MOVWF 780171: CLRF 770172: DECFSZ 77,F0173: GOTO 1720174: DECFSZ 78,F0175: GOTO 1710176: MOVLW 970177: MOVWF 770178: DECFSZ 77,F0179: GOTO 178017A: DECFSZ 00,F017B: GOTO 16F017C: RETURN........................................ #use i2c(master, sda=PIN_C4, scl=PIN_C3)*002C: MOVLW 08002D: MOVWF 78002E: NOP002F: BCF 07.30030: BCF 20.30031: MOVF 20,W0032: BSF 03.50033: MOVWF 070034: NOP0035: BCF 03.50036: RLF 30,F0037: BCF 07.40038: BTFSS 03.00039: GOTO 040003A: BSF 20.4003B: MOVF 20,W003C: BSF 03.5003D: MOVWF 07003E: GOTO 044003F: BCF 03.50040: BCF 20.40041: MOVF 20,W0042: BSF 03.50043: MOVWF 070044: NOP0045: BCF 03.50046: BSF 20.30047: MOVF 20,W0048: BSF 03.50049: MOVWF 07004A: BCF 03.5004B: BTFSS 07.3004C: GOTO 04B004D: DECFSZ 78,F004E: GOTO 02E004F: NOP0050: BCF 07.30051: BCF 20.30052: MOVF 20,W0053: BSF 03.50054: MOVWF 070055: NOP0056: BCF 03.50057: BSF 20.40058: MOVF 20,W0059: BSF 03.5005A: MOVWF 07005B: NOP005C: NOP005D: BCF 03.5005E: BSF 20.3005F: MOVF 20,W0060: BSF 03.50061: MOVWF 070062: BCF 03.50063: BTFSS 07.30064: GOTO 0630065: CLRF 780066: NOP0067: BTFSC 07.40068: BSF 78.00069: BCF 07.3006A: BCF 20.3006B: MOVF 20,W006C: BSF 03.5006D: MOVWF 07006E: BCF 03.5006F: BCF 07.40070: BCF 20.40071: MOVF 20,W0072: BSF 03.50073: MOVWF 070074: BCF 03.50075: RETURN*017D: MOVLW 08017E: MOVWF 31017F: MOVF 77,W0180: MOVWF 320181: BSF 20.40182: MOVF 20,W0183: BSF 03.50184: MOVWF 070185: NOP0186: BCF 03.50187: BSF 20.30188: MOVF 20,W0189: BSF 03.5018A: MOVWF 07018B: BCF 03.5018C: BTFSS 07.3018D: GOTO 18C018E: BTFSC 07.4018F: BSF 03.00190: BTFSS 07.40191: BCF 03.00192: RLF 78,F0193: NOP0194: BCF 20.30195: MOVF 20,W0196: BSF 03.50197: MOVWF 070198: BCF 03.50199: BCF 07.3019A: DECFSZ 31,F019B: GOTO 181019C: BSF 20.4019D: MOVF 20,W019E: BSF 03.5019F: MOVWF 0701A0: NOP01A1: BCF 03.501A2: BCF 07.401A3: MOVF 32,W01A4: BTFSC 03.201A5: GOTO 1AB01A6: BCF 20.401A7: MOVF 20,W01A8: BSF 03.501A9: MOVWF 0701AA: BCF 03.501AB: NOP01AC: BSF 20.301AD: MOVF 20,W01AE: BSF 03.501AF: MOVWF 0701B0: BCF 03.501B1: BTFSS 07.301B2: GOTO 1B101B3: NOP01B4: BCF 07.301B5: BCF 20.301B6: MOVF 20,W01B7: BSF 03.501B8: MOVWF 0701B9: NOP01BA: BCF 03.501BB: BCF 07.401BC: BCF 20.401BD: MOVF 20,W01BE: BSF 03.501BF: MOVWF 0701C0: BCF 03.501C1: RETURN.................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD*00AE: BCF 20.700AF: MOVF 20,W00B0: BSF 03.500B1: MOVWF 0700B2: BCF 03.500B3: BCF 07.700B4: MOVLW 0800B5: MOVWF 7800B6: GOTO 0B700B7: NOP00B8: BSF 78.700B9: GOTO 0C800BA: BCF 78.700BB: RRF 39,F00BC: BTFSC 03.000BD: BSF 07.700BE: BTFSS 03.000BF: BCF 07.700C0: BSF 78.600C1: GOTO 0C800C2: BCF 78.600C3: DECFSZ 78,F00C4: GOTO 0BB00C5: GOTO 0C600C6: NOP00C7: BSF 07.700C8: MOVLW 3F00C9: MOVWF 0400CA: DECFSZ 04,F00CB: GOTO 0CA00CC: NOP00CD: BTFSC 78.700CE: GOTO 0BA00CF: BTFSC 78.600D0: GOTO 0C200D1: 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.40077: MOVF 20,W0078: BSF 03.50079: MOVWF 07007A: NOP007B: BCF 03.5007C: BSF 20.3007D: MOVF 20,W007E: BSF 03.5007F: MOVWF 070080: NOP0081: BCF 03.50082: BCF 07.40083: BCF 20.40084: MOVF 20,W0085: BSF 03.50086: MOVWF 070087: NOP0088: BCF 03.50089: BCF 07.3008A: BCF 20.3008B: MOVF 20,W008C: BSF 03.5008D: MOVWF 07.................... i2c_write(0x80); // Device address008E: MOVLW 80008F: BCF 03.50090: MOVWF 300091: CALL 02C.................... i2c_write(0xFE); // Device command0092: MOVLW FE0093: MOVWF 300094: CALL 02C.................... i2c_stop(); // Stop condition0095: BCF 20.40096: MOVF 20,W0097: BSF 03.50098: MOVWF 070099: NOP009A: BCF 03.5009B: BSF 20.3009C: MOVF 20,W009D: BSF 03.5009E: MOVWF 07009F: BCF 03.500A0: BTFSS 07.300A1: GOTO 0A000A2: NOP00A3: GOTO 0A400A4: NOP00A5: BSF 20.400A6: MOVF 20,W00A7: BSF 03.500A8: MOVWF 0700A9: NOP.................... }00AA: BCF 03.500AB: BSF 0A.300AC: BCF 0A.400AD: 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.405E5: MOVF 20,W05E6: BSF 03.505E7: MOVWF 0705E8: NOP05E9: BCF 03.505EA: BSF 20.305EB: MOVF 20,W05EC: BSF 03.505ED: MOVWF 0705EE: NOP05EF: BCF 03.505F0: BCF 07.405F1: BCF 20.405F2: MOVF 20,W05F3: BSF 03.505F4: MOVWF 0705F5: NOP05F6: BCF 03.505F7: BCF 07.305F8: BCF 20.305F9: MOVF 20,W05FA: BSF 03.505FB: MOVWF 07.................... i2c_write(SHT25_ADDR); // Device address05FC: MOVLW 8005FD: BCF 03.505FE: MOVWF 3005FF: CALL 02C.................... i2c_write(0xE7); // Device command0600: MOVLW E70601: MOVWF 300602: CALL 02C........................................ i2c_start(); // Start condition0603: BSF 20.40604: MOVF 20,W0605: BSF 03.50606: MOVWF 070607: NOP0608: BCF 03.50609: BSF 20.3060A: MOVF 20,W060B: BSF 03.5060C: MOVWF 07060D: NOP060E: BCF 03.5060F: BTFSS 07.30610: GOTO 60F0611: BCF 07.40612: BCF 20.40613: MOVF 20,W0614: BSF 03.50615: MOVWF 070616: NOP0617: BCF 03.50618: BCF 07.30619: BCF 20.3061A: MOVF 20,W061B: BSF 03.5061C: MOVWF 07.................... i2c_write(SHT25_ADDR+1); // Device address061D: MOVLW 81061E: BCF 03.5061F: MOVWF 300620: CALL 02C.................... reg=i2c_read(0); // Read status actual status register0621: CLRF 770622: CALL 17D0623: MOVF 78,W0624: MOVWF 2C........................................ reg = (reg & 0x3A) | setup_reg;0625: MOVF 2C,W0626: ANDLW 3A0627: IORWF 2B,W0628: MOVWF 2C........................................ i2c_start(); // Start condition0629: BSF 20.4062A: MOVF 20,W062B: BSF 03.5062C: MOVWF 07062D: NOP062E: BCF 03.5062F: BSF 20.30630: MOVF 20,W0631: BSF 03.50632: MOVWF 070633: NOP0634: BCF 03.50635: BTFSS 07.30636: GOTO 6350637: BCF 07.40638: BCF 20.40639: MOVF 20,W063A: BSF 03.5063B: MOVWF 07063C: NOP063D: BCF 03.5063E: BCF 07.3063F: BCF 20.30640: MOVF 20,W0641: BSF 03.50642: MOVWF 07.................... i2c_write(SHT25_ADDR); // Device address0643: MOVLW 800644: BCF 03.50645: MOVWF 300646: CALL 02C.................... i2c_write(0xE6); // Write to status register0647: MOVLW E60648: MOVWF 300649: CALL 02C.................... i2c_write(reg); // Device command064A: MOVF 2C,W064B: MOVWF 30064C: CALL 02C.................... i2c_stop(); // Stop condition064D: BCF 20.4064E: MOVF 20,W064F: BSF 03.50650: MOVWF 070651: NOP0652: BCF 03.50653: BSF 20.30654: MOVF 20,W0655: BSF 03.50656: MOVWF 070657: BCF 03.50658: BTFSS 07.30659: GOTO 658065A: NOP065B: GOTO 65C065C: NOP065D: BSF 20.4065E: MOVF 20,W065F: BSF 03.50660: MOVWF 070661: NOP........................................ delay_ms(10);0662: MOVLW 0A0663: BCF 03.50664: MOVWF 300665: CALL 169........................................ i2c_start(); // Start condition0666: BSF 20.40667: MOVF 20,W0668: BSF 03.50669: MOVWF 07066A: NOP066B: BCF 03.5066C: BSF 20.3066D: MOVF 20,W066E: BSF 03.5066F: MOVWF 070670: NOP0671: BCF 03.50672: BCF 07.40673: BCF 20.40674: MOVF 20,W0675: BSF 03.50676: MOVWF 070677: NOP0678: BCF 03.50679: BCF 07.3067A: BCF 20.3067B: MOVF 20,W067C: BSF 03.5067D: MOVWF 07.................... i2c_write(SHT25_ADDR); // Device address067E: MOVLW 80067F: BCF 03.50680: MOVWF 300681: CALL 02C.................... i2c_write(0xE7); // Device command0682: MOVLW E70683: MOVWF 300684: CALL 02C........................................ i2c_start(); // Start condition0685: BSF 20.40686: MOVF 20,W0687: BSF 03.50688: MOVWF 070689: NOP068A: BCF 03.5068B: BSF 20.3068C: MOVF 20,W068D: BSF 03.5068E: MOVWF 07068F: NOP0690: BCF 03.50691: BTFSS 07.30692: GOTO 6910693: BCF 07.40694: BCF 20.40695: MOVF 20,W0696: BSF 03.50697: MOVWF 070698: NOP0699: BCF 03.5069A: BCF 07.3069B: BCF 20.3069C: MOVF 20,W069D: BSF 03.5069E: MOVWF 07.................... i2c_write(SHT25_ADDR+1); // Device address069F: MOVLW 8106A0: BCF 03.506A1: MOVWF 3006A2: CALL 02C.................... reg=i2c_read(0); // Read status actual status register06A3: CLRF 7706A4: CALL 17D06A5: MOVF 78,W06A6: MOVWF 2C........................................ return (reg);06A7: MOVF 2C,W06A8: MOVWF 78.................... }06A9: BSF 0A.306AA: BCF 0A.406AB: GOTO 0C0 (RETURN)............................................................ float SHT25_get_temp().................... {.................... unsigned int8 MSB, LSB, Check;.................... unsigned int16 data;........................................ i2c_start();*045F: BSF 20.40460: MOVF 20,W0461: BSF 03.50462: MOVWF 070463: NOP0464: BCF 03.50465: BSF 20.30466: MOVF 20,W0467: BSF 03.50468: MOVWF 070469: NOP046A: BCF 03.5046B: BTFSS 07.3046C: GOTO 46B046D: BCF 07.4046E: BCF 20.4046F: MOVF 20,W0470: BSF 03.50471: MOVWF 070472: NOP0473: BCF 03.50474: BCF 07.30475: BCF 20.30476: MOVF 20,W0477: BSF 03.50478: MOVWF 07.................... I2C_Write(SHT25_ADDR);0479: MOVLW 80047A: BCF 03.5047B: MOVWF 30047C: CALL 02C.................... I2C_write(0xE3);047D: MOVLW E3047E: MOVWF 30047F: CALL 02C.................... i2c_stop();0480: BCF 20.40481: MOVF 20,W0482: BSF 03.50483: MOVWF 070484: NOP0485: BCF 03.50486: BSF 20.30487: MOVF 20,W0488: BSF 03.50489: MOVWF 07048A: BCF 03.5048B: BTFSS 07.3048C: GOTO 48B048D: NOP048E: GOTO 48F048F: NOP0490: BSF 20.40491: MOVF 20,W0492: BSF 03.50493: MOVWF 070494: NOP........................................ delay_ms(100);0495: MOVLW 640496: BCF 03.50497: MOVWF 300498: CALL 169........................................ i2c_start();0499: BSF 20.4049A: MOVF 20,W049B: BSF 03.5049C: MOVWF 07049D: NOP049E: BCF 03.5049F: BSF 20.304A0: MOVF 20,W04A1: BSF 03.504A2: MOVWF 0704A3: NOP04A4: BCF 03.504A5: BCF 07.404A6: BCF 20.404A7: MOVF 20,W04A8: BSF 03.504A9: MOVWF 0704AA: NOP04AB: BCF 03.504AC: BCF 07.304AD: BCF 20.304AE: MOVF 20,W04AF: BSF 03.504B0: MOVWF 07.................... I2C_Write(SHT25_ADDR+1);04B1: MOVLW 8104B2: BCF 03.504B3: MOVWF 3004B4: CALL 02C.................... MSB=i2c_read(1);04B5: MOVLW 0104B6: MOVWF 7704B7: CALL 17D04B8: MOVF 78,W04B9: MOVWF 2B.................... LSB=i2c_read(1);04BA: MOVLW 0104BB: MOVWF 7704BC: CALL 17D04BD: MOVF 78,W04BE: MOVWF 2C.................... Check=i2c_read(0);04BF: CLRF 7704C0: CALL 17D04C1: MOVF 78,W04C2: MOVWF 2D.................... i2c_stop();04C3: BCF 20.404C4: MOVF 20,W04C5: BSF 03.504C6: MOVWF 0704C7: NOP04C8: BCF 03.504C9: BSF 20.304CA: MOVF 20,W04CB: BSF 03.504CC: MOVWF 0704CD: BCF 03.504CE: BTFSS 07.304CF: GOTO 4CE04D0: NOP04D1: GOTO 4D204D2: NOP04D3: BSF 20.404D4: MOVF 20,W04D5: BSF 03.504D6: MOVWF 0704D7: NOP........................................ LSB = LSB >> 2; // trow out status bits04D8: BCF 03.504D9: RRF 2C,F04DA: RRF 2C,F04DB: MOVLW 3F04DC: ANDWF 2C,F........................................ data = (((unsigned int16) MSB << 8) + (LSB << 4));04DD: CLRF 3104DE: MOVF 2B,W04DF: MOVWF 3004E0: MOVWF 3104E1: CLRF 3004E2: SWAPF 2C,W04E3: MOVWF 7704E4: MOVLW F004E5: ANDWF 77,F04E6: MOVF 77,W04E7: ADDWF 30,W04E8: MOVWF 2E04E9: MOVF 31,W04EA: MOVWF 2F04EB: BTFSC 03.004EC: INCF 2F,F.................... return(-46.85 + 175.72*((float)data/0xFFFF));04ED: MOVF 2F,W04EE: MOVWF 3104EF: MOVF 2E,W04F0: MOVWF 3004F1: CALL 1C204F2: MOVF 77,W04F3: MOVWF 3004F4: MOVF 78,W04F5: MOVWF 3104F6: MOVF 79,W04F7: MOVWF 3204F8: MOVF 7A,W04F9: MOVWF 3304FA: MOVWF 3704FB: MOVF 79,W04FC: MOVWF 3604FD: MOVF 78,W04FE: MOVWF 3504FF: MOVF 77,W0500: MOVWF 340501: CLRF 3B0502: MOVLW FF0503: MOVWF 3A0504: MOVLW 7F0505: MOVWF 390506: MOVLW 8E0507: MOVWF 380508: CALL 1DF0509: MOVLW 52050A: MOVWF 3C050B: MOVLW B8050C: MOVWF 3B050D: MOVLW 2F050E: MOVWF 3A050F: MOVLW 860510: MOVWF 390511: MOVF 7A,W0512: MOVWF 400513: MOVF 79,W0514: MOVWF 3F0515: MOVF 78,W0516: MOVWF 3E0517: MOVF 77,W0518: MOVWF 3D0519: CALL 2A9051A: BCF 03.1051B: MOVLW 66051C: MOVWF 33051D: MOVWF 32051E: MOVLW BB051F: MOVWF 310520: MOVLW 840521: MOVWF 300522: MOVF 7A,W0523: MOVWF 370524: MOVF 79,W0525: MOVWF 360526: MOVF 78,W0527: MOVWF 350528: MOVF 77,W0529: MOVWF 34052A: CALL 31E.................... }052B: BSF 0A.3052C: BCF 0A.4052D: GOTO 0A8 (RETURN)........................................ float SHT25_get_hum().................... {.................... unsigned int8 MSB, LSB, Check;.................... unsigned int16 data;........................................ i2c_start(); //RH052E: BSF 20.4052F: MOVF 20,W0530: BSF 03.50531: MOVWF 070532: NOP0533: BCF 03.50534: BSF 20.30535: MOVF 20,W0536: BSF 03.50537: MOVWF 070538: NOP0539: BCF 03.5053A: BCF 07.4053B: BCF 20.4053C: MOVF 20,W053D: BSF 03.5053E: MOVWF 07053F: NOP0540: BCF 03.50541: BCF 07.30542: BCF 20.30543: MOVF 20,W0544: BSF 03.50545: MOVWF 07.................... I2C_Write(SHT25_ADDR);0546: MOVLW 800547: BCF 03.50548: MOVWF 300549: CALL 02C.................... I2C_write(0xE5);054A: MOVLW E5054B: MOVWF 30054C: CALL 02C........................................ delay_ms(100);054D: MOVLW 64054E: MOVWF 30054F: CALL 169........................................ i2c_start();0550: BSF 20.40551: MOVF 20,W0552: BSF 03.50553: MOVWF 070554: NOP0555: BCF 03.50556: BSF 20.30557: MOVF 20,W0558: BSF 03.50559: MOVWF 07055A: NOP055B: BCF 03.5055C: BTFSS 07.3055D: GOTO 55C055E: BCF 07.4055F: BCF 20.40560: MOVF 20,W0561: BSF 03.50562: MOVWF 070563: NOP0564: BCF 03.50565: BCF 07.30566: BCF 20.30567: MOVF 20,W0568: BSF 03.50569: MOVWF 07.................... I2C_Write(SHT25_ADDR+1);056A: MOVLW 81056B: BCF 03.5056C: MOVWF 30056D: CALL 02C.................... MSB=i2c_read(1);056E: MOVLW 01056F: MOVWF 770570: CALL 17D0571: MOVF 78,W0572: MOVWF 2B.................... LSB=i2c_read(1);0573: MOVLW 010574: MOVWF 770575: CALL 17D0576: MOVF 78,W0577: MOVWF 2C.................... Check=i2c_read(0);0578: CLRF 770579: CALL 17D057A: MOVF 78,W057B: MOVWF 2D.................... i2c_stop();057C: BCF 20.4057D: MOVF 20,W057E: BSF 03.5057F: MOVWF 070580: NOP0581: BCF 03.50582: BSF 20.30583: MOVF 20,W0584: BSF 03.50585: MOVWF 070586: BCF 03.50587: BTFSS 07.30588: GOTO 5870589: NOP058A: GOTO 58B058B: NOP058C: BSF 20.4058D: MOVF 20,W058E: BSF 03.5058F: MOVWF 070590: NOP........................................ LSB = LSB >> 2; // trow out status bits0591: BCF 03.50592: RRF 2C,F0593: RRF 2C,F0594: MOVLW 3F0595: ANDWF 2C,F........................................ data = (((unsigned int16) MSB << 8) + (LSB << 4) );0596: CLRF 310597: MOVF 2B,W0598: MOVWF 300599: MOVWF 31059A: CLRF 30059B: SWAPF 2C,W059C: MOVWF 77059D: MOVLW F0059E: ANDWF 77,F059F: MOVF 77,W05A0: ADDWF 30,W05A1: MOVWF 2E05A2: MOVF 31,W05A3: MOVWF 2F05A4: BTFSC 03.005A5: INCF 2F,F.................... return( -6.0 + 125.0*((float)data/0xFFFF));05A6: MOVF 2F,W05A7: MOVWF 3105A8: MOVF 2E,W05A9: MOVWF 3005AA: CALL 1C205AB: MOVF 77,W05AC: MOVWF 3005AD: MOVF 78,W05AE: MOVWF 3105AF: MOVF 79,W05B0: MOVWF 3205B1: MOVF 7A,W05B2: MOVWF 3305B3: MOVWF 3705B4: MOVF 79,W05B5: MOVWF 3605B6: MOVF 78,W05B7: MOVWF 3505B8: MOVF 77,W05B9: MOVWF 3405BA: CLRF 3B05BB: MOVLW FF05BC: MOVWF 3A05BD: MOVLW 7F05BE: MOVWF 3905BF: MOVLW 8E05C0: MOVWF 3805C1: CALL 1DF05C2: CLRF 3C05C3: CLRF 3B05C4: MOVLW 7A05C5: MOVWF 3A05C6: MOVLW 8505C7: MOVWF 3905C8: MOVF 7A,W05C9: MOVWF 4005CA: MOVF 79,W05CB: MOVWF 3F05CC: MOVF 78,W05CD: MOVWF 3E05CE: MOVF 77,W05CF: MOVWF 3D05D0: CALL 2A905D1: BCF 03.105D2: CLRF 3305D3: CLRF 3205D4: MOVLW C005D5: MOVWF 3105D6: MOVLW 8105D7: MOVWF 3005D8: MOVF 7A,W05D9: MOVWF 3705DA: MOVF 79,W05DB: MOVWF 3605DC: MOVF 78,W05DD: MOVWF 3505DE: MOVF 77,W05DF: MOVWF 3405E0: CALL 31E.................... }05E1: BSF 0A.305E2: BCF 0A.405E3: GOTO 0B3 (RETURN)........................................................................................................................ void main().................... {*0800: CLRF 040801: BCF 03.70802: MOVLW 1F0803: ANDWF 03,F0804: MOVLW 710805: BSF 03.50806: MOVWF 0F0807: MOVF 0F,W0808: BCF 03.50809: BCF 20.7080A: MOVF 20,W080B: BSF 03.5080C: MOVWF 07080D: BCF 03.5080E: BSF 07.7080F: BSF 03.50810: BSF 03.60811: MOVF 09,W0812: ANDLW C00813: MOVWF 090814: BCF 03.60815: BCF 1F.40816: BCF 1F.50817: MOVLW 000818: BSF 03.60819: MOVWF 08081A: BCF 03.5081B: CLRF 07081C: CLRF 08081D: CLRF 09*0821: CLRF 21.................... unsigned int8 i=0, sht_config;.................... float temperature, humidity;........................................ setup_adc_ports(NO_ANALOGS|VSS_VDD);0822: BSF 03.50823: BSF 03.60824: MOVF 09,W0825: ANDLW C00826: MOVWF 090827: BCF 03.60828: BCF 1F.40829: BCF 1F.5082A: MOVLW 00082B: BSF 03.6082C: MOVWF 08.................... setup_adc(ADC_CLOCK_DIV_2);082D: BCF 03.5082E: BCF 03.6082F: BCF 1F.60830: BCF 1F.70831: BSF 03.50832: BCF 1F.70833: BCF 03.50834: BSF 1F.0.................... setup_spi(SPI_SS_DISABLED);0835: BCF 14.50836: BCF 20.50837: MOVF 20,W0838: BSF 03.50839: MOVWF 07083A: BCF 03.5083B: BSF 20.4083C: MOVF 20,W083D: BSF 03.5083E: MOVWF 07083F: BCF 03.50840: BCF 20.30841: MOVF 20,W0842: BSF 03.50843: MOVWF 070844: MOVLW 010845: BCF 03.50846: MOVWF 140847: MOVLW 000848: BSF 03.50849: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);084A: MOVF 01,W084B: ANDLW C7084C: IORLW 08084D: MOVWF 01.................... setup_timer_1(T1_DISABLED);084E: BCF 03.5084F: CLRF 10.................... setup_timer_2(T2_DISABLED,0,1);0850: MOVLW 000851: MOVWF 780852: MOVWF 120853: MOVLW 000854: BSF 03.50855: MOVWF 12.................... setup_ccp1(CCP_OFF);0856: BCF 03.50857: BSF 20.20858: MOVF 20,W0859: BSF 03.5085A: MOVWF 07085B: BCF 03.5085C: CLRF 17085D: BSF 03.5085E: CLRF 1B085F: CLRF 1C0860: MOVLW 010861: MOVWF 1D.................... setup_comparator(NC_NC_NC_NC);0862: BCF 03.50863: BSF 03.60864: CLRF 070865: CLRF 080866: CLRF 09........................................ SHT25_soft_reset();0867: BCF 0A.30868: BCF 03.60869: GOTO 076086A: BSF 0A.3.................... printf("SHT25 humidity and temperature sensor example \r\n",);086B: MOVLW 04086C: BSF 03.6086D: MOVWF 0D086E: MOVLW 00086F: MOVWF 0F0870: BCF 0A.30871: BCF 03.60872: GOTO 0D20873: BSF 0A.3.................... printf("Temperature Humidity[%%] \r\n");0874: MOVLW 1D0875: BSF 03.60876: MOVWF 0D0877: MOVLW 000878: MOVWF 0F0879: BCF 03.0087A: MOVLW 16087B: BCF 03.6087C: MOVWF 2B087D: BCF 0A.3087E: CALL 11A087F: BSF 0A.30880: MOVLW 250881: MOVWF 390882: BCF 0A.30883: CALL 0AE0884: BSF 0A.30885: MOVLW 290886: BSF 03.60887: MOVWF 0D0888: MOVLW 000889: MOVWF 0F088A: BCF 03.0088B: MOVLW 05088C: BCF 03.6088D: MOVWF 2B088E: BCF 0A.3088F: CALL 11A0890: BSF 0A.3.................... delay_ms (500);0891: MOVLW 020892: MOVWF 2B0893: MOVLW FA0894: MOVWF 300895: BCF 0A.30896: CALL 1690897: BSF 0A.30898: DECFSZ 2B,F0899: 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 function089A: MOVF 21,W089B: SUBLW 63089C: BTFSS 03.0089D: GOTO 0A0089E: CLRF 22.................... else089F: GOTO 0A6.................... {.................... sht_config = SHT25_RH12_T14 | SHT25_HEATER_ON;08A0: MOVLW 0408A1: MOVWF 22.................... if (i > 120) i = 0;08A2: MOVF 21,W08A3: SUBLW 7808A4: BTFSS 03.008A5: CLRF 21.................... }........................................ temperature = SHT25_get_temp();08A6: BCF 0A.308A7: GOTO 45F08A8: BSF 0A.308A9: MOVF 7A,W08AA: MOVWF 2608AB: MOVF 79,W08AC: MOVWF 2508AD: MOVF 78,W08AE: MOVWF 2408AF: MOVF 77,W08B0: MOVWF 23.................... humidity = SHT25_get_hum();08B1: BCF 0A.308B2: GOTO 52E08B3: BSF 0A.308B4: MOVF 7A,W08B5: MOVWF 2A08B6: MOVF 79,W08B7: MOVWF 2908B8: MOVF 78,W08B9: MOVWF 2808BA: MOVF 77,W08BB: MOVWF 27........................................ printf("%f %f %X %X \r\n",temperature, humidity, SHT25_setup(sht_config),sht_config);08BC: MOVF 22,W08BD: MOVWF 2B08BE: BCF 0A.308BF: GOTO 5E408C0: BSF 0A.308C1: MOVF 78,W08C2: MOVWF 2B08C3: MOVLW 8908C4: MOVWF 0408C5: MOVF 26,W08C6: MOVWF 2F08C7: MOVF 25,W08C8: MOVWF 2E08C9: MOVF 24,W08CA: MOVWF 2D08CB: MOVF 23,W08CC: MOVWF 2C08CD: MOVLW 0208CE: MOVWF 3008CF: BCF 0A.308D0: CALL 6EE08D1: BSF 0A.308D2: MOVLW 2008D3: MOVWF 3908D4: BCF 0A.308D5: CALL 0AE08D6: BSF 0A.308D7: MOVLW 8908D8: MOVWF 0408D9: MOVF 2A,W08DA: MOVWF 2F08DB: MOVF 29,W08DC: MOVWF 2E08DD: MOVF 28,W08DE: MOVWF 2D08DF: MOVF 27,W08E0: MOVWF 2C08E1: MOVLW 0208E2: MOVWF 3008E3: BCF 0A.308E4: CALL 6EE08E5: BSF 0A.308E6: MOVLW 2008E7: MOVWF 3908E8: BCF 0A.308E9: CALL 0AE08EA: BSF 0A.308EB: MOVF 2B,W08EC: MOVWF 2C08ED: MOVLW 3708EE: MOVWF 2D08EF: BCF 0A.308F0: CALL 7D508F1: BSF 0A.308F2: MOVLW 2008F3: MOVWF 3908F4: BCF 0A.308F5: CALL 0AE08F6: BSF 0A.308F7: MOVF 22,W08F8: MOVWF 2C08F9: MOVLW 3708FA: MOVWF 2D08FB: BCF 0A.308FC: CALL 7D508FD: BSF 0A.308FE: MOVLW 2008FF: MOVWF 390900: BCF 0A.30901: CALL 0AE0902: BSF 0A.30903: MOVLW 0D0904: MOVWF 390905: BCF 0A.30906: CALL 0AE0907: BSF 0A.30908: MOVLW 0A0909: MOVWF 39090A: BCF 0A.3090B: CALL 0AE090C: BSF 0A.3.................... i++;090D: INCF 21,F.................... delay_ms(1000);090E: MOVLW 04090F: MOVWF 2B0910: MOVLW FA0911: MOVWF 300912: BCF 0A.30913: CALL 1690914: BSF 0A.30915: DECFSZ 2B,F0916: GOTO 110.................... }0917: GOTO 09A.................... }....................0918: SLEEPConfiguration Fuses:Word 1: 2CF4 INTRC_IO NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUGWord 2: 3FFF NOWRT BORV40