Rev Author Line No. Line
2948 kaklik 1 CCS PCM C Compiler, Version 4.106, 47914 07-V-13 01:35
2917 jacho 2  
2948 kaklik 3 Filename: Z:\home\kaklik\svnMLAB\Modules\Sensors\ALTIMET01A\SW\MPL3115\PIC16F887\main.lst
2917 jacho 4  
5 ROM used: 2238 words (27%)
6 Largest free fragment is 2048
7 RAM used: 18 (5%) at main() level
8 55 (15%) worst case
9 Stack: 3 locations
10  
11 *
12 0000: MOVLW 08
13 0001: MOVWF 0A
14 0002: GOTO 000
15 0003: NOP
2948 kaklik 16 .................... //Jan Chroust 15.4.2013
17 ....................
18 ....................
19 .................... #include "main.h"
2917 jacho 20 .................... #include <16F887.h>
21 .................... //////// Standard Header file for the PIC16F887 device ////////////////
22 .................... #device PIC16F887
23 .................... #list
24 ....................
25 .................... #device adc=8
26 ....................
27 .................... #FUSES NOWDT //No Watch Dog Timer
28 .................... #FUSES INTRC //Internal RC Osc
29 .................... #FUSES NOPUT //No Power Up Timer
30 .................... #FUSES MCLR //Master Clear pin enabled
31 .................... #FUSES NOPROTECT //Code not protected from reading
32 .................... #FUSES NOCPD //No EE protection
33 .................... #FUSES NOBROWNOUT //No brownout reset
34 .................... #FUSES IESO //Internal External Switch Over mode enabled
35 .................... #FUSES FCMEN //Fail-safe clock monitor enabled
36 .................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
37 .................... #FUSES NODEBUG //No Debug mode for ICD
38 .................... #FUSES NOWRT //Program memory not write protected
39 .................... #FUSES BORV40 //Brownout reset at 4.0V
40 ....................
41 .................... #use delay(clock=8000000)
42 *
43 014A: MOVLW 2E
44 014B: MOVWF 04
45 014C: BCF 03.7
46 014D: MOVF 00,W
47 014E: BTFSC 03.2
48 014F: GOTO 15D
49 0150: MOVLW 02
50 0151: MOVWF 78
51 0152: CLRF 77
52 0153: DECFSZ 77,F
53 0154: GOTO 153
54 0155: DECFSZ 78,F
55 0156: GOTO 152
56 0157: MOVLW 97
57 0158: MOVWF 77
58 0159: DECFSZ 77,F
59 015A: GOTO 159
60 015B: DECFSZ 00,F
61 015C: GOTO 150
62 015D: RETURN
63 ....................
64 ....................
65 ....................
66 .................... #define EEPROM_SDA PIN_B0
67 .................... #define EEPROM_SCL PIN_B1
68 .................... #use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)
69 *
70 00A5: MOVLW 08
71 00A6: MOVWF 78
72 00A7: NOP
73 00A8: BCF 06.1
74 00A9: BSF 03.5
75 00AA: BCF 06.1
76 00AB: NOP
77 00AC: BCF 03.5
78 00AD: RLF 3E,F
79 00AE: BCF 06.0
80 00AF: BTFSS 03.0
81 00B0: GOTO 0B4
82 00B1: BSF 03.5
83 00B2: BSF 06.0
84 00B3: BCF 03.5
85 00B4: BTFSC 03.0
86 00B5: GOTO 0B9
87 00B6: BSF 03.5
88 00B7: BCF 06.0
89 00B8: BCF 03.5
90 00B9: BSF 03.5
91 00BA: BSF 06.1
92 00BB: BCF 03.5
93 00BC: BTFSS 06.1
94 00BD: GOTO 0BC
95 00BE: DECFSZ 78,F
96 00BF: GOTO 0A7
97 00C0: NOP
98 00C1: BCF 06.1
99 00C2: BSF 03.5
100 00C3: BCF 06.1
101 00C4: NOP
102 00C5: BSF 06.0
103 00C6: NOP
104 00C7: NOP
105 00C8: BSF 06.1
106 00C9: BCF 03.5
107 00CA: BTFSS 06.1
108 00CB: GOTO 0CA
109 00CC: CLRF 78
110 00CD: NOP
111 00CE: BTFSC 06.0
112 00CF: BSF 78.0
113 00D0: BCF 06.1
114 00D1: BSF 03.5
115 00D2: BCF 06.1
116 00D3: BCF 03.5
117 00D4: BCF 06.0
118 00D5: BSF 03.5
119 00D6: BCF 06.0
120 00D7: BCF 03.5
121 00D8: RETURN
122 *
123 0188: MOVLW 08
124 0189: MOVWF 3F
125 018A: MOVF 77,W
126 018B: MOVWF 40
127 018C: BSF 03.5
128 018D: BSF 06.0
129 018E: NOP
130 018F: BSF 06.1
131 0190: BCF 03.5
132 0191: BTFSS 06.1
133 0192: GOTO 191
134 0193: BTFSC 06.0
135 0194: BSF 03.0
136 0195: BTFSS 06.0
137 0196: BCF 03.0
138 0197: RLF 78,F
139 0198: NOP
140 0199: BSF 03.5
141 019A: BCF 06.1
142 019B: BCF 03.5
143 019C: BCF 06.1
144 019D: DECFSZ 3F,F
145 019E: GOTO 18C
146 019F: BSF 03.5
147 01A0: BSF 06.0
148 01A1: NOP
149 01A2: BCF 03.5
150 01A3: BCF 06.0
151 01A4: MOVF 40,W
152 01A5: BTFSC 03.2
153 01A6: GOTO 1AA
154 01A7: BSF 03.5
155 01A8: BCF 06.0
156 01A9: BCF 03.5
157 01AA: NOP
158 01AB: BSF 03.5
159 01AC: BSF 06.1
160 01AD: BCF 03.5
161 01AE: BTFSS 06.1
162 01AF: GOTO 1AE
163 01B0: NOP
164 01B1: BCF 06.1
165 01B2: BSF 03.5
166 01B3: BCF 06.1
167 01B4: NOP
168 01B5: BCF 03.5
169 01B6: BCF 06.0
170 01B7: BSF 03.5
171 01B8: BCF 06.0
172 .................... #use rs232(baud=9600,parity=N,xmit=PIN_B3,rcv=PIN_B2,bits=8) //rcv TXD xmit RXD
173 *
174 003B: BSF 03.5
175 003C: BCF 06.3
176 003D: BCF 03.5
177 003E: BCF 06.3
178 003F: MOVLW 08
179 0040: MOVWF 78
180 0041: GOTO 042
181 0042: NOP
182 0043: BSF 78.7
183 0044: GOTO 053
184 0045: BCF 78.7
185 0046: RRF 3A,F
186 0047: BTFSC 03.0
187 0048: BSF 06.3
188 0049: BTFSS 03.0
189 004A: BCF 06.3
190 004B: BSF 78.6
191 004C: GOTO 053
192 004D: BCF 78.6
193 004E: DECFSZ 78,F
194 004F: GOTO 046
195 0050: GOTO 051
196 0051: NOP
197 0052: BSF 06.3
198 0053: MOVLW 3F
199 0054: MOVWF 04
200 0055: DECFSZ 04,F
201 0056: GOTO 055
202 0057: NOP
203 0058: BTFSC 78.7
204 0059: GOTO 045
205 005A: BTFSC 78.6
206 005B: GOTO 04D
207 005C: RETURN
208 ....................
2948 kaklik 209 .................... #define MPL3115_ADDR_R 0xC1 //addresa pro cteni
2917 jacho 210 .................... #define MPL3115_ADDR_W 0xC0
211 ....................
212 ....................
213 .................... void mpl3115_setA (void) //nastavení pro výšku
214 .................... {
215 ....................
216 ....................
217 .................... i2c_start(); //STANDBY mode
218 *
219 04F9: BSF 03.5
220 04FA: BSF 06.0
221 04FB: NOP
222 04FC: BSF 06.1
223 04FD: NOP
224 04FE: BCF 03.5
225 04FF: BCF 06.0
226 0500: BSF 03.5
227 0501: BCF 06.0
228 0502: NOP
229 0503: BCF 03.5
230 0504: BCF 06.1
231 0505: BSF 03.5
232 0506: BCF 06.1
233 .................... I2C_Write(MPL3115_ADDR_W);
234 0507: MOVLW C0
235 0508: BCF 03.5
236 0509: MOVWF 3E
237 050A: CALL 0A5
238 .................... I2C_write(0x26);
239 050B: MOVLW 26
240 050C: MOVWF 3E
241 050D: CALL 0A5
242 .................... I2C_write(0xB8);
243 050E: MOVLW B8
244 050F: MOVWF 3E
245 0510: CALL 0A5
246 .................... i2c_stop();
247 0511: BSF 03.5
248 0512: BCF 06.0
249 0513: NOP
250 0514: BSF 06.1
251 0515: BCF 03.5
252 0516: BTFSS 06.1
253 0517: GOTO 516
254 0518: NOP
255 0519: GOTO 51A
256 051A: NOP
257 051B: BSF 03.5
258 051C: BSF 06.0
259 051D: NOP
260 ....................
261 .................... i2c_start(); //PT_DATA_CFG set
262 051E: BSF 06.0
263 051F: NOP
264 0520: BSF 06.1
265 0521: NOP
266 0522: BCF 03.5
267 0523: BCF 06.0
268 0524: BSF 03.5
269 0525: BCF 06.0
270 0526: NOP
271 0527: BCF 03.5
272 0528: BCF 06.1
273 0529: BSF 03.5
274 052A: BCF 06.1
275 .................... I2C_Write(MPL3115_ADDR_W);
276 052B: MOVLW C0
277 052C: BCF 03.5
278 052D: MOVWF 3E
279 052E: CALL 0A5
280 .................... I2C_write(0x13);
281 052F: MOVLW 13
282 0530: MOVWF 3E
283 0531: CALL 0A5
284 .................... I2C_write(0x07); //hodnota
285 0532: MOVLW 07
286 0533: MOVWF 3E
287 0534: CALL 0A5
288 .................... i2c_stop();
289 0535: BSF 03.5
290 0536: BCF 06.0
291 0537: NOP
292 0538: BSF 06.1
293 0539: BCF 03.5
294 053A: BTFSS 06.1
295 053B: GOTO 53A
296 053C: NOP
297 053D: GOTO 53E
298 053E: NOP
299 053F: BSF 03.5
300 0540: BSF 06.0
301 0541: NOP
302 ....................
303 .................... i2c_start(); //ACTIVE mode
304 0542: BSF 06.0
305 0543: NOP
306 0544: BSF 06.1
307 0545: NOP
308 0546: BCF 03.5
309 0547: BCF 06.0
310 0548: BSF 03.5
311 0549: BCF 06.0
312 054A: NOP
313 054B: BCF 03.5
314 054C: BCF 06.1
315 054D: BSF 03.5
316 054E: BCF 06.1
317 .................... I2C_Write(MPL3115_ADDR_W);
318 054F: MOVLW C0
319 0550: BCF 03.5
320 0551: MOVWF 3E
321 0552: CALL 0A5
322 .................... I2C_write(0x26);
323 0553: MOVLW 26
324 0554: MOVWF 3E
325 0555: CALL 0A5
326 .................... I2C_write(0xB9);
327 0556: MOVLW B9
328 0557: MOVWF 3E
329 0558: CALL 0A5
330 .................... i2c_stop();
331 0559: BSF 03.5
332 055A: BCF 06.0
333 055B: NOP
334 055C: BSF 06.1
335 055D: BCF 03.5
336 055E: BTFSS 06.1
337 055F: GOTO 55E
338 0560: NOP
339 0561: GOTO 562
340 0562: NOP
341 0563: BSF 03.5
342 0564: BSF 06.0
343 0565: NOP
344 .................... }
345 0566: BCF 03.5
346 0567: BSF 0A.3
347 0568: BCF 0A.4
348 0569: GOTO 046 (RETURN)
349 ....................
350 .................... void mpl3115_setP (void) //nastavení pro tlak
351 .................... {
352 ....................
353 ....................
354 .................... i2c_start(); //STANDBY mode
355 *
356 00D9: BSF 03.5
357 00DA: BSF 06.0
358 00DB: NOP
359 00DC: BSF 06.1
360 00DD: NOP
361 00DE: BCF 03.5
362 00DF: BCF 06.0
363 00E0: BSF 03.5
364 00E1: BCF 06.0
365 00E2: NOP
366 00E3: BCF 03.5
367 00E4: BCF 06.1
368 00E5: BSF 03.5
369 00E6: BCF 06.1
370 .................... I2C_Write(MPL3115_ADDR_W);
371 00E7: MOVLW C0
372 00E8: BCF 03.5
373 00E9: MOVWF 3E
374 00EA: CALL 0A5
375 .................... I2C_write(0x26);
376 00EB: MOVLW 26
377 00EC: MOVWF 3E
378 00ED: CALL 0A5
379 .................... I2C_write(0xB8);
380 00EE: MOVLW B8
381 00EF: MOVWF 3E
382 00F0: CALL 0A5
383 .................... i2c_stop();
384 00F1: BSF 03.5
385 00F2: BCF 06.0
386 00F3: NOP
387 00F4: BSF 06.1
388 00F5: BCF 03.5
389 00F6: BTFSS 06.1
390 00F7: GOTO 0F6
391 00F8: NOP
392 00F9: GOTO 0FA
393 00FA: NOP
394 00FB: BSF 03.5
395 00FC: BSF 06.0
396 00FD: NOP
397 ....................
398 .................... i2c_start(); //PT_DATA_CFG set
399 00FE: BSF 06.0
400 00FF: NOP
401 0100: BSF 06.1
402 0101: NOP
403 0102: BCF 03.5
404 0103: BCF 06.0
405 0104: BSF 03.5
406 0105: BCF 06.0
407 0106: NOP
408 0107: BCF 03.5
409 0108: BCF 06.1
410 0109: BSF 03.5
411 010A: BCF 06.1
412 .................... I2C_Write(MPL3115_ADDR_W);
413 010B: MOVLW C0
414 010C: BCF 03.5
415 010D: MOVWF 3E
416 010E: CALL 0A5
417 .................... I2C_write(0x13);
418 010F: MOVLW 13
419 0110: MOVWF 3E
420 0111: CALL 0A5
421 .................... I2C_write(0x07); //hodnota
422 0112: MOVLW 07
423 0113: MOVWF 3E
424 0114: CALL 0A5
425 .................... i2c_stop();
426 0115: BSF 03.5
427 0116: BCF 06.0
428 0117: NOP
429 0118: BSF 06.1
430 0119: BCF 03.5
431 011A: BTFSS 06.1
432 011B: GOTO 11A
433 011C: NOP
434 011D: GOTO 11E
435 011E: NOP
436 011F: BSF 03.5
437 0120: BSF 06.0
438 0121: NOP
439 ....................
440 .................... i2c_start(); //ACTIVE mode
441 0122: BSF 06.0
442 0123: NOP
443 0124: BSF 06.1
444 0125: NOP
445 0126: BCF 03.5
446 0127: BCF 06.0
447 0128: BSF 03.5
448 0129: BCF 06.0
449 012A: NOP
450 012B: BCF 03.5
451 012C: BCF 06.1
452 012D: BSF 03.5
453 012E: BCF 06.1
454 .................... I2C_Write(MPL3115_ADDR_W);
455 012F: MOVLW C0
456 0130: BCF 03.5
457 0131: MOVWF 3E
458 0132: CALL 0A5
459 .................... I2C_write(0x26);
460 0133: MOVLW 26
461 0134: MOVWF 3E
462 0135: CALL 0A5
463 .................... I2C_write(0x39);
464 0136: MOVLW 39
465 0137: MOVWF 3E
466 0138: CALL 0A5
467 .................... i2c_stop();
468 0139: BSF 03.5
469 013A: BCF 06.0
470 013B: NOP
471 013C: BSF 06.1
472 013D: BCF 03.5
473 013E: BTFSS 06.1
474 013F: GOTO 13E
475 0140: NOP
476 0141: GOTO 142
477 0142: NOP
478 0143: BSF 03.5
479 0144: BSF 06.0
480 0145: NOP
481 .................... }
482 0146: BCF 03.5
483 0147: BSF 0A.3
484 0148: BCF 0A.4
485 0149: GOTO 024 (RETURN)
486 ....................
487 ....................
488 .................... byte mpl3115_read (byte reg)
489 .................... {
490 .................... byte i;
491 ....................
492 .................... i2c_start();
493 *
494 015E: BSF 03.5
495 015F: BSF 06.0
496 0160: NOP
497 0161: BSF 06.1
498 0162: NOP
499 0163: BCF 03.5
500 0164: BCF 06.0
501 0165: BSF 03.5
502 0166: BCF 06.0
503 0167: NOP
504 0168: BCF 03.5
505 0169: BCF 06.1
506 016A: BSF 03.5
507 016B: BCF 06.1
508 .................... I2C_Write(MPL3115_ADDR_W);
509 016C: MOVLW C0
510 016D: BCF 03.5
511 016E: MOVWF 3E
512 016F: CALL 0A5
513 .................... I2C_write(reg);
514 0170: MOVF 3C,W
515 0171: MOVWF 3E
516 0172: CALL 0A5
517 .................... i2c_start();
518 0173: BSF 03.5
519 0174: BSF 06.0
520 0175: NOP
521 0176: BSF 06.1
522 0177: NOP
523 0178: BCF 03.5
524 0179: BTFSS 06.1
525 017A: GOTO 179
526 017B: BCF 06.0
527 017C: BSF 03.5
528 017D: BCF 06.0
529 017E: NOP
530 017F: BCF 03.5
531 0180: BCF 06.1
532 0181: BSF 03.5
533 0182: BCF 06.1
534 .................... I2C_Write(MPL3115_ADDR_R);
535 0183: MOVLW C1
536 0184: BCF 03.5
537 0185: MOVWF 3E
538 0186: CALL 0A5
539 .................... i=i2c_read(0);
540 0187: CLRF 77
541 *
542 01B9: MOVF 78,W
543 01BA: BCF 03.5
544 01BB: MOVWF 3D
545 .................... i2c_stop();
546 01BC: BSF 03.5
547 01BD: BCF 06.0
548 01BE: NOP
549 01BF: BSF 06.1
550 01C0: BCF 03.5
551 01C1: BTFSS 06.1
552 01C2: GOTO 1C1
553 01C3: NOP
554 01C4: GOTO 1C5
555 01C5: NOP
556 01C6: BSF 03.5
557 01C7: BSF 06.0
558 01C8: NOP
559 ....................
560 .................... return i;
561 01C9: BCF 03.5
562 01CA: MOVF 3D,W
563 01CB: MOVWF 78
564 .................... }
565 01CC: RETURN
566 ....................
567 ....................
568 .................... float mpl3115_T (void) //teplota ve stupnich
569 .................... {
570 .................... int m;
571 .................... float l, t;
572 ....................
573 .................... m= mpl3115_read (0x04);
574 *
575 03F5: MOVLW 04
576 03F6: MOVWF 3C
577 03F7: CALL 15E
578 03F8: MOVF 78,W
579 03F9: MOVWF 2D
580 .................... l= (float)(mpl3115_read(0x05)>>4)/16.0;
581 03FA: MOVLW 05
582 03FB: MOVWF 3C
583 03FC: CALL 15E
584 03FD: SWAPF 78,W
585 03FE: MOVWF 77
586 03FF: MOVLW 0F
587 0400: ANDWF 77,F
588 0401: MOVF 77,W
589 0402: CLRF 3E
590 0403: MOVWF 3D
591 0404: CALL 1CD
592 0405: MOVF 77,W
593 0406: MOVWF 36
594 0407: MOVF 78,W
595 0408: MOVWF 37
596 0409: MOVF 79,W
597 040A: MOVWF 38
598 040B: MOVF 7A,W
599 040C: MOVWF 39
600 040D: MOVWF 44
601 040E: MOVF 79,W
602 040F: MOVWF 43
603 0410: MOVF 78,W
604 0411: MOVWF 42
605 0412: MOVF 77,W
606 0413: MOVWF 41
607 0414: CLRF 48
608 0415: CLRF 47
609 0416: CLRF 46
610 0417: MOVLW 83
611 0418: MOVWF 45
612 0419: CALL 1EA
613 041A: MOVF 7A,W
614 041B: MOVWF 31
615 041C: MOVF 79,W
616 041D: MOVWF 30
617 041E: MOVF 78,W
618 041F: MOVWF 2F
619 0420: MOVF 77,W
620 0421: MOVWF 2E
621 .................... t = (float)(M + L);
622 0422: CLRF 3E
623 0423: MOVF 2D,W
624 0424: MOVWF 3D
625 0425: CALL 1CD
626 0426: BCF 03.1
627 0427: MOVF 7A,W
628 0428: MOVWF 46
629 0429: MOVF 79,W
630 042A: MOVWF 45
631 042B: MOVF 78,W
632 042C: MOVWF 44
633 042D: MOVF 77,W
634 042E: MOVWF 43
635 042F: MOVF 31,W
636 0430: MOVWF 4A
637 0431: MOVF 30,W
638 0432: MOVWF 49
639 0433: MOVF 2F,W
640 0434: MOVWF 48
641 0435: MOVF 2E,W
642 0436: MOVWF 47
643 0437: CALL 2B4
644 0438: MOVF 7A,W
645 0439: MOVWF 35
646 043A: MOVF 79,W
647 043B: MOVWF 34
648 043C: MOVF 78,W
649 043D: MOVWF 33
650 043E: MOVF 77,W
651 043F: MOVWF 32
652 .................... return t;
653 0440: MOVF 32,W
654 0441: MOVWF 77
655 0442: MOVF 33,W
656 0443: MOVWF 78
657 0444: MOVF 34,W
658 0445: MOVWF 79
659 0446: MOVF 35,W
660 0447: MOVWF 7A
661 .................... }
662 0448: BSF 0A.3
663 0449: BCF 0A.4
664 044A: GOTO 030 (RETURN)
665 ....................
666 .................... float mpl3115_A (void) //vyska v m
667 .................... {
668 ....................
669 .................... int16 m, c;
670 .................... float l, a;
671 ....................
672 .................... m= mpl3115_read (0x01);
673 *
674 056A: MOVLW 01
675 056B: MOVWF 3C
676 056C: CALL 15E
677 056D: CLRF 2E
678 056E: MOVF 78,W
679 056F: MOVWF 2D
680 .................... c= mpl3115_read (0x02);
681 0570: MOVLW 02
682 0571: MOVWF 3C
683 0572: CALL 15E
684 0573: CLRF 30
685 0574: MOVF 78,W
686 0575: MOVWF 2F
687 .................... l= (float)(mpl3115_read(0x03)>>4)/16.0;
688 0576: MOVLW 03
689 0577: MOVWF 3C
690 0578: CALL 15E
691 0579: SWAPF 78,W
692 057A: MOVWF 77
693 057B: MOVLW 0F
694 057C: ANDWF 77,F
695 057D: MOVF 77,W
696 057E: CLRF 3E
697 057F: MOVWF 3D
698 0580: CALL 1CD
699 0581: MOVF 77,W
700 0582: MOVWF 39
701 0583: MOVF 78,W
702 0584: MOVWF 3A
703 0585: MOVF 79,W
704 0586: MOVWF 3B
705 0587: MOVF 7A,W
706 0588: MOVWF 3C
707 0589: MOVWF 44
708 058A: MOVF 79,W
709 058B: MOVWF 43
710 058C: MOVF 78,W
711 058D: MOVWF 42
712 058E: MOVF 77,W
713 058F: MOVWF 41
714 0590: CLRF 48
715 0591: CLRF 47
716 0592: CLRF 46
717 0593: MOVLW 83
718 0594: MOVWF 45
719 0595: CALL 1EA
720 0596: MOVF 7A,W
721 0597: MOVWF 34
722 0598: MOVF 79,W
723 0599: MOVWF 33
724 059A: MOVF 78,W
725 059B: MOVWF 32
726 059C: MOVF 77,W
727 059D: MOVWF 31
728 .................... a = (float)((m << 8)|c) + l;
729 059E: MOVF 2D,W
730 059F: MOVWF 3B
731 05A0: CLRF 3A
732 05A1: MOVF 3A,W
733 05A2: IORWF 2F,W
734 05A3: MOVWF 77
735 05A4: MOVF 2D,W
736 05A5: IORWF 30,W
737 05A6: MOVWF 7A
738 05A7: MOVF 77,W
739 05A8: MOVWF 3D
740 05A9: MOVF 7A,W
741 05AA: MOVWF 3E
742 05AB: CALL 1CD
743 05AC: MOVF 77,W
744 05AD: MOVWF 3A
745 05AE: MOVF 78,W
746 05AF: MOVWF 3B
747 05B0: MOVF 79,W
748 05B1: MOVWF 3C
749 05B2: MOVF 7A,W
750 05B3: MOVWF 3D
751 05B4: BCF 03.1
752 05B5: MOVF 7A,W
753 05B6: MOVWF 46
754 05B7: MOVF 79,W
755 05B8: MOVWF 45
756 05B9: MOVF 78,W
757 05BA: MOVWF 44
758 05BB: MOVF 77,W
759 05BC: MOVWF 43
760 05BD: MOVF 34,W
761 05BE: MOVWF 4A
762 05BF: MOVF 33,W
763 05C0: MOVWF 49
764 05C1: MOVF 32,W
765 05C2: MOVWF 48
766 05C3: MOVF 31,W
767 05C4: MOVWF 47
768 05C5: CALL 2B4
769 05C6: MOVF 7A,W
770 05C7: MOVWF 38
771 05C8: MOVF 79,W
772 05C9: MOVWF 37
773 05CA: MOVF 78,W
774 05CB: MOVWF 36
775 05CC: MOVF 77,W
776 05CD: MOVWF 35
777 .................... return a;
778 05CE: MOVF 35,W
779 05CF: MOVWF 77
780 05D0: MOVF 36,W
781 05D1: MOVWF 78
782 05D2: MOVF 37,W
783 05D3: MOVWF 79
784 05D4: MOVF 38,W
785 05D5: MOVWF 7A
786 .................... }
787 05D6: BSF 0A.3
788 05D7: BCF 0A.4
789 05D8: GOTO 052 (RETURN)
790 ....................
791 ....................
792 .................... float mpl3115_P (void) //tlak v Pa
793 .................... {
794 .................... unsigned int32 m;
795 .................... unsigned int16 c;
796 .................... unsigned int l;
797 .................... float p, l1;
798 ....................
799 .................... m= mpl3115_read (0x01);
800 *
801 044B: MOVLW 01
802 044C: MOVWF 3C
803 044D: CALL 15E
804 044E: CLRF 30
805 044F: CLRF 2F
806 0450: CLRF 2E
807 0451: MOVF 78,W
808 0452: MOVWF 2D
809 .................... c= mpl3115_read (0x02);
810 0453: MOVLW 02
811 0454: MOVWF 3C
812 0455: CALL 15E
813 0456: CLRF 32
814 0457: MOVF 78,W
815 0458: MOVWF 31
816 .................... l=mpl3115_read(0x03);
817 0459: MOVLW 03
818 045A: MOVWF 3C
819 045B: CALL 15E
820 045C: MOVF 78,W
821 045D: MOVWF 33
822 ....................
823 .................... l1= (float)(l>>4)/4.0;
824 045E: SWAPF 33,W
825 045F: MOVWF 77
826 0460: MOVLW 0F
827 0461: ANDWF 77,F
828 0462: MOVF 77,W
829 0463: CLRF 3E
830 0464: MOVWF 3D
831 0465: CALL 1CD
832 0466: MOVF 77,W
833 0467: MOVWF 3D
834 0468: MOVF 78,W
835 0469: MOVWF 3E
836 046A: MOVF 79,W
837 046B: MOVWF 3F
838 046C: MOVF 7A,W
839 046D: MOVWF 40
840 046E: MOVWF 44
841 046F: MOVF 79,W
842 0470: MOVWF 43
843 0471: MOVF 78,W
844 0472: MOVWF 42
845 0473: MOVF 77,W
846 0474: MOVWF 41
847 0475: CLRF 48
848 0476: CLRF 47
849 0477: CLRF 46
850 0478: MOVLW 81
851 0479: MOVWF 45
852 047A: CALL 1EA
853 047B: MOVF 7A,W
854 047C: MOVWF 3B
855 047D: MOVF 79,W
856 047E: MOVWF 3A
857 047F: MOVF 78,W
858 0480: MOVWF 39
859 0481: MOVF 77,W
860 0482: MOVWF 38
861 .................... p = (float)((m << 10)|(c<<2)|(l>>6)) + l1;
862 0483: CLRF 3D
863 0484: RLF 2D,W
864 0485: MOVWF 3E
865 0486: RLF 2E,W
866 0487: MOVWF 3F
867 0488: RLF 2F,W
868 0489: MOVWF 40
869 048A: RLF 3E,F
870 048B: RLF 3F,F
871 048C: RLF 40,F
872 048D: MOVLW FC
873 048E: ANDWF 3E,F
874 048F: RLF 31,W
875 0490: MOVWF 79
876 0491: RLF 32,W
877 0492: MOVWF 7A
878 0493: RLF 79,F
879 0494: RLF 7A,F
880 0495: MOVLW FC
881 0496: ANDWF 79,F
882 0497: MOVF 79,W
883 0498: IORWF 3D,F
884 0499: MOVF 7A,W
885 049A: IORWF 3E,F
886 049B: SWAPF 33,W
887 049C: MOVWF 77
888 049D: RRF 77,F
889 049E: RRF 77,F
890 049F: MOVLW 03
891 04A0: ANDWF 77,F
892 04A1: MOVF 77,W
893 04A2: IORWF 3D,W
894 04A3: MOVWF 77
895 04A4: MOVF 3E,W
896 04A5: MOVWF 78
897 04A6: MOVF 3F,W
898 04A7: MOVWF 79
899 04A8: MOVF 40,W
900 04A9: MOVWF 7A
901 04AA: MOVF 7A,W
902 04AB: MOVWF 46
903 04AC: MOVF 79,W
904 04AD: MOVWF 45
905 04AE: MOVF 78,W
906 04AF: MOVWF 44
907 04B0: MOVF 77,W
908 04B1: MOVWF 43
909 *
910 04CC: MOVF 77,W
911 04CD: MOVWF 3D
912 04CE: MOVF 78,W
913 04CF: MOVWF 3E
914 04D0: MOVF 79,W
915 04D1: MOVWF 3F
916 04D2: MOVF 7A,W
917 04D3: MOVWF 40
918 04D4: BCF 03.1
919 04D5: MOVF 7A,W
920 04D6: MOVWF 46
921 04D7: MOVF 79,W
922 04D8: MOVWF 45
923 04D9: MOVF 78,W
924 04DA: MOVWF 44
925 04DB: MOVF 77,W
926 04DC: MOVWF 43
927 04DD: MOVF 3B,W
928 04DE: MOVWF 4A
929 04DF: MOVF 3A,W
930 04E0: MOVWF 49
931 04E1: MOVF 39,W
932 04E2: MOVWF 48
933 04E3: MOVF 38,W
934 04E4: MOVWF 47
935 04E5: CALL 2B4
936 04E6: MOVF 7A,W
937 04E7: MOVWF 37
938 04E8: MOVF 79,W
939 04E9: MOVWF 36
940 04EA: MOVF 78,W
941 04EB: MOVWF 35
942 04EC: MOVF 77,W
943 04ED: MOVWF 34
944 ....................
945 .................... return p;
946 04EE: MOVF 34,W
947 04EF: MOVWF 77
948 04F0: MOVF 35,W
949 04F1: MOVWF 78
950 04F2: MOVF 36,W
951 04F3: MOVWF 79
952 04F4: MOVF 37,W
953 04F5: MOVWF 7A
954 .................... }
955 04F6: BSF 0A.3
956 04F7: BCF 0A.4
957 04F8: GOTO 03B (RETURN)
958 ....................
959 .................... void main()
960 .................... {
961 *
962 0800: CLRF 04
963 0801: BCF 03.7
964 0802: MOVLW 1F
965 0803: ANDWF 03,F
966 0804: MOVLW 71
967 0805: BSF 03.5
968 0806: MOVWF 0F
969 0807: MOVF 0F,W
970 0808: BCF 06.3
971 0809: BCF 03.5
972 080A: BSF 06.3
973 080B: BSF 03.5
974 080C: BSF 03.6
975 080D: MOVF 09,W
976 080E: ANDLW C0
977 080F: MOVWF 09
978 0810: BCF 03.6
979 0811: BCF 1F.4
980 0812: BCF 1F.5
981 0813: MOVLW 00
982 0814: BSF 03.6
983 0815: MOVWF 08
984 0816: BCF 03.5
985 0817: CLRF 07
986 0818: CLRF 08
987 0819: CLRF 09
988 ....................
989 .................... float p, t, a;
990 .................... printf("Tlakomer nebo vyskomer \r\n",);
991 081A: MOVLW 04
992 081B: MOVWF 0D
993 081C: MOVLW 00
994 081D: MOVWF 0F
995 081E: BCF 0A.3
996 081F: BCF 03.6
997 0820: GOTO 05D
998 0821: BSF 0A.3
999 ....................
1000 .................... while(TRUE)
1001 .................... {
1002 .................... mpl3115_setP(); //nastaveni pro tlak a teplotu
1003 0822: BCF 0A.3
1004 0823: GOTO 0D9
1005 0824: BSF 0A.3
1006 .................... delay_ms (500);
1007 0825: MOVLW 02
1008 0826: MOVWF 2D
1009 0827: MOVLW FA
1010 0828: MOVWF 2E
1011 0829: BCF 0A.3
1012 082A: CALL 14A
1013 082B: BSF 0A.3
1014 082C: DECFSZ 2D,F
1015 082D: GOTO 027
1016 .................... t=mpl3115_T();
1017 082E: BCF 0A.3
1018 082F: GOTO 3F5
1019 0830: BSF 0A.3
1020 0831: MOVF 7A,W
1021 0832: MOVWF 28
1022 0833: MOVF 79,W
1023 0834: MOVWF 27
1024 0835: MOVF 78,W
1025 0836: MOVWF 26
1026 0837: MOVF 77,W
1027 0838: MOVWF 25
1028 .................... p=mpl3115_P();
1029 0839: BCF 0A.3
1030 083A: GOTO 44B
1031 083B: BSF 0A.3
1032 083C: MOVF 7A,W
1033 083D: MOVWF 24
1034 083E: MOVF 79,W
1035 083F: MOVWF 23
1036 0840: MOVF 78,W
1037 0841: MOVWF 22
1038 0842: MOVF 77,W
1039 0843: MOVWF 21
1040 ....................
1041 .................... mpl3115_setA(); //nastaveni pro vysku a teplotu
1042 0844: BCF 0A.3
1043 0845: GOTO 4F9
1044 0846: BSF 0A.3
1045 .................... delay_ms (500);
1046 0847: MOVLW 02
1047 0848: MOVWF 2D
1048 0849: MOVLW FA
1049 084A: MOVWF 2E
1050 084B: BCF 0A.3
1051 084C: CALL 14A
1052 084D: BSF 0A.3
1053 084E: DECFSZ 2D,F
1054 084F: GOTO 049
1055 .................... a=mpl3115_A();
1056 0850: BCF 0A.3
1057 0851: GOTO 56A
1058 0852: BSF 0A.3
1059 0853: MOVF 7A,W
1060 0854: MOVWF 2C
1061 0855: MOVF 79,W
1062 0856: MOVWF 2B
1063 0857: MOVF 78,W
1064 0858: MOVWF 2A
1065 0859: MOVF 77,W
1066 085A: MOVWF 29
1067 ....................
1068 ....................
1069 .................... printf("Teplota: %10.4f(stupne)\r\n", t);
1070 085B: MOVLW 11
1071 085C: BSF 03.6
1072 085D: MOVWF 0D
1073 085E: MOVLW 00
1074 085F: MOVWF 0F
1075 0860: BCF 03.0
1076 0861: MOVLW 09
1077 0862: BCF 03.6
1078 0863: MOVWF 2D
1079 0864: BCF 0A.3
1080 0865: CALL 5D9
1081 0866: BSF 0A.3
1082 0867: MOVLW 09
1083 0868: MOVWF 04
1084 0869: MOVF 28,W
1085 086A: MOVWF 30
1086 086B: MOVF 27,W
1087 086C: MOVWF 2F
1088 086D: MOVF 26,W
1089 086E: MOVWF 2E
1090 086F: MOVF 25,W
1091 0870: MOVWF 2D
1092 0871: MOVLW 04
1093 0872: MOVWF 31
1094 0873: BCF 0A.3
1095 0874: CALL 66A
1096 0875: BSF 0A.3
1097 0876: MOVLW 18
1098 0877: BSF 03.6
1099 0878: MOVWF 0D
1100 0879: MOVLW 00
1101 087A: MOVWF 0F
1102 087B: BSF 03.0
1103 087C: MOVLW 0A
1104 087D: BCF 03.6
1105 087E: MOVWF 2D
1106 087F: BCF 0A.3
1107 0880: CALL 5D9
1108 0881: BSF 0A.3
1109 .................... printf("Tlak: %10.4f(Pa)\r\n", p);
1110 0882: MOVLW 1E
1111 0883: BSF 03.6
1112 0884: MOVWF 0D
1113 0885: MOVLW 00
1114 0886: MOVWF 0F
1115 0887: BCF 03.0
1116 0888: MOVLW 06
1117 0889: BCF 03.6
1118 088A: MOVWF 2D
1119 088B: BCF 0A.3
1120 088C: CALL 5D9
1121 088D: BSF 0A.3
1122 088E: MOVLW 09
1123 088F: MOVWF 04
1124 0890: MOVF 24,W
1125 0891: MOVWF 30
1126 0892: MOVF 23,W
1127 0893: MOVWF 2F
1128 0894: MOVF 22,W
1129 0895: MOVWF 2E
1130 0896: MOVF 21,W
1131 0897: MOVWF 2D
1132 0898: MOVLW 04
1133 0899: MOVWF 31
1134 089A: BCF 0A.3
1135 089B: CALL 66A
1136 089C: BSF 0A.3
1137 089D: MOVLW 24
1138 089E: BSF 03.6
1139 089F: MOVWF 0D
1140 08A0: MOVLW 00
1141 08A1: MOVWF 0F
1142 08A2: BCF 03.0
1143 08A3: MOVLW 06
1144 08A4: BCF 03.6
1145 08A5: MOVWF 2D
1146 08A6: BCF 0A.3
1147 08A7: CALL 5D9
1148 08A8: BSF 0A.3
1149 .................... printf("Výška: %10.4f(m)\r\n", a);
1150 08A9: MOVLW 28
1151 08AA: BSF 03.6
1152 08AB: MOVWF 0D
1153 08AC: MOVLW 00
1154 08AD: MOVWF 0F
1155 08AE: MOVLW 07
1156 08AF: BCF 03.6
1157 08B0: MOVWF 2D
1158 08B1: BCF 0A.3
1159 08B2: CALL 7C4
1160 08B3: BSF 0A.3
1161 08B4: MOVLW 09
1162 08B5: MOVWF 04
1163 08B6: MOVF 2C,W
1164 08B7: MOVWF 30
1165 08B8: MOVF 2B,W
1166 08B9: MOVWF 2F
1167 08BA: MOVF 2A,W
1168 08BB: MOVWF 2E
1169 08BC: MOVF 29,W
1170 08BD: MOVWF 2D
1171 08BE: MOVLW 04
1172 08BF: MOVWF 31
1173 08C0: BCF 0A.3
1174 08C1: CALL 66A
1175 08C2: BSF 0A.3
1176 08C3: MOVLW 35
1177 08C4: BSF 03.6
1178 08C5: MOVWF 0D
1179 08C6: MOVLW 00
1180 08C7: MOVWF 0F
1181 08C8: MOVLW 05
1182 08C9: BCF 03.6
1183 08CA: MOVWF 2D
1184 08CB: BCF 0A.3
1185 08CC: CALL 7C4
1186 08CD: BSF 0A.3
1187 ....................
1188 .................... delay_ms (1000);
1189 08CE: MOVLW 04
1190 08CF: MOVWF 2D
1191 08D0: MOVLW FA
1192 08D1: MOVWF 2E
1193 08D2: BCF 0A.3
1194 08D3: CALL 14A
1195 08D4: BSF 0A.3
1196 08D5: DECFSZ 2D,F
1197 08D6: GOTO 0D0
1198 .................... }
1199 08D7: GOTO 022
1200 ....................
1201 ....................
1202 .................... }
1203 ....................
1204 ....................
1205 08D8: SLEEP
1206  
1207 Configuration Fuses:
1208 Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUG
1209 Word 2: 3FFF NOWRT BORV40