Rev Author Line No. Line
2911 kaklik 1 CCS PCM C Compiler, Version 4.106, 47914 14-IV-13 13:34
2906 jacho 2  
2911 kaklik 3 Filename: Z:\home\kaklik\MLAB\Modules\Sensors\SHT25V01A\SW\PIC16F887\main.lst
2906 jacho 4  
2911 kaklik 5 ROM used: 2319 words (28%)
2906 jacho 6 Largest free fragment is 2048
2911 kaklik 7 RAM used: 11 (3%) at main() level
8 37 (10%) worst case
2906 jacho 9 Stack: 2 locations
10  
11 *
2909 kaklik 12 0000: MOVLW 08
2906 jacho 13 0001: MOVWF 0A
2909 kaklik 14 0002: GOTO 000
2906 jacho 15 0003: NOP
2908 kaklik 16 .................... #include "main.h"
2906 jacho 17 .................... #include <16F887.h>
18 .................... //////// Standard Header file for the PIC16F887 device ////////////////
19 .................... #device PIC16F887
20 .................... #list
21 ....................
22 .................... #device adc=8
23 ....................
2908 kaklik 24 .................... #FUSES NOWDT //No Watch Dog Timer
2909 kaklik 25 .................... #FUSES INTRC_IO //Internal RC Osc
2908 kaklik 26 .................... #FUSES NOPUT //No Power Up Timer
27 .................... #FUSES MCLR //Master Clear pin enabled
28 .................... #FUSES NOPROTECT //Code not protected from reading
29 .................... #FUSES NOCPD //No EE protection
30 .................... #FUSES NOBROWNOUT //No brownout reset
31 .................... #FUSES IESO //Internal External Switch Over mode enabled
32 .................... #FUSES FCMEN //Fail-safe clock monitor enabled
33 .................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
34 .................... #FUSES NODEBUG //No Debug mode for ICD
35 .................... #FUSES NOWRT //Program memory not write protected
36 .................... #FUSES BORV40 //Brownout reset at 4.0V
2906 jacho 37 ....................
38 .................... #use delay(clock=8000000)
39 *
2911 kaklik 40 0123: MOVLW 27
41 0124: MOVWF 04
42 0125: BCF 03.7
43 0126: MOVF 00,W
44 0127: BTFSC 03.2
45 0128: GOTO 136
46 0129: MOVLW 02
47 012A: MOVWF 78
48 012B: CLRF 77
49 012C: DECFSZ 77,F
50 012D: GOTO 12C
51 012E: DECFSZ 78,F
52 012F: GOTO 12B
53 0130: MOVLW 97
54 0131: MOVWF 77
55 0132: DECFSZ 77,F
56 0133: GOTO 132
57 0134: DECFSZ 00,F
58 0135: GOTO 129
59 0136: RETURN
2906 jacho 60 ....................
2908 kaklik 61 .................... #use i2c(master, sda=PIN_C4, scl=PIN_C3)
2911 kaklik 62 *
63 0037: MOVLW 08
64 0038: MOVWF 78
65 0039: NOP
66 003A: BCF 07.3
67 003B: BCF 20.3
68 003C: MOVF 20,W
69 003D: BSF 03.5
70 003E: MOVWF 07
71 003F: NOP
72 0040: BCF 03.5
73 0041: RLF 27,F
74 0042: BCF 07.4
75 0043: BTFSS 03.0
76 0044: GOTO 04B
77 0045: BSF 20.4
78 0046: MOVF 20,W
79 0047: BSF 03.5
80 0048: MOVWF 07
81 0049: GOTO 04F
82 004A: BCF 03.5
83 004B: BCF 20.4
84 004C: MOVF 20,W
85 004D: BSF 03.5
86 004E: MOVWF 07
87 004F: NOP
88 0050: BCF 03.5
89 0051: BSF 20.3
90 0052: MOVF 20,W
91 0053: BSF 03.5
92 0054: MOVWF 07
93 0055: BCF 03.5
94 0056: BTFSS 07.3
95 0057: GOTO 056
96 0058: DECFSZ 78,F
97 0059: GOTO 039
98 005A: NOP
99 005B: BCF 07.3
100 005C: BCF 20.3
101 005D: MOVF 20,W
102 005E: BSF 03.5
103 005F: MOVWF 07
104 0060: NOP
105 0061: BCF 03.5
106 0062: BSF 20.4
107 0063: MOVF 20,W
108 0064: BSF 03.5
109 0065: MOVWF 07
110 0066: NOP
111 0067: NOP
112 0068: BCF 03.5
113 0069: BSF 20.3
114 006A: MOVF 20,W
115 006B: BSF 03.5
116 006C: MOVWF 07
117 006D: BCF 03.5
118 006E: BTFSS 07.3
119 006F: GOTO 06E
120 0070: CLRF 78
121 0071: NOP
122 0072: BTFSC 07.4
123 0073: BSF 78.0
124 0074: BCF 07.3
125 0075: BCF 20.3
126 0076: MOVF 20,W
127 0077: BSF 03.5
128 0078: MOVWF 07
129 0079: BCF 03.5
130 007A: BCF 07.4
131 007B: BCF 20.4
132 007C: MOVF 20,W
133 007D: BSF 03.5
134 007E: MOVWF 07
135 007F: BCF 03.5
136 0080: RETURN
137 *
138 0137: MOVLW 08
139 0138: MOVWF 28
140 0139: MOVF 77,W
141 013A: MOVWF 29
142 013B: BSF 20.4
143 013C: MOVF 20,W
144 013D: BSF 03.5
145 013E: MOVWF 07
146 013F: NOP
147 0140: BCF 03.5
148 0141: BSF 20.3
149 0142: MOVF 20,W
150 0143: BSF 03.5
151 0144: MOVWF 07
152 0145: BCF 03.5
153 0146: BTFSS 07.3
154 0147: GOTO 146
155 0148: BTFSC 07.4
156 0149: BSF 03.0
157 014A: BTFSS 07.4
158 014B: BCF 03.0
159 014C: RLF 78,F
160 014D: NOP
161 014E: BCF 20.3
162 014F: MOVF 20,W
163 0150: BSF 03.5
164 0151: MOVWF 07
165 0152: BCF 03.5
166 0153: BCF 07.3
167 0154: DECFSZ 28,F
168 0155: GOTO 13B
169 0156: BSF 20.4
170 0157: MOVF 20,W
171 0158: BSF 03.5
172 0159: MOVWF 07
173 015A: NOP
174 015B: BCF 03.5
175 015C: BCF 07.4
176 015D: MOVF 29,W
177 015E: BTFSC 03.2
178 015F: GOTO 165
179 0160: BCF 20.4
180 0161: MOVF 20,W
181 0162: BSF 03.5
182 0163: MOVWF 07
183 0164: BCF 03.5
184 0165: NOP
185 0166: BSF 20.3
186 0167: MOVF 20,W
187 0168: BSF 03.5
188 0169: MOVWF 07
189 016A: BCF 03.5
190 016B: BTFSS 07.3
191 016C: GOTO 16B
192 016D: NOP
193 016E: BCF 07.3
194 016F: BCF 20.3
195 0170: MOVF 20,W
196 0171: BSF 03.5
197 0172: MOVWF 07
198 0173: NOP
199 0174: BCF 03.5
200 0175: BCF 07.4
201 0176: BCF 20.4
202 0177: MOVF 20,W
203 0178: BSF 03.5
204 0179: MOVWF 07
205 017A: BCF 03.5
206 017B: RETURN
2909 kaklik 207 .................... #use rs232(baud=9600,parity=N,xmit=PIN_B7,rcv=PIN_B6,bits=8) //rcv TXD xmit RXD
2906 jacho 208 *
2911 kaklik 209 00B9: BSF 03.5
210 00BA: BCF 06.7
211 00BB: BCF 03.5
212 00BC: BCF 06.7
213 00BD: MOVLW 08
214 00BE: MOVWF 78
215 00BF: GOTO 0C0
216 00C0: NOP
217 00C1: BSF 78.7
218 00C2: GOTO 0D1
219 00C3: BCF 78.7
220 00C4: RRF 33,F
221 00C5: BTFSC 03.0
222 00C6: BSF 06.7
223 00C7: BTFSS 03.0
224 00C8: BCF 06.7
225 00C9: BSF 78.6
226 00CA: GOTO 0D1
227 00CB: BCF 78.6
228 00CC: DECFSZ 78,F
229 00CD: GOTO 0C4
230 00CE: GOTO 0CF
231 00CF: NOP
232 00D0: BSF 06.7
233 00D1: MOVLW 3F
234 00D2: MOVWF 04
235 00D3: DECFSZ 04,F
236 00D4: GOTO 0D3
237 00D5: NOP
238 00D6: BTFSC 78.7
239 00D7: GOTO 0C3
240 00D8: BTFSC 78.6
241 00D9: GOTO 0CB
242 00DA: RETURN
2906 jacho 243 ....................
244 ....................
2908 kaklik 245 ....................
2909 kaklik 246 .................... void SHT25_soft_reset()
2906 jacho 247 .................... {
2909 kaklik 248 .................... i2c_start(); // Start condition
2911 kaklik 249 *
250 0081: BSF 20.4
251 0082: MOVF 20,W
252 0083: BSF 03.5
253 0084: MOVWF 07
254 0085: NOP
255 0086: BCF 03.5
256 0087: BSF 20.3
257 0088: MOVF 20,W
258 0089: BSF 03.5
259 008A: MOVWF 07
260 008B: NOP
261 008C: BCF 03.5
262 008D: BCF 07.4
263 008E: BCF 20.4
264 008F: MOVF 20,W
265 0090: BSF 03.5
266 0091: MOVWF 07
267 0092: NOP
268 0093: BCF 03.5
269 0094: BCF 07.3
270 0095: BCF 20.3
271 0096: MOVF 20,W
272 0097: BSF 03.5
273 0098: MOVWF 07
2909 kaklik 274 .................... i2c_write(0x80); // Device address
2911 kaklik 275 0099: MOVLW 80
276 009A: BCF 03.5
277 009B: MOVWF 27
278 009C: CALL 037
2909 kaklik 279 .................... i2c_write(0xFE); // Device command
2911 kaklik 280 009D: MOVLW FE
281 009E: MOVWF 27
282 009F: CALL 037
2909 kaklik 283 .................... i2c_stop(); // Stop condition
2911 kaklik 284 00A0: BCF 20.4
285 00A1: MOVF 20,W
286 00A2: BSF 03.5
287 00A3: MOVWF 07
288 00A4: NOP
289 00A5: BCF 03.5
290 00A6: BSF 20.3
291 00A7: MOVF 20,W
292 00A8: BSF 03.5
293 00A9: MOVWF 07
294 00AA: BCF 03.5
295 00AB: BTFSS 07.3
296 00AC: GOTO 0AB
297 00AD: NOP
298 00AE: GOTO 0AF
299 00AF: NOP
300 00B0: BSF 20.4
301 00B1: MOVF 20,W
302 00B2: BSF 03.5
303 00B3: MOVWF 07
304 00B4: NOP
2909 kaklik 305 .................... }
2911 kaklik 306 00B5: BCF 03.5
307 00B6: BSF 0A.3
308 00B7: BCF 0A.4
309 00B8: GOTO 066 (RETURN)
2906 jacho 310 ....................
2911 kaklik 311 .................... #define SHT25_HEATER_ON 0x04
312 .................... #define SHT25_HEATER_OFF 0x00
313 .................... #define SHT25_OTP_reload_off 0x02
314 .................... #define SHT25_RH12_T14 0x00
315 .................... #define SHT25_RH8_T12 0x01
316 .................... #define SHT25_RH10_T13 0x80
317 .................... #define SHT25_RH11_T11 0x81
318 ....................
319 .................... #define SHT25_ADDR 0x80
320 ....................
321 .................... unsigned int8 SHT25_setup(unsigned int8 setup_reg ) // writes to status register and returns its value
2909 kaklik 322 .................... {
323 .................... unsigned int8 reg;
324 ....................
325 .................... i2c_start(); // Start condition
2906 jacho 326 *
2911 kaklik 327 017C: BSF 20.4
328 017D: MOVF 20,W
329 017E: BSF 03.5
330 017F: MOVWF 07
331 0180: NOP
332 0181: BCF 03.5
333 0182: BSF 20.3
334 0183: MOVF 20,W
335 0184: BSF 03.5
336 0185: MOVWF 07
337 0186: NOP
338 0187: BCF 03.5
339 0188: BCF 07.4
340 0189: BCF 20.4
341 018A: MOVF 20,W
342 018B: BSF 03.5
343 018C: MOVWF 07
344 018D: NOP
345 018E: BCF 03.5
346 018F: BCF 07.3
347 0190: BCF 20.3
348 0191: MOVF 20,W
349 0192: BSF 03.5
350 0193: MOVWF 07
351 .................... i2c_write(SHT25_ADDR); // Device address
352 0194: MOVLW 80
353 0195: BCF 03.5
354 0196: MOVWF 27
355 0197: CALL 037
2909 kaklik 356 .................... i2c_write(0xE7); // Device command
2911 kaklik 357 0198: MOVLW E7
358 0199: MOVWF 27
359 019A: CALL 037
2906 jacho 360 ....................
2909 kaklik 361 .................... i2c_start(); // Start condition
2911 kaklik 362 019B: BSF 20.4
363 019C: MOVF 20,W
364 019D: BSF 03.5
365 019E: MOVWF 07
366 019F: NOP
367 01A0: BCF 03.5
368 01A1: BSF 20.3
369 01A2: MOVF 20,W
370 01A3: BSF 03.5
371 01A4: MOVWF 07
372 01A5: NOP
373 01A6: BCF 03.5
374 01A7: BTFSS 07.3
375 01A8: GOTO 1A7
376 01A9: BCF 07.4
377 01AA: BCF 20.4
378 01AB: MOVF 20,W
379 01AC: BSF 03.5
380 01AD: MOVWF 07
381 01AE: NOP
382 01AF: BCF 03.5
383 01B0: BCF 07.3
384 01B1: BCF 20.3
385 01B2: MOVF 20,W
386 01B3: BSF 03.5
387 01B4: MOVWF 07
388 .................... i2c_write(SHT25_ADDR+1); // Device address
389 01B5: MOVLW 81
390 01B6: BCF 03.5
391 01B7: MOVWF 27
392 01B8: CALL 037
393 .................... reg=i2c_read(0); // Read status actual status register
394 01B9: CLRF 77
395 01BA: CALL 137
396 01BB: MOVF 78,W
397 01BC: MOVWF 23
398 ....................
399 .................... reg = (reg & 0x3A) | setup_reg;
400 01BD: MOVF 23,W
401 01BE: ANDLW 3A
402 01BF: IORWF 22,W
403 01C0: MOVWF 23
404 ....................
405 .................... i2c_start(); // Start condition
406 01C1: BSF 20.4
407 01C2: MOVF 20,W
408 01C3: BSF 03.5
409 01C4: MOVWF 07
410 01C5: NOP
411 01C6: BCF 03.5
412 01C7: BSF 20.3
413 01C8: MOVF 20,W
414 01C9: BSF 03.5
415 01CA: MOVWF 07
416 01CB: NOP
417 01CC: BCF 03.5
418 01CD: BTFSS 07.3
419 01CE: GOTO 1CD
420 01CF: BCF 07.4
421 01D0: BCF 20.4
422 01D1: MOVF 20,W
423 01D2: BSF 03.5
424 01D3: MOVWF 07
425 01D4: NOP
426 01D5: BCF 03.5
427 01D6: BCF 07.3
428 01D7: BCF 20.3
429 01D8: MOVF 20,W
430 01D9: BSF 03.5
431 01DA: MOVWF 07
432 .................... i2c_write(SHT25_ADDR); // Device address
433 01DB: MOVLW 80
434 01DC: BCF 03.5
435 01DD: MOVWF 27
436 01DE: CALL 037
437 .................... i2c_write(0xE7); // Write to status register
438 01DF: MOVLW E7
439 01E0: MOVWF 27
440 01E1: CALL 037
441 .................... i2c_write(reg); // Device command
442 01E2: MOVF 23,W
443 01E3: MOVWF 27
444 01E4: CALL 037
2909 kaklik 445 .................... i2c_stop(); // Stop condition
2911 kaklik 446 01E5: BCF 20.4
447 01E6: MOVF 20,W
448 01E7: BSF 03.5
449 01E8: MOVWF 07
450 01E9: NOP
451 01EA: BCF 03.5
452 01EB: BSF 20.3
453 01EC: MOVF 20,W
454 01ED: BSF 03.5
455 01EE: MOVWF 07
456 01EF: BCF 03.5
457 01F0: BTFSS 07.3
458 01F1: GOTO 1F0
459 01F2: NOP
460 01F3: GOTO 1F4
461 01F4: NOP
462 01F5: BSF 20.4
463 01F6: MOVF 20,W
464 01F7: BSF 03.5
465 01F8: MOVWF 07
466 01F9: NOP
467 ....................
468 .................... return (reg);
469 01FA: BCF 03.5
470 01FB: MOVF 23,W
471 01FC: MOVWF 78
2909 kaklik 472 .................... }
2911 kaklik 473 01FD: RETURN
2906 jacho 474 ....................
2911 kaklik 475 ....................
2909 kaklik 476 .................... float SHT25_get_temp()
477 .................... {
478 .................... unsigned int8 MSB, LSB, Check;
479 .................... unsigned int16 data;
2906 jacho 480 ....................
2909 kaklik 481 .................... i2c_start();
482 *
2911 kaklik 483 050B: BSF 20.4
484 050C: MOVF 20,W
485 050D: BSF 03.5
486 050E: MOVWF 07
487 050F: NOP
488 0510: BCF 03.5
489 0511: BSF 20.3
490 0512: MOVF 20,W
491 0513: BSF 03.5
492 0514: MOVWF 07
493 0515: NOP
494 0516: BCF 03.5
495 0517: BCF 07.4
496 0518: BCF 20.4
497 0519: MOVF 20,W
498 051A: BSF 03.5
499 051B: MOVWF 07
500 051C: NOP
501 051D: BCF 03.5
502 051E: BCF 07.3
503 051F: BCF 20.3
504 0520: MOVF 20,W
505 0521: BSF 03.5
506 0522: MOVWF 07
507 .................... I2C_Write(SHT25_ADDR);
508 0523: MOVLW 80
509 0524: BCF 03.5
510 0525: MOVWF 27
511 0526: CALL 037
2909 kaklik 512 .................... I2C_write(0xE3);
2911 kaklik 513 0527: MOVLW E3
514 0528: MOVWF 27
515 0529: CALL 037
2906 jacho 516 .................... i2c_stop();
2911 kaklik 517 052A: BCF 20.4
518 052B: MOVF 20,W
519 052C: BSF 03.5
520 052D: MOVWF 07
521 052E: NOP
522 052F: BCF 03.5
523 0530: BSF 20.3
524 0531: MOVF 20,W
525 0532: BSF 03.5
526 0533: MOVWF 07
527 0534: BCF 03.5
528 0535: BTFSS 07.3
529 0536: GOTO 535
530 0537: NOP
531 0538: GOTO 539
532 0539: NOP
533 053A: BSF 20.4
534 053B: MOVF 20,W
535 053C: BSF 03.5
536 053D: MOVWF 07
537 053E: NOP
2909 kaklik 538 ....................
539 .................... delay_ms(100);
2911 kaklik 540 053F: MOVLW 64
541 0540: BCF 03.5
542 0541: MOVWF 27
543 0542: CALL 123
2906 jacho 544 ....................
545 .................... i2c_start();
2911 kaklik 546 0543: BSF 20.4
547 0544: MOVF 20,W
548 0545: BSF 03.5
549 0546: MOVWF 07
550 0547: NOP
551 0548: BCF 03.5
552 0549: BSF 20.3
553 054A: MOVF 20,W
554 054B: BSF 03.5
555 054C: MOVWF 07
556 054D: NOP
557 054E: BCF 03.5
558 054F: BCF 07.4
559 0550: BCF 20.4
560 0551: MOVF 20,W
561 0552: BSF 03.5
562 0553: MOVWF 07
563 0554: NOP
564 0555: BCF 03.5
565 0556: BCF 07.3
566 0557: BCF 20.3
567 0558: MOVF 20,W
568 0559: BSF 03.5
569 055A: MOVWF 07
570 .................... I2C_Write(SHT25_ADDR+1);
571 055B: MOVLW 81
572 055C: BCF 03.5
573 055D: MOVWF 27
574 055E: CALL 037
2909 kaklik 575 .................... MSB=i2c_read(1);
2911 kaklik 576 055F: MOVLW 01
577 0560: MOVWF 77
578 0561: CALL 137
579 0562: MOVF 78,W
580 0563: MOVWF 22
2909 kaklik 581 .................... LSB=i2c_read(1);
2911 kaklik 582 0564: MOVLW 01
583 0565: MOVWF 77
584 0566: CALL 137
585 0567: MOVF 78,W
586 0568: MOVWF 23
2909 kaklik 587 .................... Check=i2c_read(0);
2911 kaklik 588 0569: CLRF 77
589 056A: CALL 137
590 056B: MOVF 78,W
591 056C: MOVWF 24
2909 kaklik 592 .................... i2c_stop();
2911 kaklik 593 056D: BCF 20.4
594 056E: MOVF 20,W
595 056F: BSF 03.5
596 0570: MOVWF 07
597 0571: NOP
598 0572: BCF 03.5
599 0573: BSF 20.3
600 0574: MOVF 20,W
601 0575: BSF 03.5
602 0576: MOVWF 07
603 0577: BCF 03.5
604 0578: BTFSS 07.3
605 0579: GOTO 578
606 057A: NOP
607 057B: GOTO 57C
608 057C: NOP
609 057D: BSF 20.4
610 057E: MOVF 20,W
611 057F: BSF 03.5
612 0580: MOVWF 07
613 0581: NOP
2909 kaklik 614 ....................
615 .................... LSB = LSB >> 2; // trow out status bits
2911 kaklik 616 0582: BCF 03.5
617 0583: RRF 23,F
618 0584: RRF 23,F
619 0585: MOVLW 3F
620 0586: ANDWF 23,F
2906 jacho 621 ....................
2909 kaklik 622 .................... data = (((unsigned int16) MSB << 8) + (LSB << 4));
2911 kaklik 623 0587: CLRF 28
624 0588: MOVF 22,W
625 0589: MOVWF 27
626 058A: MOVWF 28
627 058B: CLRF 27
628 058C: SWAPF 23,W
629 058D: MOVWF 77
630 058E: MOVLW F0
631 058F: ANDWF 77,F
632 0590: MOVF 77,W
633 0591: ADDWF 27,W
634 0592: MOVWF 25
635 0593: MOVF 28,W
636 0594: MOVWF 26
637 0595: BTFSC 03.0
638 0596: INCF 26,F
2909 kaklik 639 .................... return(-46.85 + 175.72*((float)data/0xFFFF));
2911 kaklik 640 0597: MOVF 26,W
641 0598: MOVWF 28
642 0599: MOVF 25,W
643 059A: MOVWF 27
644 059B: CALL 26E
645 059C: MOVF 77,W
646 059D: MOVWF 27
647 059E: MOVF 78,W
648 059F: MOVWF 28
649 05A0: MOVF 79,W
650 05A1: MOVWF 29
651 05A2: MOVF 7A,W
652 05A3: MOVWF 2A
653 05A4: MOVWF 2E
654 05A5: MOVF 79,W
655 05A6: MOVWF 2D
656 05A7: MOVF 78,W
657 05A8: MOVWF 2C
658 05A9: MOVF 77,W
659 05AA: MOVWF 2B
660 05AB: CLRF 32
661 05AC: MOVLW FF
662 05AD: MOVWF 31
663 05AE: MOVLW 7F
664 05AF: MOVWF 30
665 05B0: MOVLW 8E
666 05B1: MOVWF 2F
667 05B2: CALL 28B
668 05B3: MOVLW 52
669 05B4: MOVWF 36
670 05B5: MOVLW B8
671 05B6: MOVWF 35
672 05B7: MOVLW 2F
673 05B8: MOVWF 34
674 05B9: MOVLW 86
675 05BA: MOVWF 33
676 05BB: MOVF 7A,W
677 05BC: MOVWF 3A
678 05BD: MOVF 79,W
679 05BE: MOVWF 39
680 05BF: MOVF 78,W
681 05C0: MOVWF 38
682 05C1: MOVF 77,W
683 05C2: MOVWF 37
684 05C3: CALL 355
685 05C4: BCF 03.1
686 05C5: MOVLW 66
687 05C6: MOVWF 2A
688 05C7: MOVWF 29
689 05C8: MOVLW BB
690 05C9: MOVWF 28
691 05CA: MOVLW 84
692 05CB: MOVWF 27
693 05CC: MOVF 7A,W
694 05CD: MOVWF 2E
695 05CE: MOVF 79,W
696 05CF: MOVWF 2D
697 05D0: MOVF 78,W
698 05D1: MOVWF 2C
699 05D2: MOVF 77,W
700 05D3: MOVWF 2B
701 05D4: CALL 3CA
2909 kaklik 702 .................... }
2911 kaklik 703 05D5: BSF 0A.3
704 05D6: BCF 0A.4
705 05D7: GOTO 0DB (RETURN)
2909 kaklik 706 ....................
707 .................... float SHT25_get_hum()
708 .................... {
709 .................... unsigned int8 MSB, LSB, Check;
710 .................... unsigned int16 data;
711 ....................
712 .................... i2c_start(); //RH
713 *
2911 kaklik 714 0701: BSF 20.4
715 0702: MOVF 20,W
716 0703: BSF 03.5
717 0704: MOVWF 07
718 0705: NOP
719 0706: BCF 03.5
720 0707: BSF 20.3
721 0708: MOVF 20,W
722 0709: BSF 03.5
723 070A: MOVWF 07
724 070B: NOP
725 070C: BCF 03.5
726 070D: BCF 07.4
727 070E: BCF 20.4
728 070F: MOVF 20,W
729 0710: BSF 03.5
730 0711: MOVWF 07
731 0712: NOP
732 0713: BCF 03.5
733 0714: BCF 07.3
734 0715: BCF 20.3
735 0716: MOVF 20,W
736 0717: BSF 03.5
737 0718: MOVWF 07
738 .................... I2C_Write(SHT25_ADDR);
739 0719: MOVLW 80
740 071A: BCF 03.5
741 071B: MOVWF 27
742 071C: CALL 037
2909 kaklik 743 .................... I2C_write(0xE5);
2911 kaklik 744 071D: MOVLW E5
745 071E: MOVWF 27
746 071F: CALL 037
2909 kaklik 747 .................... // i2c_stop();
748 ....................
749 .................... delay_ms(100);
2911 kaklik 750 0720: MOVLW 64
751 0721: MOVWF 27
752 0722: CALL 123
2909 kaklik 753 ....................
2906 jacho 754 .................... i2c_start();
2911 kaklik 755 0723: BSF 20.4
756 0724: MOVF 20,W
757 0725: BSF 03.5
758 0726: MOVWF 07
759 0727: NOP
760 0728: BCF 03.5
761 0729: BSF 20.3
762 072A: MOVF 20,W
763 072B: BSF 03.5
764 072C: MOVWF 07
765 072D: NOP
766 072E: BCF 03.5
767 072F: BTFSS 07.3
768 0730: GOTO 72F
769 0731: BCF 07.4
770 0732: BCF 20.4
771 0733: MOVF 20,W
772 0734: BSF 03.5
773 0735: MOVWF 07
774 0736: NOP
775 0737: BCF 03.5
776 0738: BCF 07.3
777 0739: BCF 20.3
778 073A: MOVF 20,W
779 073B: BSF 03.5
780 073C: MOVWF 07
781 .................... I2C_Write(SHT25_ADDR+1);
782 073D: MOVLW 81
783 073E: BCF 03.5
784 073F: MOVWF 27
785 0740: CALL 037
2909 kaklik 786 .................... MSB=i2c_read(1);
2911 kaklik 787 0741: MOVLW 01
788 0742: MOVWF 77
789 0743: CALL 137
790 0744: MOVF 78,W
791 0745: MOVWF 22
2909 kaklik 792 .................... LSB=i2c_read(1);
2911 kaklik 793 0746: MOVLW 01
794 0747: MOVWF 77
795 0748: CALL 137
796 0749: MOVF 78,W
797 074A: MOVWF 23
2909 kaklik 798 .................... Check=i2c_read(0);
2911 kaklik 799 074B: CLRF 77
800 074C: CALL 137
801 074D: MOVF 78,W
802 074E: MOVWF 24
2909 kaklik 803 .................... i2c_stop();
2911 kaklik 804 074F: BCF 20.4
805 0750: MOVF 20,W
806 0751: BSF 03.5
807 0752: MOVWF 07
808 0753: NOP
809 0754: BCF 03.5
810 0755: BSF 20.3
811 0756: MOVF 20,W
812 0757: BSF 03.5
813 0758: MOVWF 07
814 0759: BCF 03.5
815 075A: BTFSS 07.3
816 075B: GOTO 75A
817 075C: NOP
818 075D: GOTO 75E
819 075E: NOP
820 075F: BSF 20.4
821 0760: MOVF 20,W
822 0761: BSF 03.5
823 0762: MOVWF 07
824 0763: NOP
2906 jacho 825 ....................
2909 kaklik 826 .................... // printf("%X %X %X\r\n",MSB, LSB, Check);
2906 jacho 827 ....................
2909 kaklik 828 .................... LSB = LSB >> 2; // trow out status bits
2911 kaklik 829 0764: BCF 03.5
830 0765: RRF 23,F
831 0766: RRF 23,F
832 0767: MOVLW 3F
833 0768: ANDWF 23,F
2906 jacho 834 ....................
2909 kaklik 835 .................... data = (((unsigned int16) MSB << 8) + (LSB << 4) );
2911 kaklik 836 0769: CLRF 28
837 076A: MOVF 22,W
838 076B: MOVWF 27
839 076C: MOVWF 28
840 076D: CLRF 27
841 076E: SWAPF 23,W
842 076F: MOVWF 77
843 0770: MOVLW F0
844 0771: ANDWF 77,F
845 0772: MOVF 77,W
846 0773: ADDWF 27,W
847 0774: MOVWF 25
848 0775: MOVF 28,W
849 0776: MOVWF 26
850 0777: BTFSC 03.0
851 0778: INCF 26,F
2909 kaklik 852 .................... return( -6.0 + 125.0*((float)data/0xFFFF));
2911 kaklik 853 0779: MOVF 26,W
854 077A: MOVWF 28
855 077B: MOVF 25,W
856 077C: MOVWF 27
857 077D: CALL 26E
858 077E: MOVF 77,W
859 077F: MOVWF 27
860 0780: MOVF 78,W
861 0781: MOVWF 28
862 0782: MOVF 79,W
863 0783: MOVWF 29
864 0784: MOVF 7A,W
865 0785: MOVWF 2A
866 0786: MOVWF 2E
867 0787: MOVF 79,W
868 0788: MOVWF 2D
869 0789: MOVF 78,W
870 078A: MOVWF 2C
871 078B: MOVF 77,W
872 078C: MOVWF 2B
873 078D: CLRF 32
874 078E: MOVLW FF
875 078F: MOVWF 31
876 0790: MOVLW 7F
877 0791: MOVWF 30
878 0792: MOVLW 8E
879 0793: MOVWF 2F
880 0794: CALL 28B
881 0795: CLRF 36
882 0796: CLRF 35
883 0797: MOVLW 7A
884 0798: MOVWF 34
885 0799: MOVLW 85
886 079A: MOVWF 33
887 079B: MOVF 7A,W
888 079C: MOVWF 3A
889 079D: MOVF 79,W
890 079E: MOVWF 39
891 079F: MOVF 78,W
892 07A0: MOVWF 38
893 07A1: MOVF 77,W
894 07A2: MOVWF 37
895 07A3: CALL 355
896 07A4: BCF 03.1
897 07A5: CLRF 2A
898 07A6: CLRF 29
899 07A7: MOVLW C0
900 07A8: MOVWF 28
901 07A9: MOVLW 81
902 07AA: MOVWF 27
903 07AB: MOVF 7A,W
904 07AC: MOVWF 2E
905 07AD: MOVF 79,W
906 07AE: MOVWF 2D
907 07AF: MOVF 78,W
908 07B0: MOVWF 2C
909 07B1: MOVF 77,W
910 07B2: MOVWF 2B
911 07B3: CALL 3CA
2909 kaklik 912 .................... }
2911 kaklik 913 07B4: BSF 0A.3
914 07B5: BCF 0A.4
915 07B6: GOTO 119 (RETURN)
2906 jacho 916 ....................
917 ....................
2909 kaklik 918 .................... void main()
919 .................... {
920 *
2911 kaklik 921 0036: DATA 00,00
2909 kaklik 922 *
923 0800: CLRF 04
924 0801: BCF 03.7
925 0802: MOVLW 1F
926 0803: ANDWF 03,F
927 0804: MOVLW 71
928 0805: BSF 03.5
929 0806: MOVWF 0F
930 0807: MOVF 0F,W
931 0808: BCF 06.7
932 0809: BCF 03.5
933 080A: BSF 06.7
934 080B: BSF 03.5
935 080C: BSF 03.6
936 080D: MOVF 09,W
937 080E: ANDLW C0
938 080F: MOVWF 09
939 0810: BCF 03.6
940 0811: BCF 1F.4
941 0812: BCF 1F.5
942 0813: MOVLW 00
943 0814: BSF 03.6
944 0815: MOVWF 08
945 0816: BCF 03.5
946 0817: CLRF 07
947 0818: CLRF 08
948 0819: CLRF 09
2911 kaklik 949 *
950 081D: CLRF 21
951 .................... unsigned int8 i=0;
2906 jacho 952 ....................
2909 kaklik 953 .................... setup_adc_ports(NO_ANALOGS|VSS_VDD);
2911 kaklik 954 081E: BSF 03.5
955 081F: BSF 03.6
956 0820: MOVF 09,W
957 0821: ANDLW C0
958 0822: MOVWF 09
959 0823: BCF 03.6
960 0824: BCF 1F.4
961 0825: BCF 1F.5
962 0826: MOVLW 00
963 0827: BSF 03.6
964 0828: MOVWF 08
2909 kaklik 965 .................... setup_adc(ADC_CLOCK_DIV_2);
2911 kaklik 966 0829: BCF 03.5
967 082A: BCF 03.6
968 082B: BCF 1F.6
969 082C: BCF 1F.7
970 082D: BSF 03.5
971 082E: BCF 1F.7
972 082F: BCF 03.5
973 0830: BSF 1F.0
2909 kaklik 974 .................... setup_spi(SPI_SS_DISABLED);
2911 kaklik 975 0831: BCF 14.5
976 0832: BCF 20.5
977 0833: MOVF 20,W
978 0834: BSF 03.5
979 0835: MOVWF 07
980 0836: BCF 03.5
981 0837: BSF 20.4
982 0838: MOVF 20,W
983 0839: BSF 03.5
984 083A: MOVWF 07
985 083B: BCF 03.5
986 083C: BCF 20.3
987 083D: MOVF 20,W
988 083E: BSF 03.5
989 083F: MOVWF 07
990 0840: MOVLW 01
991 0841: BCF 03.5
992 0842: MOVWF 14
993 0843: MOVLW 00
994 0844: BSF 03.5
995 0845: MOVWF 14
2909 kaklik 996 .................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
2911 kaklik 997 0846: MOVF 01,W
998 0847: ANDLW C7
999 0848: IORLW 08
1000 0849: MOVWF 01
2909 kaklik 1001 .................... setup_timer_1(T1_DISABLED);
2911 kaklik 1002 084A: BCF 03.5
1003 084B: CLRF 10
2909 kaklik 1004 .................... setup_timer_2(T2_DISABLED,0,1);
2911 kaklik 1005 084C: MOVLW 00
1006 084D: MOVWF 78
1007 084E: MOVWF 12
1008 084F: MOVLW 00
1009 0850: BSF 03.5
1010 0851: MOVWF 12
2909 kaklik 1011 .................... setup_ccp1(CCP_OFF);
2911 kaklik 1012 0852: BCF 03.5
1013 0853: BSF 20.2
1014 0854: MOVF 20,W
1015 0855: BSF 03.5
1016 0856: MOVWF 07
1017 0857: BCF 03.5
1018 0858: CLRF 17
1019 0859: BSF 03.5
1020 085A: CLRF 1B
1021 085B: CLRF 1C
1022 085C: MOVLW 01
1023 085D: MOVWF 1D
2909 kaklik 1024 .................... setup_comparator(NC_NC_NC_NC);
2911 kaklik 1025 085E: BCF 03.5
1026 085F: BSF 03.6
1027 0860: CLRF 07
1028 0861: CLRF 08
1029 0862: CLRF 09
2909 kaklik 1030 ....................
2911 kaklik 1031 .................... SHT25_soft_reset();
1032 0863: BCF 0A.3
1033 0864: BCF 03.6
1034 0865: GOTO 081
1035 0866: BSF 0A.3
2909 kaklik 1036 .................... printf("SHT25 humidity and temperature sensor example \r\n",);
2911 kaklik 1037 0867: MOVLW 04
1038 0868: BSF 03.6
1039 0869: MOVWF 0D
1040 086A: MOVLW 00
1041 086B: MOVWF 0F
1042 086C: BCF 0A.3
1043 086D: BCF 03.6
1044 086E: GOTO 0DB
1045 086F: BSF 0A.3
2909 kaklik 1046 .................... delay_ms (500);
2911 kaklik 1047 0870: MOVLW 02
1048 0871: MOVWF 22
1049 0872: MOVLW FA
1050 0873: MOVWF 27
1051 0874: BCF 0A.3
1052 0875: CALL 123
1053 0876: BSF 0A.3
1054 0877: DECFSZ 22,F
1055 0878: GOTO 072
2909 kaklik 1056 ....................
1057 .................... while(TRUE)
1058 .................... {
2911 kaklik 1059 .................... if (i<10)
1060 0879: MOVF 21,W
1061 087A: SUBLW 09
1062 087B: BTFSS 03.0
1063 087C: GOTO 0A6
1064 .................... printf("setup: %X \r\n",SHT25_setup(SHT25_RH12_T14 | SHT25_HEATER_OFF));
1065 087D: CLRF 22
1066 087E: BCF 0A.3
1067 087F: CALL 17C
1068 0880: BSF 0A.3
1069 0881: MOVF 78,W
1070 0882: MOVWF 22
1071 0883: MOVLW 1D
1072 0884: BSF 03.6
1073 0885: MOVWF 0D
1074 0886: MOVLW 00
1075 0887: MOVWF 0F
1076 0888: BCF 03.0
1077 0889: MOVLW 07
1078 088A: BCF 03.6
1079 088B: MOVWF 26
1080 088C: BCF 0A.3
1081 088D: CALL 1FE
1082 088E: BSF 0A.3
1083 088F: MOVF 22,W
1084 0890: MOVWF 23
1085 0891: MOVLW 37
1086 0892: MOVWF 24
1087 0893: BCF 0A.3
1088 0894: CALL 24D
1089 0895: BSF 0A.3
1090 0896: MOVLW 20
1091 0897: MOVWF 33
1092 0898: BCF 0A.3
1093 0899: CALL 0B9
1094 089A: BSF 0A.3
1095 089B: MOVLW 0D
1096 089C: MOVWF 33
1097 089D: BCF 0A.3
1098 089E: CALL 0B9
1099 089F: BSF 0A.3
1100 08A0: MOVLW 0A
1101 08A1: MOVWF 33
1102 08A2: BCF 0A.3
1103 08A3: CALL 0B9
1104 08A4: BSF 0A.3
1105 .................... else
1106 08A5: GOTO 0D0
1107 .................... {
1108 .................... printf("setup: %X \r\n",SHT25_setup(SHT25_RH12_T14 | SHT25_HEATER_ON));
1109 08A6: MOVLW 04
1110 08A7: MOVWF 22
1111 08A8: BCF 0A.3
1112 08A9: CALL 17C
1113 08AA: BSF 0A.3
1114 08AB: MOVF 78,W
1115 08AC: MOVWF 22
1116 08AD: MOVLW 24
1117 08AE: BSF 03.6
1118 08AF: MOVWF 0D
1119 08B0: MOVLW 00
1120 08B1: MOVWF 0F
1121 08B2: BCF 03.0
1122 08B3: MOVLW 07
1123 08B4: BCF 03.6
1124 08B5: MOVWF 26
1125 08B6: BCF 0A.3
1126 08B7: CALL 1FE
1127 08B8: BSF 0A.3
1128 08B9: MOVF 22,W
1129 08BA: MOVWF 23
1130 08BB: MOVLW 37
1131 08BC: MOVWF 24
1132 08BD: BCF 0A.3
1133 08BE: CALL 24D
1134 08BF: BSF 0A.3
1135 08C0: MOVLW 20
1136 08C1: MOVWF 33
1137 08C2: BCF 0A.3
1138 08C3: CALL 0B9
1139 08C4: BSF 0A.3
1140 08C5: MOVLW 0D
1141 08C6: MOVWF 33
1142 08C7: BCF 0A.3
1143 08C8: CALL 0B9
1144 08C9: BSF 0A.3
1145 08CA: MOVLW 0A
1146 08CB: MOVWF 33
1147 08CC: BCF 0A.3
1148 08CD: CALL 0B9
1149 08CE: BSF 0A.3
1150 .................... i = 0;
1151 08CF: CLRF 21
1152 .................... }
2909 kaklik 1153 .................... delay_ms (500);
2911 kaklik 1154 08D0: MOVLW 02
1155 08D1: MOVWF 22
1156 08D2: MOVLW FA
1157 08D3: MOVWF 27
1158 08D4: BCF 0A.3
1159 08D5: CALL 123
1160 08D6: BSF 0A.3
1161 08D7: DECFSZ 22,F
1162 08D8: GOTO 0D2
2909 kaklik 1163 .................... printf("Temp: %f \r\n",SHT25_get_temp());
2911 kaklik 1164 08D9: BCF 0A.3
1165 08DA: GOTO 50B
1166 08DB: BSF 0A.3
1167 08DC: MOVF 77,W
1168 08DD: MOVWF 22
1169 08DE: MOVF 78,W
1170 08DF: MOVWF 23
1171 08E0: MOVF 79,W
1172 08E1: MOVWF 24
1173 08E2: MOVF 7A,W
1174 08E3: MOVWF 25
1175 08E4: MOVLW 2B
1176 08E5: BSF 03.6
1177 08E6: MOVWF 0D
1178 08E7: MOVLW 00
1179 08E8: MOVWF 0F
1180 08E9: BCF 03.0
1181 08EA: MOVLW 06
1182 08EB: BCF 03.6
1183 08EC: MOVWF 26
1184 08ED: BCF 0A.3
1185 08EE: CALL 1FE
1186 08EF: BSF 0A.3
1187 08F0: MOVLW 89
1188 08F1: MOVWF 04
1189 08F2: MOVF 25,W
1190 08F3: MOVWF 29
1191 08F4: MOVF 24,W
1192 08F5: MOVWF 28
1193 08F6: MOVF 23,W
1194 08F7: MOVWF 27
1195 08F8: MOVF 22,W
1196 08F9: MOVWF 26
1197 08FA: MOVLW 02
1198 08FB: MOVWF 2A
1199 08FC: BCF 0A.3
1200 08FD: CALL 61A
1201 08FE: BSF 0A.3
1202 08FF: MOVLW 20
1203 0900: MOVWF 33
1204 0901: BCF 0A.3
1205 0902: CALL 0B9
1206 0903: BSF 0A.3
1207 0904: MOVLW 0D
1208 0905: MOVWF 33
1209 0906: BCF 0A.3
1210 0907: CALL 0B9
1211 0908: BSF 0A.3
1212 0909: MOVLW 0A
1213 090A: MOVWF 33
1214 090B: BCF 0A.3
1215 090C: CALL 0B9
1216 090D: BSF 0A.3
2909 kaklik 1217 .................... delay_ms (500);
2911 kaklik 1218 090E: MOVLW 02
1219 090F: MOVWF 22
1220 0910: MOVLW FA
1221 0911: MOVWF 27
1222 0912: BCF 0A.3
1223 0913: CALL 123
1224 0914: BSF 0A.3
1225 0915: DECFSZ 22,F
1226 0916: GOTO 110
2909 kaklik 1227 .................... printf("Hum: %f \r\n",SHT25_get_hum());
2911 kaklik 1228 0917: BCF 0A.3
1229 0918: GOTO 701
1230 0919: BSF 0A.3
1231 091A: MOVF 77,W
1232 091B: MOVWF 22
1233 091C: MOVF 78,W
1234 091D: MOVWF 23
1235 091E: MOVF 79,W
1236 091F: MOVWF 24
1237 0920: MOVF 7A,W
1238 0921: MOVWF 25
1239 0922: MOVLW 31
1240 0923: BSF 03.6
1241 0924: MOVWF 0D
1242 0925: MOVLW 00
1243 0926: MOVWF 0F
1244 0927: BCF 03.0
1245 0928: MOVLW 05
1246 0929: BCF 03.6
1247 092A: MOVWF 26
1248 092B: BCF 0A.3
1249 092C: CALL 1FE
1250 092D: BSF 0A.3
1251 092E: MOVLW 89
1252 092F: MOVWF 04
1253 0930: MOVF 25,W
1254 0931: MOVWF 29
1255 0932: MOVF 24,W
1256 0933: MOVWF 28
1257 0934: MOVF 23,W
1258 0935: MOVWF 27
1259 0936: MOVF 22,W
1260 0937: MOVWF 26
1261 0938: MOVLW 02
1262 0939: MOVWF 2A
1263 093A: BCF 0A.3
1264 093B: CALL 61A
1265 093C: BSF 0A.3
1266 093D: MOVLW 20
1267 093E: MOVWF 33
1268 093F: BCF 0A.3
1269 0940: CALL 0B9
1270 0941: BSF 0A.3
1271 0942: MOVLW 0D
1272 0943: MOVWF 33
1273 0944: BCF 0A.3
1274 0945: CALL 0B9
1275 0946: BSF 0A.3
1276 0947: MOVLW 0A
1277 0948: MOVWF 33
1278 0949: BCF 0A.3
1279 094A: CALL 0B9
1280 094B: BSF 0A.3
2909 kaklik 1281 .................... delay_ms (1000);
2911 kaklik 1282 094C: MOVLW 04
1283 094D: MOVWF 22
1284 094E: MOVLW FA
1285 094F: MOVWF 27
1286 0950: BCF 0A.3
1287 0951: CALL 123
1288 0952: BSF 0A.3
1289 0953: DECFSZ 22,F
1290 0954: GOTO 14E
1291 .................... i++;
1292 0955: INCF 21,F
2909 kaklik 1293 .................... }
2911 kaklik 1294 0956: GOTO 079
2906 jacho 1295 .................... }
1296 ....................
2911 kaklik 1297 0957: SLEEP
2906 jacho 1298  
1299 Configuration Fuses:
2909 kaklik 1300 Word 1: 2CF4 INTRC_IO NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUG
2906 jacho 1301 Word 2: 3FFF NOWRT BORV40