Rev Author Line No. Line
2910 kaklik 1 CCS PCM C Compiler, Version 4.106, 47914 14-IV-13 10:31
2906 jacho 2  
2909 kaklik 3 Filename: D:\MLAB\Modules\Sensors\SHT25V01A\SW\PIC16F887\main.lst
2906 jacho 4  
2909 kaklik 5 ROM used: 2165 words (26%)
2906 jacho 6 Largest free fragment is 2048
2909 kaklik 7 RAM used: 10 (3%) at main() level
8 36 (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 *
2909 kaklik 40 009A: MOVLW 26
41 009B: MOVWF 04
42 009C: BCF 03.7
43 009D: MOVF 00,W
44 009E: BTFSC 03.2
45 009F: GOTO 0AD
46 00A0: MOVLW 02
47 00A1: MOVWF 78
48 00A2: CLRF 77
49 00A3: DECFSZ 77,F
50 00A4: GOTO 0A3
51 00A5: DECFSZ 78,F
52 00A6: GOTO 0A2
53 00A7: MOVLW 97
54 00A8: MOVWF 77
55 00A9: DECFSZ 77,F
56 00AA: GOTO 0A9
57 00AB: DECFSZ 00,F
58 00AC: GOTO 0A0
59 00AD: RETURN
2906 jacho 60 ....................
2908 kaklik 61 .................... #use i2c(master, sda=PIN_C4, scl=PIN_C3)
2909 kaklik 62 00AE: MOVLW 08
63 00AF: MOVWF 78
64 00B0: NOP
65 00B1: BCF 07.3
66 00B2: BCF 20.3
67 00B3: MOVF 20,W
68 00B4: BSF 03.5
69 00B5: MOVWF 07
70 00B6: NOP
71 00B7: BCF 03.5
72 00B8: RLF 26,F
73 00B9: BCF 07.4
74 00BA: BTFSS 03.0
75 00BB: GOTO 0C2
76 00BC: BSF 20.4
77 00BD: MOVF 20,W
78 00BE: BSF 03.5
79 00BF: MOVWF 07
80 00C0: GOTO 0C6
81 00C1: BCF 03.5
82 00C2: BCF 20.4
83 00C3: MOVF 20,W
84 00C4: BSF 03.5
85 00C5: MOVWF 07
86 00C6: NOP
87 00C7: BCF 03.5
88 00C8: BSF 20.3
89 00C9: MOVF 20,W
90 00CA: BSF 03.5
91 00CB: MOVWF 07
2908 kaklik 92 00CC: BCF 03.5
2909 kaklik 93 00CD: BTFSS 07.3
94 00CE: GOTO 0CD
95 00CF: DECFSZ 78,F
96 00D0: GOTO 0B0
97 00D1: NOP
98 00D2: BCF 07.3
99 00D3: BCF 20.3
100 00D4: MOVF 20,W
101 00D5: BSF 03.5
102 00D6: MOVWF 07
103 00D7: NOP
104 00D8: BCF 03.5
105 00D9: BSF 20.4
2908 kaklik 106 00DA: MOVF 20,W
107 00DB: BSF 03.5
108 00DC: MOVWF 07
2909 kaklik 109 00DD: NOP
110 00DE: NOP
111 00DF: BCF 03.5
112 00E0: BSF 20.3
113 00E1: MOVF 20,W
114 00E2: BSF 03.5
115 00E3: MOVWF 07
116 00E4: BCF 03.5
117 00E5: BTFSS 07.3
118 00E6: GOTO 0E5
119 00E7: CLRF 78
120 00E8: NOP
121 00E9: BTFSC 07.4
122 00EA: BSF 78.0
123 00EB: BCF 07.3
124 00EC: BCF 20.3
125 00ED: MOVF 20,W
126 00EE: BSF 03.5
127 00EF: MOVWF 07
128 00F0: BCF 03.5
129 00F1: BCF 07.4
130 00F2: BCF 20.4
131 00F3: MOVF 20,W
132 00F4: BSF 03.5
133 00F5: MOVWF 07
134 00F6: BCF 03.5
135 00F7: RETURN
136 00F8: MOVLW 08
137 00F9: MOVWF 27
138 00FA: MOVF 77,W
139 00FB: MOVWF 28
140 00FC: BSF 20.4
2908 kaklik 141 00FD: MOVF 20,W
2906 jacho 142 00FE: BSF 03.5
2908 kaklik 143 00FF: MOVWF 07
2909 kaklik 144 0100: NOP
145 0101: BCF 03.5
146 0102: BSF 20.3
147 0103: MOVF 20,W
148 0104: BSF 03.5
149 0105: MOVWF 07
150 0106: BCF 03.5
151 0107: BTFSS 07.3
152 0108: GOTO 107
153 0109: BTFSC 07.4
154 010A: BSF 03.0
155 010B: BTFSS 07.4
156 010C: BCF 03.0
157 010D: RLF 78,F
158 010E: NOP
159 010F: BCF 20.3
160 0110: MOVF 20,W
161 0111: BSF 03.5
162 0112: MOVWF 07
163 0113: BCF 03.5
164 0114: BCF 07.3
165 0115: DECFSZ 27,F
166 0116: GOTO 0FC
167 0117: BSF 20.4
168 0118: MOVF 20,W
169 0119: BSF 03.5
170 011A: MOVWF 07
2908 kaklik 171 011B: NOP
2909 kaklik 172 011C: BCF 03.5
173 011D: BCF 07.4
174 011E: MOVF 28,W
175 011F: BTFSC 03.2
176 0120: GOTO 126
177 0121: BCF 20.4
178 0122: MOVF 20,W
179 0123: BSF 03.5
180 0124: MOVWF 07
181 0125: BCF 03.5
182 0126: NOP
183 0127: BSF 20.3
184 0128: MOVF 20,W
185 0129: BSF 03.5
186 012A: MOVWF 07
187 012B: BCF 03.5
188 012C: BTFSS 07.3
189 012D: GOTO 12C
190 012E: NOP
191 012F: BCF 07.3
192 0130: BCF 20.3
193 0131: MOVF 20,W
194 0132: BSF 03.5
195 0133: MOVWF 07
196 0134: NOP
197 0135: BCF 03.5
198 0136: BCF 07.4
199 0137: BCF 20.4
200 0138: MOVF 20,W
201 0139: BSF 03.5
202 013A: MOVWF 07
203 013B: BCF 03.5
204 013C: RETURN
205 .................... #use rs232(baud=9600,parity=N,xmit=PIN_B7,rcv=PIN_B6,bits=8) //rcv TXD xmit RXD
2906 jacho 206 *
2909 kaklik 207 0030: BSF 03.5
208 0031: BCF 06.7
209 0032: BCF 03.5
210 0033: BCF 06.7
211 0034: MOVLW 08
212 0035: MOVWF 78
213 0036: GOTO 037
214 0037: NOP
215 0038: BSF 78.7
216 0039: GOTO 048
217 003A: BCF 78.7
218 003B: RRF 32,F
219 003C: BTFSC 03.0
220 003D: BSF 06.7
221 003E: BTFSS 03.0
222 003F: BCF 06.7
223 0040: BSF 78.6
224 0041: GOTO 048
225 0042: BCF 78.6
226 0043: DECFSZ 78,F
227 0044: GOTO 03B
228 0045: GOTO 046
229 0046: NOP
230 0047: BSF 06.7
231 0048: MOVLW 3F
232 0049: MOVWF 04
233 004A: DECFSZ 04,F
234 004B: GOTO 04A
235 004C: NOP
236 004D: BTFSC 78.7
237 004E: GOTO 03A
238 004F: BTFSC 78.6
239 0050: GOTO 042
240 0051: RETURN
2906 jacho 241 ....................
242 ....................
2908 kaklik 243 ....................
2909 kaklik 244 .................... void SHT25_soft_reset()
2906 jacho 245 .................... {
2909 kaklik 246 .................... i2c_start(); // Start condition
247 .................... i2c_write(0x80); // Device address
248 .................... i2c_write(0xFE); // Device command
249 .................... i2c_stop(); // Stop condition
250 .................... }
2906 jacho 251 ....................
2909 kaklik 252 .................... unsigned int8 SHT25_setup()
253 .................... {
254 .................... unsigned int8 reg;
255 ....................
256 .................... i2c_start(); // Start condition
2906 jacho 257 *
2909 kaklik 258 013D: BSF 20.4
259 013E: MOVF 20,W
260 013F: BSF 03.5
261 0140: MOVWF 07
262 0141: NOP
263 0142: BCF 03.5
264 0143: BSF 20.3
265 0144: MOVF 20,W
266 0145: BSF 03.5
267 0146: MOVWF 07
268 0147: NOP
269 0148: BCF 03.5
270 0149: BCF 07.4
271 014A: BCF 20.4
272 014B: MOVF 20,W
273 014C: BSF 03.5
274 014D: MOVWF 07
275 014E: NOP
276 014F: BCF 03.5
277 0150: BCF 07.3
278 0151: BCF 20.3
279 0152: MOVF 20,W
280 0153: BSF 03.5
281 0154: MOVWF 07
282 .................... i2c_write(0x80); // Device address
283 0155: MOVLW 80
284 0156: BCF 03.5
285 0157: MOVWF 26
286 0158: CALL 0AE
287 .................... i2c_write(0xE7); // Device command
288 0159: MOVLW E7
289 015A: MOVWF 26
290 015B: CALL 0AE
2906 jacho 291 ....................
2909 kaklik 292 .................... i2c_start(); // Start condition
293 015C: BSF 20.4
294 015D: MOVF 20,W
295 015E: BSF 03.5
296 015F: MOVWF 07
297 0160: NOP
298 0161: BCF 03.5
299 0162: BSF 20.3
300 0163: MOVF 20,W
301 0164: BSF 03.5
302 0165: MOVWF 07
303 0166: NOP
304 0167: BCF 03.5
305 0168: BTFSS 07.3
306 0169: GOTO 168
307 016A: BCF 07.4
308 016B: BCF 20.4
309 016C: MOVF 20,W
310 016D: BSF 03.5
311 016E: MOVWF 07
312 016F: NOP
313 0170: BCF 03.5
314 0171: BCF 07.3
315 0172: BCF 20.3
316 0173: MOVF 20,W
317 0174: BSF 03.5
318 0175: MOVWF 07
319 .................... i2c_write(0x81); // Device address
320 0176: MOVLW 81
321 0177: BCF 03.5
322 0178: MOVWF 26
323 0179: CALL 0AE
324 .................... reg=i2c_read(0); // Device command
325 017A: CLRF 77
326 017B: CALL 0F8
327 017C: MOVF 78,W
328 017D: MOVWF 21
329 .................... i2c_stop(); // Stop condition
330 017E: BCF 20.4
331 017F: MOVF 20,W
332 0180: BSF 03.5
333 0181: MOVWF 07
334 0182: NOP
335 0183: BCF 03.5
336 0184: BSF 20.3
337 0185: MOVF 20,W
338 0186: BSF 03.5
339 0187: MOVWF 07
340 0188: BCF 03.5
341 0189: BTFSS 07.3
342 018A: GOTO 189
343 018B: NOP
344 018C: GOTO 18D
345 018D: NOP
346 018E: BSF 20.4
347 018F: MOVF 20,W
348 0190: BSF 03.5
349 0191: MOVWF 07
350 0192: NOP
2906 jacho 351 ....................
2909 kaklik 352 .................... return (reg);
353 0193: BCF 03.5
354 0194: MOVF 21,W
355 0195: MOVWF 78
356 .................... }
357 0196: BSF 0A.3
358 0197: BCF 0A.4
359 0198: GOTO 075 (RETURN)
2906 jacho 360 ....................
2909 kaklik 361 .................... float SHT25_get_temp()
362 .................... {
363 .................... unsigned int8 MSB, LSB, Check;
364 .................... unsigned int16 data;
2906 jacho 365 ....................
2909 kaklik 366 .................... i2c_start();
367 *
368 04A8: BSF 20.4
369 04A9: MOVF 20,W
370 04AA: BSF 03.5
371 04AB: MOVWF 07
372 04AC: NOP
373 04AD: BCF 03.5
374 04AE: BSF 20.3
375 04AF: MOVF 20,W
376 04B0: BSF 03.5
377 04B1: MOVWF 07
378 04B2: NOP
379 04B3: BCF 03.5
380 04B4: BCF 07.4
381 04B5: BCF 20.4
382 04B6: MOVF 20,W
383 04B7: BSF 03.5
384 04B8: MOVWF 07
385 04B9: NOP
386 04BA: BCF 03.5
387 04BB: BCF 07.3
388 04BC: BCF 20.3
389 04BD: MOVF 20,W
390 04BE: BSF 03.5
391 04BF: MOVWF 07
392 .................... I2C_Write(0x80);
393 04C0: MOVLW 80
394 04C1: BCF 03.5
395 04C2: MOVWF 26
396 04C3: CALL 0AE
397 .................... I2C_write(0xE3);
398 04C4: MOVLW E3
399 04C5: MOVWF 26
400 04C6: CALL 0AE
2906 jacho 401 .................... i2c_stop();
2909 kaklik 402 04C7: BCF 20.4
403 04C8: MOVF 20,W
404 04C9: BSF 03.5
405 04CA: MOVWF 07
406 04CB: NOP
407 04CC: BCF 03.5
408 04CD: BSF 20.3
409 04CE: MOVF 20,W
410 04CF: BSF 03.5
411 04D0: MOVWF 07
412 04D1: BCF 03.5
413 04D2: BTFSS 07.3
414 04D3: GOTO 4D2
415 04D4: NOP
416 04D5: GOTO 4D6
417 04D6: NOP
418 04D7: BSF 20.4
419 04D8: MOVF 20,W
420 04D9: BSF 03.5
421 04DA: MOVWF 07
422 04DB: NOP
423 ....................
424 .................... delay_ms(100);
425 04DC: MOVLW 64
426 04DD: BCF 03.5
427 04DE: MOVWF 26
428 04DF: CALL 09A
2906 jacho 429 ....................
430 .................... i2c_start();
2909 kaklik 431 04E0: BSF 20.4
432 04E1: MOVF 20,W
433 04E2: BSF 03.5
434 04E3: MOVWF 07
435 04E4: NOP
436 04E5: BCF 03.5
437 04E6: BSF 20.3
438 04E7: MOVF 20,W
439 04E8: BSF 03.5
440 04E9: MOVWF 07
441 04EA: NOP
442 04EB: BCF 03.5
443 04EC: BCF 07.4
444 04ED: BCF 20.4
445 04EE: MOVF 20,W
446 04EF: BSF 03.5
447 04F0: MOVWF 07
448 04F1: NOP
449 04F2: BCF 03.5
450 04F3: BCF 07.3
451 04F4: BCF 20.3
452 04F5: MOVF 20,W
453 04F6: BSF 03.5
454 04F7: MOVWF 07
2906 jacho 455 .................... I2C_Write(0x81);
2909 kaklik 456 04F8: MOVLW 81
457 04F9: BCF 03.5
458 04FA: MOVWF 26
459 04FB: CALL 0AE
460 .................... MSB=i2c_read(1);
461 04FC: MOVLW 01
462 04FD: MOVWF 77
463 04FE: CALL 0F8
464 04FF: MOVF 78,W
465 0500: MOVWF 21
466 .................... LSB=i2c_read(1);
467 0501: MOVLW 01
468 0502: MOVWF 77
469 0503: CALL 0F8
470 0504: MOVF 78,W
471 0505: MOVWF 22
472 .................... Check=i2c_read(0);
473 0506: CLRF 77
474 0507: CALL 0F8
475 0508: MOVF 78,W
476 0509: MOVWF 23
477 .................... i2c_stop();
478 050A: BCF 20.4
479 050B: MOVF 20,W
480 050C: BSF 03.5
481 050D: MOVWF 07
482 050E: NOP
483 050F: BCF 03.5
484 0510: BSF 20.3
485 0511: MOVF 20,W
486 0512: BSF 03.5
487 0513: MOVWF 07
488 0514: BCF 03.5
489 0515: BTFSS 07.3
490 0516: GOTO 515
491 0517: NOP
492 0518: GOTO 519
493 0519: NOP
494 051A: BSF 20.4
495 051B: MOVF 20,W
496 051C: BSF 03.5
497 051D: MOVWF 07
498 051E: NOP
499 ....................
500 .................... LSB = LSB >> 2; // trow out status bits
501 051F: BCF 03.5
502 0520: RRF 22,F
503 0521: RRF 22,F
504 0522: MOVLW 3F
505 0523: ANDWF 22,F
2906 jacho 506 ....................
2909 kaklik 507 .................... data = (((unsigned int16) MSB << 8) + (LSB << 4));
508 0524: CLRF 27
509 0525: MOVF 21,W
510 0526: MOVWF 26
511 0527: MOVWF 27
512 0528: CLRF 26
513 0529: SWAPF 22,W
514 052A: MOVWF 77
515 052B: MOVLW F0
516 052C: ANDWF 77,F
517 052D: MOVF 77,W
518 052E: ADDWF 26,W
519 052F: MOVWF 24
520 0530: MOVF 27,W
521 0531: MOVWF 25
522 0532: BTFSC 03.0
523 0533: INCF 25,F
524 .................... return(-46.85 + 175.72*((float)data/0xFFFF));
525 0534: MOVF 25,W
526 0535: MOVWF 27
527 0536: MOVF 24,W
528 0537: MOVWF 26
529 0538: CALL 20B
530 0539: MOVF 77,W
531 053A: MOVWF 26
532 053B: MOVF 78,W
533 053C: MOVWF 27
534 053D: MOVF 79,W
535 053E: MOVWF 28
536 053F: MOVF 7A,W
537 0540: MOVWF 29
538 0541: MOVWF 2D
539 0542: MOVF 79,W
540 0543: MOVWF 2C
541 0544: MOVF 78,W
542 0545: MOVWF 2B
543 0546: MOVF 77,W
544 0547: MOVWF 2A
545 0548: CLRF 31
546 0549: MOVLW FF
547 054A: MOVWF 30
548 054B: MOVLW 7F
549 054C: MOVWF 2F
550 054D: MOVLW 8E
551 054E: MOVWF 2E
552 054F: CALL 228
553 0550: MOVLW 52
554 0551: MOVWF 35
555 0552: MOVLW B8
556 0553: MOVWF 34
557 0554: MOVLW 2F
558 0555: MOVWF 33
559 0556: MOVLW 86
560 0557: MOVWF 32
561 0558: MOVF 7A,W
562 0559: MOVWF 39
563 055A: MOVF 79,W
564 055B: MOVWF 38
565 055C: MOVF 78,W
566 055D: MOVWF 37
567 055E: MOVF 77,W
568 055F: MOVWF 36
569 0560: CALL 2F2
570 0561: BCF 03.1
571 0562: MOVLW 66
572 0563: MOVWF 29
573 0564: MOVWF 28
574 0565: MOVLW BB
575 0566: MOVWF 27
576 0567: MOVLW 84
577 0568: MOVWF 26
578 0569: MOVF 7A,W
579 056A: MOVWF 2D
580 056B: MOVF 79,W
581 056C: MOVWF 2C
582 056D: MOVF 78,W
583 056E: MOVWF 2B
584 056F: MOVF 77,W
585 0570: MOVWF 2A
586 0571: CALL 367
587 .................... }
588 0572: BSF 0A.3
589 0573: BCF 0A.4
590 0574: GOTO 0A5 (RETURN)
591 ....................
592 .................... float SHT25_get_hum()
593 .................... {
594 .................... unsigned int8 MSB, LSB, Check;
595 .................... unsigned int16 data;
596 ....................
597 .................... i2c_start(); //RH
598 *
599 069E: BSF 20.4
600 069F: MOVF 20,W
601 06A0: BSF 03.5
602 06A1: MOVWF 07
603 06A2: NOP
604 06A3: BCF 03.5
605 06A4: BSF 20.3
606 06A5: MOVF 20,W
607 06A6: BSF 03.5
608 06A7: MOVWF 07
609 06A8: NOP
610 06A9: BCF 03.5
611 06AA: BCF 07.4
612 06AB: BCF 20.4
613 06AC: MOVF 20,W
614 06AD: BSF 03.5
615 06AE: MOVWF 07
616 06AF: NOP
617 06B0: BCF 03.5
618 06B1: BCF 07.3
619 06B2: BCF 20.3
620 06B3: MOVF 20,W
621 06B4: BSF 03.5
622 06B5: MOVWF 07
2906 jacho 623 .................... I2C_Write(0x80);
2909 kaklik 624 06B6: MOVLW 80
625 06B7: BCF 03.5
626 06B8: MOVWF 26
627 06B9: CALL 0AE
628 .................... I2C_write(0xE5);
629 06BA: MOVLW E5
630 06BB: MOVWF 26
631 06BC: CALL 0AE
632 .................... // i2c_stop();
633 ....................
634 .................... delay_ms(100);
635 06BD: MOVLW 64
636 06BE: MOVWF 26
637 06BF: CALL 09A
638 ....................
2906 jacho 639 .................... i2c_start();
2909 kaklik 640 06C0: BSF 20.4
641 06C1: MOVF 20,W
642 06C2: BSF 03.5
643 06C3: MOVWF 07
644 06C4: NOP
645 06C5: BCF 03.5
646 06C6: BSF 20.3
647 06C7: MOVF 20,W
648 06C8: BSF 03.5
649 06C9: MOVWF 07
650 06CA: NOP
651 06CB: BCF 03.5
652 06CC: BTFSS 07.3
653 06CD: GOTO 6CC
654 06CE: BCF 07.4
655 06CF: BCF 20.4
656 06D0: MOVF 20,W
657 06D1: BSF 03.5
658 06D2: MOVWF 07
659 06D3: NOP
660 06D4: BCF 03.5
661 06D5: BCF 07.3
662 06D6: BCF 20.3
663 06D7: MOVF 20,W
664 06D8: BSF 03.5
665 06D9: MOVWF 07
2906 jacho 666 .................... I2C_Write(0x81);
2909 kaklik 667 06DA: MOVLW 81
668 06DB: BCF 03.5
669 06DC: MOVWF 26
670 06DD: CALL 0AE
671 .................... MSB=i2c_read(1);
672 06DE: MOVLW 01
673 06DF: MOVWF 77
674 06E0: CALL 0F8
675 06E1: MOVF 78,W
676 06E2: MOVWF 21
677 .................... LSB=i2c_read(1);
678 06E3: MOVLW 01
679 06E4: MOVWF 77
680 06E5: CALL 0F8
681 06E6: MOVF 78,W
682 06E7: MOVWF 22
683 .................... Check=i2c_read(0);
684 06E8: CLRF 77
685 06E9: CALL 0F8
686 06EA: MOVF 78,W
687 06EB: MOVWF 23
688 .................... i2c_stop();
689 06EC: BCF 20.4
690 06ED: MOVF 20,W
691 06EE: BSF 03.5
692 06EF: MOVWF 07
693 06F0: NOP
694 06F1: BCF 03.5
695 06F2: BSF 20.3
696 06F3: MOVF 20,W
697 06F4: BSF 03.5
698 06F5: MOVWF 07
699 06F6: BCF 03.5
700 06F7: BTFSS 07.3
701 06F8: GOTO 6F7
702 06F9: NOP
703 06FA: GOTO 6FB
704 06FB: NOP
705 06FC: BSF 20.4
706 06FD: MOVF 20,W
707 06FE: BSF 03.5
708 06FF: MOVWF 07
709 0700: NOP
2906 jacho 710 ....................
2909 kaklik 711 .................... // printf("%X %X %X\r\n",MSB, LSB, Check);
2906 jacho 712 ....................
2909 kaklik 713 .................... LSB = LSB >> 2; // trow out status bits
714 0701: BCF 03.5
715 0702: RRF 22,F
716 0703: RRF 22,F
717 0704: MOVLW 3F
718 0705: ANDWF 22,F
2906 jacho 719 ....................
2909 kaklik 720 .................... data = (((unsigned int16) MSB << 8) + (LSB << 4) );
721 0706: CLRF 27
722 0707: MOVF 21,W
723 0708: MOVWF 26
724 0709: MOVWF 27
725 070A: CLRF 26
726 070B: SWAPF 22,W
727 070C: MOVWF 77
728 070D: MOVLW F0
729 070E: ANDWF 77,F
730 070F: MOVF 77,W
731 0710: ADDWF 26,W
732 0711: MOVWF 24
733 0712: MOVF 27,W
734 0713: MOVWF 25
735 0714: BTFSC 03.0
736 0715: INCF 25,F
737 .................... return( -6.0 + 125.0*((float)data/0xFFFF));
738 0716: MOVF 25,W
739 0717: MOVWF 27
740 0718: MOVF 24,W
741 0719: MOVWF 26
742 071A: CALL 20B
743 071B: MOVF 77,W
744 071C: MOVWF 26
745 071D: MOVF 78,W
746 071E: MOVWF 27
747 071F: MOVF 79,W
748 0720: MOVWF 28
749 0721: MOVF 7A,W
750 0722: MOVWF 29
751 0723: MOVWF 2D
752 0724: MOVF 79,W
753 0725: MOVWF 2C
754 0726: MOVF 78,W
755 0727: MOVWF 2B
756 0728: MOVF 77,W
757 0729: MOVWF 2A
758 072A: CLRF 31
759 072B: MOVLW FF
760 072C: MOVWF 30
761 072D: MOVLW 7F
762 072E: MOVWF 2F
763 072F: MOVLW 8E
764 0730: MOVWF 2E
765 0731: CALL 228
766 0732: CLRF 35
767 0733: CLRF 34
768 0734: MOVLW 7A
769 0735: MOVWF 33
770 0736: MOVLW 85
771 0737: MOVWF 32
772 0738: MOVF 7A,W
773 0739: MOVWF 39
774 073A: MOVF 79,W
775 073B: MOVWF 38
776 073C: MOVF 78,W
777 073D: MOVWF 37
778 073E: MOVF 77,W
779 073F: MOVWF 36
780 0740: CALL 2F2
781 0741: BCF 03.1
782 0742: CLRF 29
783 0743: CLRF 28
784 0744: MOVLW C0
785 0745: MOVWF 27
786 0746: MOVLW 81
787 0747: MOVWF 26
788 0748: MOVF 7A,W
789 0749: MOVWF 2D
790 074A: MOVF 79,W
791 074B: MOVWF 2C
792 074C: MOVF 78,W
793 074D: MOVWF 2B
794 074E: MOVF 77,W
795 074F: MOVWF 2A
796 0750: CALL 367
797 .................... }
798 0751: BSF 0A.3
799 0752: BCF 0A.4
800 0753: GOTO 0E3 (RETURN)
2906 jacho 801 ....................
802 ....................
2909 kaklik 803 .................... void main()
804 .................... {
805 *
806 002F: DATA 00,00
807 *
808 0800: CLRF 04
809 0801: BCF 03.7
810 0802: MOVLW 1F
811 0803: ANDWF 03,F
812 0804: MOVLW 71
813 0805: BSF 03.5
814 0806: MOVWF 0F
815 0807: MOVF 0F,W
816 0808: BCF 06.7
817 0809: BCF 03.5
818 080A: BSF 06.7
819 080B: BSF 03.5
820 080C: BSF 03.6
821 080D: MOVF 09,W
822 080E: ANDLW C0
823 080F: MOVWF 09
824 0810: BCF 03.6
825 0811: BCF 1F.4
826 0812: BCF 1F.5
827 0813: MOVLW 00
828 0814: BSF 03.6
829 0815: MOVWF 08
830 0816: BCF 03.5
831 0817: CLRF 07
832 0818: CLRF 08
833 0819: CLRF 09
2906 jacho 834 ....................
2909 kaklik 835 .................... setup_adc_ports(NO_ANALOGS|VSS_VDD);
836 *
837 081D: BSF 03.5
838 081E: BSF 03.6
839 081F: MOVF 09,W
840 0820: ANDLW C0
841 0821: MOVWF 09
842 0822: BCF 03.6
843 0823: BCF 1F.4
844 0824: BCF 1F.5
845 0825: MOVLW 00
846 0826: BSF 03.6
847 0827: MOVWF 08
848 .................... setup_adc(ADC_CLOCK_DIV_2);
849 0828: BCF 03.5
850 0829: BCF 03.6
851 082A: BCF 1F.6
852 082B: BCF 1F.7
853 082C: BSF 03.5
854 082D: BCF 1F.7
855 082E: BCF 03.5
856 082F: BSF 1F.0
857 .................... setup_spi(SPI_SS_DISABLED);
858 0830: BCF 14.5
859 0831: BCF 20.5
860 0832: MOVF 20,W
861 0833: BSF 03.5
862 0834: MOVWF 07
863 0835: BCF 03.5
864 0836: BSF 20.4
865 0837: MOVF 20,W
866 0838: BSF 03.5
867 0839: MOVWF 07
868 083A: BCF 03.5
869 083B: BCF 20.3
870 083C: MOVF 20,W
871 083D: BSF 03.5
872 083E: MOVWF 07
873 083F: MOVLW 01
874 0840: BCF 03.5
875 0841: MOVWF 14
876 0842: MOVLW 00
877 0843: BSF 03.5
878 0844: MOVWF 14
879 .................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
880 0845: MOVF 01,W
881 0846: ANDLW C7
882 0847: IORLW 08
883 0848: MOVWF 01
884 .................... setup_timer_1(T1_DISABLED);
885 0849: BCF 03.5
886 084A: CLRF 10
887 .................... setup_timer_2(T2_DISABLED,0,1);
888 084B: MOVLW 00
889 084C: MOVWF 78
890 084D: MOVWF 12
891 084E: MOVLW 00
892 084F: BSF 03.5
893 0850: MOVWF 12
894 .................... setup_ccp1(CCP_OFF);
895 0851: BCF 03.5
896 0852: BSF 20.2
897 0853: MOVF 20,W
898 0854: BSF 03.5
899 0855: MOVWF 07
900 0856: BCF 03.5
901 0857: CLRF 17
902 0858: BSF 03.5
903 0859: CLRF 1B
904 085A: CLRF 1C
905 085B: MOVLW 01
906 085C: MOVWF 1D
907 .................... setup_comparator(NC_NC_NC_NC);
908 085D: BCF 03.5
909 085E: BSF 03.6
910 085F: CLRF 07
911 0860: CLRF 08
912 0861: CLRF 09
913 ....................
914 .................... void SHT25_soft_reset();
915 .................... printf("SHT25 humidity and temperature sensor example \r\n",);
916 0862: MOVLW 04
917 0863: MOVWF 0D
918 0864: MOVLW 00
919 0865: MOVWF 0F
920 0866: BCF 0A.3
921 0867: BCF 03.6
922 0868: GOTO 052
923 0869: BSF 0A.3
924 .................... delay_ms (500);
925 086A: MOVLW 02
926 086B: MOVWF 21
927 086C: MOVLW FA
928 086D: MOVWF 26
929 086E: BCF 0A.3
930 086F: CALL 09A
931 0870: BSF 0A.3
932 0871: DECFSZ 21,F
933 0872: GOTO 06C
934 ....................
935 .................... while(TRUE)
936 .................... {
937 .................... printf("setup: %X \r\n",SHT25_setup());
938 0873: BCF 0A.3
939 0874: GOTO 13D
940 0875: BSF 0A.3
941 0876: MOVF 78,W
942 0877: MOVWF 21
943 0878: MOVLW 1D
944 0879: BSF 03.6
945 087A: MOVWF 0D
946 087B: MOVLW 00
947 087C: MOVWF 0F
948 087D: BCF 03.0
949 087E: MOVLW 07
950 087F: BCF 03.6
951 0880: MOVWF 25
952 0881: BCF 0A.3
953 0882: CALL 199
954 0883: BSF 0A.3
955 0884: MOVF 21,W
956 0885: MOVWF 22
957 0886: MOVLW 37
958 0887: MOVWF 23
959 0888: BCF 0A.3
960 0889: GOTO 1E8
961 088A: BSF 0A.3
962 088B: MOVLW 20
963 088C: MOVWF 32
964 088D: BCF 0A.3
965 088E: CALL 030
966 088F: BSF 0A.3
967 0890: MOVLW 0D
968 0891: MOVWF 32
969 0892: BCF 0A.3
970 0893: CALL 030
971 0894: BSF 0A.3
972 0895: MOVLW 0A
973 0896: MOVWF 32
974 0897: BCF 0A.3
975 0898: CALL 030
976 0899: BSF 0A.3
977 .................... delay_ms (500);
978 089A: MOVLW 02
979 089B: MOVWF 21
980 089C: MOVLW FA
981 089D: MOVWF 26
982 089E: BCF 0A.3
983 089F: CALL 09A
984 08A0: BSF 0A.3
985 08A1: DECFSZ 21,F
986 08A2: GOTO 09C
987 .................... printf("Temp: %f \r\n",SHT25_get_temp());
988 08A3: BCF 0A.3
989 08A4: GOTO 4A8
990 08A5: BSF 0A.3
991 08A6: MOVF 77,W
992 08A7: MOVWF 21
993 08A8: MOVF 78,W
994 08A9: MOVWF 22
995 08AA: MOVF 79,W
996 08AB: MOVWF 23
997 08AC: MOVF 7A,W
998 08AD: MOVWF 24
999 08AE: MOVLW 24
1000 08AF: BSF 03.6
1001 08B0: MOVWF 0D
1002 08B1: MOVLW 00
1003 08B2: MOVWF 0F
1004 08B3: BCF 03.0
1005 08B4: MOVLW 06
1006 08B5: BCF 03.6
1007 08B6: MOVWF 25
1008 08B7: BCF 0A.3
1009 08B8: CALL 199
1010 08B9: BSF 0A.3
1011 08BA: MOVLW 89
1012 08BB: MOVWF 04
1013 08BC: MOVF 24,W
1014 08BD: MOVWF 28
1015 08BE: MOVF 23,W
1016 08BF: MOVWF 27
1017 08C0: MOVF 22,W
1018 08C1: MOVWF 26
1019 08C2: MOVF 21,W
1020 08C3: MOVWF 25
1021 08C4: MOVLW 02
1022 08C5: MOVWF 29
1023 08C6: BCF 0A.3
1024 08C7: CALL 5B7
1025 08C8: BSF 0A.3
1026 08C9: MOVLW 20
1027 08CA: MOVWF 32
1028 08CB: BCF 0A.3
1029 08CC: CALL 030
1030 08CD: BSF 0A.3
1031 08CE: MOVLW 0D
1032 08CF: MOVWF 32
1033 08D0: BCF 0A.3
1034 08D1: CALL 030
1035 08D2: BSF 0A.3
1036 08D3: MOVLW 0A
1037 08D4: MOVWF 32
1038 08D5: BCF 0A.3
1039 08D6: CALL 030
1040 08D7: BSF 0A.3
1041 .................... delay_ms (500);
1042 08D8: MOVLW 02
1043 08D9: MOVWF 21
1044 08DA: MOVLW FA
1045 08DB: MOVWF 26
1046 08DC: BCF 0A.3
1047 08DD: CALL 09A
1048 08DE: BSF 0A.3
1049 08DF: DECFSZ 21,F
1050 08E0: GOTO 0DA
1051 .................... printf("Hum: %f \r\n",SHT25_get_hum());
1052 08E1: BCF 0A.3
1053 08E2: GOTO 69E
1054 08E3: BSF 0A.3
1055 08E4: MOVF 77,W
1056 08E5: MOVWF 21
1057 08E6: MOVF 78,W
1058 08E7: MOVWF 22
1059 08E8: MOVF 79,W
1060 08E9: MOVWF 23
1061 08EA: MOVF 7A,W
1062 08EB: MOVWF 24
1063 08EC: MOVLW 2A
1064 08ED: BSF 03.6
1065 08EE: MOVWF 0D
1066 08EF: MOVLW 00
1067 08F0: MOVWF 0F
1068 08F1: BCF 03.0
1069 08F2: MOVLW 05
1070 08F3: BCF 03.6
1071 08F4: MOVWF 25
1072 08F5: BCF 0A.3
1073 08F6: CALL 199
1074 08F7: BSF 0A.3
1075 08F8: MOVLW 89
1076 08F9: MOVWF 04
1077 08FA: MOVF 24,W
1078 08FB: MOVWF 28
1079 08FC: MOVF 23,W
1080 08FD: MOVWF 27
1081 08FE: MOVF 22,W
1082 08FF: MOVWF 26
1083 0900: MOVF 21,W
1084 0901: MOVWF 25
1085 0902: MOVLW 02
1086 0903: MOVWF 29
1087 0904: BCF 0A.3
1088 0905: CALL 5B7
1089 0906: BSF 0A.3
1090 0907: MOVLW 20
1091 0908: MOVWF 32
1092 0909: BCF 0A.3
1093 090A: CALL 030
1094 090B: BSF 0A.3
1095 090C: MOVLW 0D
1096 090D: MOVWF 32
1097 090E: BCF 0A.3
1098 090F: CALL 030
1099 0910: BSF 0A.3
1100 0911: MOVLW 0A
1101 0912: MOVWF 32
1102 0913: BCF 0A.3
1103 0914: CALL 030
1104 0915: BSF 0A.3
1105 .................... delay_ms (1000);
1106 0916: MOVLW 04
1107 0917: MOVWF 21
1108 0918: MOVLW FA
1109 0919: MOVWF 26
1110 091A: BCF 0A.3
1111 091B: CALL 09A
1112 091C: BSF 0A.3
1113 091D: DECFSZ 21,F
1114 091E: GOTO 118
1115 .................... }
1116 091F: GOTO 073
2906 jacho 1117 .................... }
1118 ....................
2909 kaklik 1119 0920: SLEEP
2906 jacho 1120  
1121 Configuration Fuses:
2909 kaklik 1122 Word 1: 2CF4 INTRC_IO NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUG
2906 jacho 1123 Word 2: 3FFF NOWRT BORV40