Rev Author Line No. Line
1045 jacho 1 CCS PCM C Compiler, Version 4.106, 47914 23-4-13 11:20
2  
3 Filename: c:\users\honza\documents\pic\i2c_magnetometr\main.lst
4  
5 ROM used: 1041 words (13%)
6 Largest free fragment is 2048
7 RAM used: 7 (2%) at main() level
8 22 (6%) worst case
9 Stack: 3 locations
10  
11 *
12 0000: MOVLW 03
13 0001: MOVWF 0A
14 0002: GOTO 32F
15 0003: NOP
16 .................... //Magnetometr Jan Chroust 2013
17 .................... //vypise hodnoty jednotlivych os
18 ....................
19 .................... #include "main.h"
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 00EB: MOVLW 28
44 00EC: MOVWF 04
45 00ED: BCF 03.7
46 00EE: MOVF 00,W
47 00EF: BTFSC 03.2
48 00F0: GOTO 0FE
49 00F1: MOVLW 02
50 00F2: MOVWF 78
51 00F3: CLRF 77
52 00F4: DECFSZ 77,F
53 00F5: GOTO 0F4
54 00F6: DECFSZ 78,F
55 00F7: GOTO 0F3
56 00F8: MOVLW 97
57 00F9: MOVWF 77
58 00FA: DECFSZ 77,F
59 00FB: GOTO 0FA
60 00FC: DECFSZ 00,F
61 00FD: GOTO 0F1
62 00FE: RETURN
63 ....................
64 ....................
65 ....................
66 .................... #define EEPROM_SDA PIN_C4
67 .................... #define EEPROM_SCL PIN_C3
68 .................... #use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)
69 *
70 00A1: MOVLW 08
71 00A2: MOVWF 78
72 00A3: NOP
73 00A4: BCF 07.3
74 00A5: BCF 20.3
75 00A6: MOVF 20,W
76 00A7: BSF 03.5
77 00A8: MOVWF 07
78 00A9: NOP
79 00AA: BCF 03.5
80 00AB: RLF 2C,F
81 00AC: BCF 07.4
82 00AD: BTFSS 03.0
83 00AE: GOTO 0B5
84 00AF: BSF 20.4
85 00B0: MOVF 20,W
86 00B1: BSF 03.5
87 00B2: MOVWF 07
88 00B3: GOTO 0B9
89 00B4: BCF 03.5
90 00B5: BCF 20.4
91 00B6: MOVF 20,W
92 00B7: BSF 03.5
93 00B8: MOVWF 07
94 00B9: NOP
95 00BA: BCF 03.5
96 00BB: BSF 20.3
97 00BC: MOVF 20,W
98 00BD: BSF 03.5
99 00BE: MOVWF 07
100 00BF: BCF 03.5
101 00C0: BTFSS 07.3
102 00C1: GOTO 0C0
103 00C2: DECFSZ 78,F
104 00C3: GOTO 0A3
105 00C4: NOP
106 00C5: BCF 07.3
107 00C6: BCF 20.3
108 00C7: MOVF 20,W
109 00C8: BSF 03.5
110 00C9: MOVWF 07
111 00CA: NOP
112 00CB: BCF 03.5
113 00CC: BSF 20.4
114 00CD: MOVF 20,W
115 00CE: BSF 03.5
116 00CF: MOVWF 07
117 00D0: NOP
118 00D1: NOP
119 00D2: BCF 03.5
120 00D3: BSF 20.3
121 00D4: MOVF 20,W
122 00D5: BSF 03.5
123 00D6: MOVWF 07
124 00D7: BCF 03.5
125 00D8: BTFSS 07.3
126 00D9: GOTO 0D8
127 00DA: CLRF 78
128 00DB: NOP
129 00DC: BTFSC 07.4
130 00DD: BSF 78.0
131 00DE: BCF 07.3
132 00DF: BCF 20.3
133 00E0: MOVF 20,W
134 00E1: BSF 03.5
135 00E2: MOVWF 07
136 00E3: BCF 03.5
137 00E4: BCF 07.4
138 00E5: BCF 20.4
139 00E6: MOVF 20,W
140 00E7: BSF 03.5
141 00E8: MOVWF 07
142 00E9: BCF 03.5
143 00EA: RETURN
144 *
145 0203: MOVLW 08
146 0204: MOVWF 2D
147 0205: MOVF 77,W
148 0206: MOVWF 2E
149 0207: BSF 20.4
150 0208: MOVF 20,W
151 0209: BSF 03.5
152 020A: MOVWF 07
153 020B: NOP
154 020C: BCF 03.5
155 020D: BSF 20.3
156 020E: MOVF 20,W
157 020F: BSF 03.5
158 0210: MOVWF 07
159 0211: BCF 03.5
160 0212: BTFSS 07.3
161 0213: GOTO 212
162 0214: BTFSC 07.4
163 0215: BSF 03.0
164 0216: BTFSS 07.4
165 0217: BCF 03.0
166 0218: RLF 78,F
167 0219: NOP
168 021A: BCF 20.3
169 021B: MOVF 20,W
170 021C: BSF 03.5
171 021D: MOVWF 07
172 021E: BCF 03.5
173 021F: BCF 07.3
174 0220: DECFSZ 2D,F
175 0221: GOTO 207
176 0222: BSF 20.4
177 0223: MOVF 20,W
178 0224: BSF 03.5
179 0225: MOVWF 07
180 0226: NOP
181 0227: BCF 03.5
182 0228: BCF 07.4
183 0229: MOVF 2E,W
184 022A: BTFSC 03.2
185 022B: GOTO 231
186 022C: BCF 20.4
187 022D: MOVF 20,W
188 022E: BSF 03.5
189 022F: MOVWF 07
190 0230: BCF 03.5
191 0231: NOP
192 0232: BSF 20.3
193 0233: MOVF 20,W
194 0234: BSF 03.5
195 0235: MOVWF 07
196 0236: BCF 03.5
197 0237: BTFSS 07.3
198 0238: GOTO 237
199 0239: NOP
200 023A: BCF 07.3
201 023B: BCF 20.3
202 023C: MOVF 20,W
203 023D: BSF 03.5
204 023E: MOVWF 07
205 023F: NOP
206 0240: BCF 03.5
207 0241: BCF 07.4
208 0242: BCF 20.4
209 0243: MOVF 20,W
210 0244: BSF 03.5
211 0245: MOVWF 07
212 .................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD
213 *
214 0037: BCF 20.7
215 0038: MOVF 20,W
216 0039: BSF 03.5
217 003A: MOVWF 07
218 003B: BCF 03.5
219 003C: BCF 07.7
220 003D: MOVLW 08
221 003E: MOVWF 78
222 003F: GOTO 040
223 0040: NOP
224 0041: BSF 78.7
225 0042: GOTO 051
226 0043: BCF 78.7
227 0044: RRF 30,F
228 0045: BTFSC 03.0
229 0046: BSF 07.7
230 0047: BTFSS 03.0
231 0048: BCF 07.7
232 0049: BSF 78.6
233 004A: GOTO 051
234 004B: BCF 78.6
235 004C: DECFSZ 78,F
236 004D: GOTO 044
237 004E: GOTO 04F
238 004F: NOP
239 0050: BSF 07.7
240 0051: MOVLW 3F
241 0052: MOVWF 04
242 0053: DECFSZ 04,F
243 0054: GOTO 053
244 0055: NOP
245 0056: BTFSC 78.7
246 0057: GOTO 043
247 0058: BTFSC 78.6
248 0059: GOTO 04B
249 005A: RETURN
250 ....................
251 .................... #include "HMC5883L.h"
252 .................... #define MAG_ADDR_R 0x3D //addresa pro cteni
253 .................... #define MAG_ADDR_W 0x3C
254 ....................
255 ....................
256 .................... //Konstanty nastavujici rozsah
257 .................... //pro void set_mag_roz (unsigned int8 h)
258 .................... #define MAG_ROZ088 0x00
259 .................... #define MAG_ROZ130 0x20
260 .................... #define MAG_ROZ190 0x40
261 .................... #define MAG_ROZ250 0x60
262 .................... #define MAG_ROZ400 0x80
263 .................... #define MAG_ROZ470 0xA0
264 .................... #define MAG_ROZ560 0xC0
265 .................... #define MAG_ROZ810 0xE0
266 ....................
267 ....................
268 .................... #include "HMC5883L.c"
269 .................... void set_mag (void) //uvodni nastaveni na kontinualni mereni, rozsah ± 8.1 Ga, frekvence mereni 15HZ
270 .................... {
271 .................... i2c_start(); //nastavení Configuration Register A
272 *
273 00FF: BSF 20.4
274 0100: MOVF 20,W
275 0101: BSF 03.5
276 0102: MOVWF 07
277 0103: NOP
278 0104: BCF 03.5
279 0105: BSF 20.3
280 0106: MOVF 20,W
281 0107: BSF 03.5
282 0108: MOVWF 07
283 0109: NOP
284 010A: BCF 03.5
285 010B: BCF 07.4
286 010C: BCF 20.4
287 010D: MOVF 20,W
288 010E: BSF 03.5
289 010F: MOVWF 07
290 0110: NOP
291 0111: BCF 03.5
292 0112: BCF 07.3
293 0113: BCF 20.3
294 0114: MOVF 20,W
295 0115: BSF 03.5
296 0116: MOVWF 07
297 .................... I2C_Write(MAG_ADDR_W);
298 0117: MOVLW 3C
299 0118: BCF 03.5
300 0119: MOVWF 2C
301 011A: CALL 0A1
302 .................... I2C_Write(0x00);
303 011B: CLRF 2C
304 011C: CALL 0A1
305 .................... I2C_Write(0x70);
306 011D: MOVLW 70
307 011E: MOVWF 2C
308 011F: CALL 0A1
309 .................... i2c_stop();
310 0120: BCF 20.4
311 0121: MOVF 20,W
312 0122: BSF 03.5
313 0123: MOVWF 07
314 0124: NOP
315 0125: BCF 03.5
316 0126: BSF 20.3
317 0127: MOVF 20,W
318 0128: BSF 03.5
319 0129: MOVWF 07
320 012A: BCF 03.5
321 012B: BTFSS 07.3
322 012C: GOTO 12B
323 012D: NOP
324 012E: GOTO 12F
325 012F: NOP
326 0130: BSF 20.4
327 0131: MOVF 20,W
328 0132: BSF 03.5
329 0133: MOVWF 07
330 0134: NOP
331 .................... Delay_ms(6);
332 0135: MOVLW 06
333 0136: BCF 03.5
334 0137: MOVWF 28
335 0138: CALL 0EB
336 ....................
337 .................... i2c_start(); //nastavení Configuration Register B
338 0139: BSF 20.4
339 013A: MOVF 20,W
340 013B: BSF 03.5
341 013C: MOVWF 07
342 013D: NOP
343 013E: BCF 03.5
344 013F: BSF 20.3
345 0140: MOVF 20,W
346 0141: BSF 03.5
347 0142: MOVWF 07
348 0143: NOP
349 0144: BCF 03.5
350 0145: BCF 07.4
351 0146: BCF 20.4
352 0147: MOVF 20,W
353 0148: BSF 03.5
354 0149: MOVWF 07
355 014A: NOP
356 014B: BCF 03.5
357 014C: BCF 07.3
358 014D: BCF 20.3
359 014E: MOVF 20,W
360 014F: BSF 03.5
361 0150: MOVWF 07
362 .................... I2C_Write(MAG_ADDR_W);
363 0151: MOVLW 3C
364 0152: BCF 03.5
365 0153: MOVWF 2C
366 0154: CALL 0A1
367 .................... I2C_Write(0x01);
368 0155: MOVLW 01
369 0156: MOVWF 2C
370 0157: CALL 0A1
371 .................... I2C_Write(MAG_ROZ810);
372 0158: MOVLW E0
373 0159: MOVWF 2C
374 015A: CALL 0A1
375 .................... i2c_stop();
376 015B: BCF 20.4
377 015C: MOVF 20,W
378 015D: BSF 03.5
379 015E: MOVWF 07
380 015F: NOP
381 0160: BCF 03.5
382 0161: BSF 20.3
383 0162: MOVF 20,W
384 0163: BSF 03.5
385 0164: MOVWF 07
386 0165: BCF 03.5
387 0166: BTFSS 07.3
388 0167: GOTO 166
389 0168: NOP
390 0169: GOTO 16A
391 016A: NOP
392 016B: BSF 20.4
393 016C: MOVF 20,W
394 016D: BSF 03.5
395 016E: MOVWF 07
396 016F: NOP
397 ....................
398 .................... Delay_ms(6);
399 0170: MOVLW 06
400 0171: BCF 03.5
401 0172: MOVWF 28
402 0173: CALL 0EB
403 ....................
404 .................... i2c_start(); //nastveni Mode Register
405 0174: BSF 20.4
406 0175: MOVF 20,W
407 0176: BSF 03.5
408 0177: MOVWF 07
409 0178: NOP
410 0179: BCF 03.5
411 017A: BSF 20.3
412 017B: MOVF 20,W
413 017C: BSF 03.5
414 017D: MOVWF 07
415 017E: NOP
416 017F: BCF 03.5
417 0180: BCF 07.4
418 0181: BCF 20.4
419 0182: MOVF 20,W
420 0183: BSF 03.5
421 0184: MOVWF 07
422 0185: NOP
423 0186: BCF 03.5
424 0187: BCF 07.3
425 0188: BCF 20.3
426 0189: MOVF 20,W
427 018A: BSF 03.5
428 018B: MOVWF 07
429 .................... I2C_Write(MAG_ADDR_W);
430 018C: MOVLW 3C
431 018D: BCF 03.5
432 018E: MOVWF 2C
433 018F: CALL 0A1
434 .................... I2C_Write(0x02);
435 0190: MOVLW 02
436 0191: MOVWF 2C
437 0192: CALL 0A1
438 .................... I2C_Write(0x00);
439 0193: CLRF 2C
440 0194: CALL 0A1
441 .................... i2c_stop();
442 0195: BCF 20.4
443 0196: MOVF 20,W
444 0197: BSF 03.5
445 0198: MOVWF 07
446 0199: NOP
447 019A: BCF 03.5
448 019B: BSF 20.3
449 019C: MOVF 20,W
450 019D: BSF 03.5
451 019E: MOVWF 07
452 019F: BCF 03.5
453 01A0: BTFSS 07.3
454 01A1: GOTO 1A0
455 01A2: NOP
456 01A3: GOTO 1A4
457 01A4: NOP
458 01A5: BSF 20.4
459 01A6: MOVF 20,W
460 01A7: BSF 03.5
461 01A8: MOVWF 07
462 01A9: NOP
463 .................... Delay_ms(6);
464 01AA: MOVLW 06
465 01AB: BCF 03.5
466 01AC: MOVWF 28
467 01AD: CALL 0EB
468 .................... }
469 01AE: BCF 0A.3
470 01AF: BCF 0A.4
471 01B0: GOTO 3AA (RETURN)
472 ....................
473 .................... void set_mag_roz (unsigned int8 h) //nastavy rozsah
474 .................... {
475 ....................
476 .................... //
477 ....................
478 ....................
479 .................... i2c_start();
480 .................... I2C_Write(MAG_ADDR_W);
481 .................... I2C_Write(0x01);
482 .................... I2C_Write(h);
483 .................... i2c_stop();
484 ....................
485 .................... Delay_ms(6);
486 ....................
487 ....................
488 .................... }
489 ....................
490 ....................
491 .................... byte mag_read(byte reg) //pro cteni reg
492 .................... {
493 ....................
494 .................... i2c_start();
495 01B1: BSF 20.4
496 01B2: MOVF 20,W
497 01B3: BSF 03.5
498 01B4: MOVWF 07
499 01B5: NOP
500 01B6: BCF 03.5
501 01B7: BSF 20.3
502 01B8: MOVF 20,W
503 01B9: BSF 03.5
504 01BA: MOVWF 07
505 01BB: NOP
506 01BC: BCF 03.5
507 01BD: BCF 07.4
508 01BE: BCF 20.4
509 01BF: MOVF 20,W
510 01C0: BSF 03.5
511 01C1: MOVWF 07
512 01C2: NOP
513 01C3: BCF 03.5
514 01C4: BCF 07.3
515 01C5: BCF 20.3
516 01C6: MOVF 20,W
517 01C7: BSF 03.5
518 01C8: MOVWF 07
519 .................... I2C_Write(MAG_ADDR_W);
520 01C9: MOVLW 3C
521 01CA: BCF 03.5
522 01CB: MOVWF 2C
523 01CC: CALL 0A1
524 .................... I2C_write(reg);
525 01CD: MOVF 2B,W
526 01CE: MOVWF 2C
527 01CF: CALL 0A1
528 .................... i2c_stop();
529 01D0: BCF 20.4
530 01D1: MOVF 20,W
531 01D2: BSF 03.5
532 01D3: MOVWF 07
533 01D4: NOP
534 01D5: BCF 03.5
535 01D6: BSF 20.3
536 01D7: MOVF 20,W
537 01D8: BSF 03.5
538 01D9: MOVWF 07
539 01DA: BCF 03.5
540 01DB: BTFSS 07.3
541 01DC: GOTO 1DB
542 01DD: NOP
543 01DE: GOTO 1DF
544 01DF: NOP
545 01E0: BSF 20.4
546 01E1: MOVF 20,W
547 01E2: BSF 03.5
548 01E3: MOVWF 07
549 01E4: NOP
550 .................... i2c_start();
551 01E5: BCF 03.5
552 01E6: BSF 20.4
553 01E7: MOVF 20,W
554 01E8: BSF 03.5
555 01E9: MOVWF 07
556 01EA: NOP
557 01EB: BCF 03.5
558 01EC: BSF 20.3
559 01ED: MOVF 20,W
560 01EE: BSF 03.5
561 01EF: MOVWF 07
562 01F0: NOP
563 01F1: BCF 03.5
564 01F2: BCF 07.4
565 01F3: BCF 20.4
566 01F4: MOVF 20,W
567 01F5: BSF 03.5
568 01F6: MOVWF 07
569 01F7: NOP
570 01F8: BCF 03.5
571 01F9: BCF 07.3
572 01FA: BCF 20.3
573 01FB: MOVF 20,W
574 01FC: BSF 03.5
575 01FD: MOVWF 07
576 .................... I2C_Write(MAG_ADDR_R);
577 01FE: MOVLW 3D
578 01FF: BCF 03.5
579 0200: MOVWF 2C
580 0201: CALL 0A1
581 .................... reg=i2c_read(0);
582 0202: CLRF 77
583 *
584 0246: MOVF 78,W
585 0247: BCF 03.5
586 0248: MOVWF 2B
587 .................... return reg;
588 0249: MOVF 2B,W
589 024A: MOVWF 78
590 .................... }
591 024B: RETURN
592 ....................
593 ....................
594 .................... signed int16 mag_vypocet(unsigned int8 h, unsigned int8 l) //prepocet na 16bit cislo
595 .................... {
596 .................... signed int16 x;
597 .................... x = (((unsigned int16) h << 8) + l );
598 024C: CLRF 30
599 024D: MOVF 2B,W
600 024E: MOVWF 2F
601 024F: MOVWF 30
602 0250: CLRF 2F
603 0251: MOVF 2C,W
604 0252: ADDWF 2F,W
605 0253: MOVWF 78
606 0254: MOVF 30,W
607 0255: MOVWF 7A
608 0256: BTFSC 03.0
609 0257: INCF 7A,F
610 0258: MOVF 78,W
611 0259: MOVWF 2D
612 025A: MOVF 7A,W
613 025B: MOVWF 2E
614 .................... return x;
615 025C: MOVF 2D,W
616 025D: MOVWF 78
617 025E: MOVF 2E,W
618 025F: MOVWF 79
619 .................... }
620 0260: RETURN
621 ....................
622 ....................
623 .................... signed int16 mag_readX(void) //nacteni osy x
624 .................... {
625 .................... unsigned int8 h,l;
626 .................... signed int16 x;
627 .................... h=mag_read(0x03);
628 0261: MOVLW 03
629 0262: MOVWF 2B
630 0263: CALL 1B1
631 0264: MOVF 78,W
632 0265: MOVWF 27
633 .................... l=mag_read(0x04);
634 0266: MOVLW 04
635 0267: MOVWF 2B
636 0268: CALL 1B1
637 0269: MOVF 78,W
638 026A: MOVWF 28
639 .................... x=mag_vypocet(h,l);
640 026B: MOVF 27,W
641 026C: MOVWF 2B
642 026D: MOVF 28,W
643 026E: MOVWF 2C
644 026F: CALL 24C
645 0270: MOVF 79,W
646 0271: MOVWF 2A
647 0272: MOVF 78,W
648 0273: MOVWF 29
649 .................... return x;
650 0274: MOVF 29,W
651 0275: MOVWF 78
652 0276: MOVF 2A,W
653 0277: MOVWF 79
654 ....................
655 .................... }
656 0278: BCF 0A.3
657 0279: BCF 0A.4
658 027A: GOTO 3B2 (RETURN)
659 ....................
660 ....................
661 .................... signed int16 mag_readY(void) //nacteni osy x
662 .................... {
663 .................... unsigned int8 h,l;
664 .................... signed int16 x;
665 .................... h=mag_read(0x07);
666 027B: MOVLW 07
667 027C: MOVWF 2B
668 027D: CALL 1B1
669 027E: MOVF 78,W
670 027F: MOVWF 27
671 .................... l=mag_read(0x08);
672 0280: MOVLW 08
673 0281: MOVWF 2B
674 0282: CALL 1B1
675 0283: MOVF 78,W
676 0284: MOVWF 28
677 .................... x=mag_vypocet(h,l);
678 0285: MOVF 27,W
679 0286: MOVWF 2B
680 0287: MOVF 28,W
681 0288: MOVWF 2C
682 0289: CALL 24C
683 028A: MOVF 79,W
684 028B: MOVWF 2A
685 028C: MOVF 78,W
686 028D: MOVWF 29
687 .................... return x;
688 028E: MOVF 29,W
689 028F: MOVWF 78
690 0290: MOVF 2A,W
691 0291: MOVWF 79
692 ....................
693 .................... }
694 0292: BCF 0A.3
695 0293: BCF 0A.4
696 0294: GOTO 3B7 (RETURN)
697 ....................
698 ....................
699 .................... signed int16 mag_readZ(void) //nacteni osy x
700 .................... {
701 .................... unsigned int8 h,l;
702 .................... signed int16 x;
703 .................... h=mag_read(0x05);
704 0295: MOVLW 05
705 0296: MOVWF 2B
706 0297: CALL 1B1
707 0298: MOVF 78,W
708 0299: MOVWF 27
709 .................... l=mag_read(0x06);
710 029A: MOVLW 06
711 029B: MOVWF 2B
712 029C: CALL 1B1
713 029D: MOVF 78,W
714 029E: MOVWF 28
715 .................... x=mag_vypocet(h,l);
716 029F: MOVF 27,W
717 02A0: MOVWF 2B
718 02A1: MOVF 28,W
719 02A2: MOVWF 2C
720 02A3: CALL 24C
721 02A4: MOVF 79,W
722 02A5: MOVWF 2A
723 02A6: MOVF 78,W
724 02A7: MOVWF 29
725 .................... return x;
726 02A8: MOVF 29,W
727 02A9: MOVWF 78
728 02AA: MOVF 2A,W
729 02AB: MOVWF 79
730 ....................
731 .................... }
732 02AC: BCF 0A.3
733 02AD: BCF 0A.4
734 02AE: GOTO 3BC (RETURN)
735 ....................
736 ....................
737 ....................
738 ....................
739 ....................
740 .................... void main()
741 .................... {
742 *
743 032F: CLRF 04
744 0330: BCF 03.7
745 0331: MOVLW 1F
746 0332: ANDWF 03,F
747 0333: MOVLW 71
748 0334: BSF 03.5
749 0335: MOVWF 0F
750 0336: MOVF 0F,W
751 0337: BCF 03.5
752 0338: BCF 20.7
753 0339: MOVF 20,W
754 033A: BSF 03.5
755 033B: MOVWF 07
756 033C: BCF 03.5
757 033D: BSF 07.7
758 033E: BSF 03.5
759 033F: BSF 03.6
760 0340: MOVF 09,W
761 0341: ANDLW C0
762 0342: MOVWF 09
763 0343: BCF 03.6
764 0344: BCF 1F.4
765 0345: BCF 1F.5
766 0346: MOVLW 00
767 0347: BSF 03.6
768 0348: MOVWF 08
769 0349: BCF 03.5
770 034A: CLRF 07
771 034B: CLRF 08
772 034C: CLRF 09
773 ....................
774 .................... setup_adc_ports(NO_ANALOGS|VSS_VDD);
775 *
776 0350: BSF 03.5
777 0351: BSF 03.6
778 0352: MOVF 09,W
779 0353: ANDLW C0
780 0354: MOVWF 09
781 0355: BCF 03.6
782 0356: BCF 1F.4
783 0357: BCF 1F.5
784 0358: MOVLW 00
785 0359: BSF 03.6
786 035A: MOVWF 08
787 .................... setup_adc(ADC_CLOCK_DIV_2);
788 035B: BCF 03.5
789 035C: BCF 03.6
790 035D: BCF 1F.6
791 035E: BCF 1F.7
792 035F: BSF 03.5
793 0360: BCF 1F.7
794 0361: BCF 03.5
795 0362: BSF 1F.0
796 .................... setup_spi(SPI_SS_DISABLED);
797 0363: BCF 14.5
798 0364: BCF 20.5
799 0365: MOVF 20,W
800 0366: BSF 03.5
801 0367: MOVWF 07
802 0368: BCF 03.5
803 0369: BSF 20.4
804 036A: MOVF 20,W
805 036B: BSF 03.5
806 036C: MOVWF 07
807 036D: BCF 03.5
808 036E: BCF 20.3
809 036F: MOVF 20,W
810 0370: BSF 03.5
811 0371: MOVWF 07
812 0372: MOVLW 01
813 0373: BCF 03.5
814 0374: MOVWF 14
815 0375: MOVLW 00
816 0376: BSF 03.5
817 0377: MOVWF 14
818 .................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
819 0378: MOVF 01,W
820 0379: ANDLW C7
821 037A: IORLW 08
822 037B: MOVWF 01
823 .................... setup_timer_1(T1_DISABLED);
824 037C: BCF 03.5
825 037D: CLRF 10
826 .................... setup_timer_2(T2_DISABLED,0,1);
827 037E: MOVLW 00
828 037F: MOVWF 78
829 0380: MOVWF 12
830 0381: MOVLW 00
831 0382: BSF 03.5
832 0383: MOVWF 12
833 .................... setup_ccp1(CCP_OFF);
834 0384: BCF 03.5
835 0385: BSF 20.2
836 0386: MOVF 20,W
837 0387: BSF 03.5
838 0388: MOVWF 07
839 0389: BCF 03.5
840 038A: CLRF 17
841 038B: BSF 03.5
842 038C: CLRF 1B
843 038D: CLRF 1C
844 038E: MOVLW 01
845 038F: MOVWF 1D
846 .................... setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
847 0390: BCF 03.5
848 0391: BSF 03.6
849 0392: CLRF 07
850 0393: CLRF 08
851 0394: CLRF 09
852 ....................
853 .................... printf("Magnetometr: \r\n",);
854 0395: MOVLW 04
855 0396: MOVWF 0D
856 0397: MOVLW 00
857 0398: MOVWF 0F
858 0399: BCF 03.6
859 039A: CALL 05B
860 .................... printf("(c)mlab JACHO 2013: \r\n",);
861 039B: MOVLW 0D
862 039C: BSF 03.6
863 039D: MOVWF 0D
864 039E: MOVLW 00
865 039F: MOVWF 0F
866 03A0: BCF 03.6
867 03A1: CALL 05B
868 .................... printf("Vysledky z jednotlivych os:\r\n",);
869 03A2: MOVLW 19
870 03A3: BSF 03.6
871 03A4: MOVWF 0D
872 03A5: MOVLW 00
873 03A6: MOVWF 0F
874 03A7: BCF 03.6
875 03A8: CALL 05B
876 .................... signed int16 X,Y,Z;
877 ....................
878 .................... set_mag ();
879 03A9: GOTO 0FF
880 .................... while(true)
881 .................... {
882 .................... printf("Vysledky z jednotlivych os:\r\n",);
883 03AA: MOVLW 28
884 03AB: BSF 03.6
885 03AC: MOVWF 0D
886 03AD: MOVLW 00
887 03AE: MOVWF 0F
888 03AF: BCF 03.6
889 03B0: CALL 05B
890 .................... X=mag_readX();
891 03B1: GOTO 261
892 03B2: MOVF 79,W
893 03B3: MOVWF 22
894 03B4: MOVF 78,W
895 03B5: MOVWF 21
896 .................... Y=mag_readY();
897 03B6: GOTO 27B
898 03B7: MOVF 79,W
899 03B8: MOVWF 24
900 03B9: MOVF 78,W
901 03BA: MOVWF 23
902 .................... Z=mag_readZ();
903 03BB: GOTO 295
904 03BC: MOVF 79,W
905 03BD: MOVWF 26
906 03BE: MOVF 78,W
907 03BF: MOVWF 25
908 .................... printf("X: %Ld \r\n", X);
909 03C0: MOVLW 58
910 03C1: MOVWF 30
911 03C2: CALL 037
912 03C3: MOVLW 3A
913 03C4: MOVWF 30
914 03C5: CALL 037
915 03C6: MOVLW 20
916 03C7: MOVWF 30
917 03C8: CALL 037
918 03C9: MOVLW 10
919 03CA: MOVWF 04
920 03CB: MOVF 22,W
921 03CC: MOVWF 28
922 03CD: MOVF 21,W
923 03CE: MOVWF 27
924 03CF: CALL 2AF
925 03D0: MOVLW 20
926 03D1: MOVWF 30
927 03D2: CALL 037
928 03D3: MOVLW 0D
929 03D4: MOVWF 30
930 03D5: CALL 037
931 03D6: MOVLW 0A
932 03D7: MOVWF 30
933 03D8: CALL 037
934 .................... printf("Y %Ld \r\n", Y);
935 03D9: MOVLW 59
936 03DA: MOVWF 30
937 03DB: CALL 037
938 03DC: MOVLW 20
939 03DD: MOVWF 30
940 03DE: CALL 037
941 03DF: MOVLW 10
942 03E0: MOVWF 04
943 03E1: MOVF 24,W
944 03E2: MOVWF 28
945 03E3: MOVF 23,W
946 03E4: MOVWF 27
947 03E5: CALL 2AF
948 03E6: MOVLW 20
949 03E7: MOVWF 30
950 03E8: CALL 037
951 03E9: MOVLW 0D
952 03EA: MOVWF 30
953 03EB: CALL 037
954 03EC: MOVLW 0A
955 03ED: MOVWF 30
956 03EE: CALL 037
957 .................... printf("Z: %Ld \r\n", Z);
958 03EF: MOVLW 5A
959 03F0: MOVWF 30
960 03F1: CALL 037
961 03F2: MOVLW 3A
962 03F3: MOVWF 30
963 03F4: CALL 037
964 03F5: MOVLW 20
965 03F6: MOVWF 30
966 03F7: CALL 037
967 03F8: MOVLW 10
968 03F9: MOVWF 04
969 03FA: MOVF 26,W
970 03FB: MOVWF 28
971 03FC: MOVF 25,W
972 03FD: MOVWF 27
973 03FE: CALL 2AF
974 03FF: MOVLW 20
975 0400: MOVWF 30
976 0401: CALL 037
977 0402: MOVLW 0D
978 0403: MOVWF 30
979 0404: CALL 037
980 0405: MOVLW 0A
981 0406: MOVWF 30
982 0407: CALL 037
983 .................... Delay_ms(2000);
984 0408: MOVLW 08
985 0409: MOVWF 27
986 040A: MOVLW FA
987 040B: MOVWF 28
988 040C: CALL 0EB
989 040D: DECFSZ 27,F
990 040E: GOTO 40A
991 ....................
992 .................... }
993 040F: GOTO 3AA
994 .................... }
995 0410: SLEEP
996  
997 Configuration Fuses:
998 Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUG
999 Word 2: 3FFF NOWRT BORV40