o: ActiveSupport::Cache::Entry :@compressedF: @value"\ž"Už
main.esym
1
C L "MAIN" 0 20 1 "FUNCTION"
2
D G "__PCM__" 0 73 ""4.106""
3
D G "__DEVICE__" 0 73 "887"
4
D G "__DATE__" 0 73 ""15-V-13""
5
D G "__TIME__" 0 73 ""20:34:15"" "Standard Header file for the PIC16F887 device ////////////////"
1
D G "__PCM__" 0 0 ""4.106""
2
D G "__DEVICE__" 0 0 ""
3
D G "__DATE__" 0 0 ""17-V-13""
4
D G "__TIME__" 0 0 ""12:14:46"" "Standard Header file for the PIC16F887 device ////////////////"
6 5
d G "PIN_A0" 2 20 "40"
7 6
d G "PIN_A1" 2 21 "41"
8 7
d G "PIN_A2" 2 22 "42"
......
274 273
d G "INT_RB5" 2 418 "0x0200B08"
275 274
d G "INT_RB6" 2 419 "0x0400B08"
276 275
d G "INT_RB7" 2 420 "0x0800B08"
277
D G "MAG_ADDR_R" 3 1 "0x3D" "addresa pro cteni"
278
D G "MAG_ADDR_W" 3 2 "0x3C"
279
D G "MAG_ROZ088" 3 7 "0x00"
280
D G "MAG_ROZ130" 3 8 "0x20"
281
D G "MAG_ROZ190" 3 9 "0x40"
282
D G "MAG_ROZ250" 3 10 "0x60"
283
D G "MAG_ROZ400" 3 11 "0x80"
284
D G "MAG_ROZ470" 3 12 "0xA0"
285
D G "MAG_ROZ560" 3 13 "0xC0"
286
D G "MAG_ROZ810" 3 14 "0xE0"
287
D G "HMC5883L_WRT_ADDR" 4 2 "0x3C"
288
D G "HMC5883L_READ_ADDR" 4 3 "0x3D"
289
D G "HMC5883L_CFG_A_REG" 4 6 "0x00"
290
D G "HMC5883L_CFG_B_REG" 4 7 "0x01"
291
D G "HMC5883L_MODE_REG" 4 8 "0x02"
292
D G "HMC5883L_X_MSB_REG" 4 9 "0x03"
293
C L "hmc5883l_write_reg" 4 1 1 "FUNCTION"
294
F G "hmc5883l_write_reg" 4 14 "void(int8 reg,int8 data)"
276
D G "HMC5883L_WRT_ADDR" 3 2 "0x3C"
277
D G "HMC5883L_READ_ADDR" 3 3 "0x3D"
278
D G "HMC5883L_CFG_A_REG" 3 6 "0x00"
279
D G "HMC5883L_CFG_B_REG" 3 7 "0x01"
280
D G "HMC5883L_MODE_REG" 3 8 "0x02"
281
D G "HMC5883L_X_MSB_REG" 3 9 "0x03"
282
D G "MAG_ROZ088" 3 13 "0x00"
283
D G "MAG_ROZ130" 3 14 "0x20"
284
D G "MAG_ROZ190" 3 15 "0x40"
285
D G "MAG_ROZ250" 3 16 "0x60"
286
D G "MAG_ROZ400" 3 17 "0x80"
287
D G "MAG_ROZ470" 3 18 "0xA0"
288
D G "MAG_ROZ560" 3 19 "0xC0"
289
D G "MAG_ROZ810" 3 20 "0xE0"
290
C L "hmc5883l_write_reg" 4 2 1 "FUNCTION"
291
F G "hmc5883l_write_reg" 4 4 "void()"
292
V L "reg" 4 4 "int8"
293
V L "data" 4 4 "int8"
294
F G "hmc5883l_read_reg" 4 14 "int8()"
295 295
V L "reg" 4 14 "int8"
296
V L "data" 4 14 "int8"
297
F G "hmc5883l_read_reg" 4 24 "int8(int8 reg)"
298
V L "reg" 4 24 "int8"
299
V L "retval" 4 26 "int8"
300
T G "hmc5883l_result" 4 45 "{sint16 x,sint16 y,sint16 z}" "This global structure holds the values read"
301
V G "compass" 4 49 "hmc5883l_result"
302
F G "hmc5883l_read_data" 4 52 "void()"
303
V L "x_lsb" 4 54 "int8"
304
V L "x_msb" 4 55 "int8"
305
V L "y_lsb" 4 57 "int8"
306
V L "y_msb" 4 58 "int8"
307
V L "z_lsb" 4 60 "int8"
308
V L "z_msb" 4 61 "int8"
309
C L "hmc5883l_read_data" 4 1 1 "FUNCTION"
310
C L "hmc5883l_read_data" 4 1 1 "FUNCTION"
311
C L "hmc5883l_read_data" 4 1 1 "FUNCTION"
296
V L "retval" 4 16 "int8"
297
T G "hmc5883l_result" 4 35 "{sint16 x,sint16 y,sint16 z}" "This global structure holds the values read"
298
V G "compass" 4 39 "hmc5883l_result"
299
F G "hmc5883l_read_data" 4 42 "void()"
300
V L "x_lsb" 4 44 "int8"
301
V L "x_msb" 4 45 "int8"
302
V L "y_lsb" 4 47 "int8"
303
V L "y_msb" 4 48 "int8"
304
V L "z_lsb" 4 50 "int8"
305
V L "z_msb" 4 51 "int8"
306
C L "hmc5883l_read_data" 4 2 1 "FUNCTION"
307
C L "hmc5883l_read_data" 4 2 1 "FUNCTION"
308
C L "hmc5883l_read_data" 4 2 1 "FUNCTION"
312 309
D G "MATH_H" 5 21 ""
313 310
D G "PI" 5 26 "3.1415926535897932"
314 311
D G "SQRT2" 5 29 "1.4142135623730950"
315 312
C L "CEIL_FLOOR" 5 2 3 "FUNCTION"
316
F G "CEIL_FLOOR" 5 36 "float(float x,int8 n)"
313
F G "CEIL_FLOOR" 5 36 "float()"
317 314
V L "x" 5 36 "float"
318 315
V L "n" 5 36 "int8"
319 316
V L "y" 5 38 "float"
......
321 318
V L "l" 5 39 "int16"
322 319
V L "s" 5 40 "int1"
323 320
C L "floor" 5 2 5 "FUNCTION"
324
F G "floor" 5 192 "float(float x)"
321
F G "floor" 5 192 "float()"
325 322
V L "x" 5 192 "float"
326 323
C L "ceil" 5 2 5 "FUNCTION"
327
F G "ceil" 5 218 "float(float x)"
324
F G "ceil" 5 218 "float()"
328 325
V L "x" 5 218 "float"
329 326
D G "fabs" 5 244 "abs"
330 327
C L "fmod" 5 2 6 "FUNCTION"
331
F G "fmod" 5 256 "float(float x,float y)"
328
F G "fmod" 5 256 "float()"
332 329
V L "x" 5 256 "float"
333 330
V L "y" 5 256 "float"
334 331
V L "i" 5 258 "float"
335 332
D G "LN2" 5 319 "0.6931471805599453"
336 333
V G "pe" 5 321 "float[6]"
337
F G "exp" 5 325 "float(float x)"
334
F G "exp" 5 325 "float()"
338 335
V L "x" 5 325 "float"
339 336
V L "y" 5 327 "float"
340 337
V L "res" 5 327 "float"
......
345 342
V G "pl" 5 496 "float[4]"
346 343
V G "ql" 5 497 "float[4]"
347 344
C L "log" 5 2 3 "FUNCTION"
348
F G "log" 5 505 "float(float x)"
345
F G "log" 5 505 "float()"
349 346
V L "x" 5 505 "float"
350 347
V L "y" 5 507 "float"
351 348
V L "res" 5 507 "float"
......
355 352
C L "log" 5 2 1 "FUNCTION"
356 353
D G "LN10" 5 729 "2.3025850929940456"
357 354
C L "log10" 5 2 3 "FUNCTION"
358
F G "log10" 5 737 "float(float x)"
355
F G "log10" 5 737 "float()"
359 356
V L "x" 5 737 "float"
360 357
V L "r" 5 739 "float"
361 358
C L "modf" 5 2 8 "FUNCTION"
362
F G "modf" 5 778 "float(float value,*float iptr)"
359
F G "modf" 5 778 "float()"
363 360
V L "value" 5 778 "float"
364 361
V L "iptr" 5 778 "*float"
365 362
C L "pwr" 5 2 6 "FUNCTION"
366
F G "pwr" 5 806 "float(float x,float y)"
363
F G "pwr" 5 806 "float()"
367 364
V L "x" 5 806 "float"
368 365
V L "y" 5 806 "float"
369 366
C L "pow" 5 2 7 "FUNCTION"
370
F G "pow" 5 869 "float(float x,float y)"
367
F G "pow" 5 869 "float()"
371 368
V L "x" 5 869 "float"
372 369
V L "y" 5 869 "float"
373 370
C L "sqrt" 5 2 5 "FUNCTION"
374
F G "sqrt" 5 930 "float(float x)"
371
F G "sqrt" 5 930 "float()"
375 372
V L "x" 5 930 "float"
376 373
V L "y" 5 932 "float"
377 374
V L "res" 5 932 "float"
378 375
V L "p" 5 936 "*int8"
379 376
D G "PI_DIV_BY_TWO" 5 1125 "1.5707963267948966"
380 377
C L "cos" 5 2 3 "FUNCTION"
381
F G "cos" 5 1136 "float(float x)"
378
F G "cos" 5 1136 "float()"
382 379
V L "x" 5 1136 "float"
383 380
V L "y" 5 1138 "float"
384 381
V L "t" 5 1138 "float"
......
396 393
C L "cos" 5 2 1 "FUNCTION"
397 394
C L "cos" 5 2 1 "FUNCTION"
398 395
C L "sin" 5 2 5 "FUNCTION"
399
F G "sin" 5 1278 "float(float x)"
396
F G "sin" 5 1278 "float()"
400 397
V L "x" 5 1278 "float"
401 398
C L "tan" 5 2 5 "FUNCTION"
402
F G "tan" 5 1304 "float(float x)"
399
F G "tan" 5 1304 "float()"
403 400
V L "x" 5 1304 "float"
404 401
V L "c" 5 1306 "float"
405 402
V L "s" 5 1306 "float"
406 403
V G "pas" 5 1344 "float[3]"
407 404
V G "qas" 5 1345 "float[3]"
408
F G "ASIN_COS" 5 1347 "float(float x,int8 n)"
405
F G "ASIN_COS" 5 1347 "float()"
409 406
V L "x" 5 1347 "float"
410 407
V L "n" 5 1347 "int8"
411 408
V L "y" 5 1349 "float"
......
416 413
C L "ASIN_COS" 5 2 1 "FUNCTION"
417 414
C L "ASIN_COS" 5 2 1 "FUNCTION"
418 415
C L "asin" 5 2 5 "FUNCTION"
419
F G "asin" 5 1493 "float(float x)"
416
F G "asin" 5 1493 "float()"
420 417
V L "x" 5 1493 "float"
421 418
V L "r" 5 1495 "float"
422 419
C L "acos" 5 2 5 "FUNCTION"
423
F G "acos" 5 1527 "float(float x)"
420
F G "acos" 5 1527 "float()"
424 421
V L "x" 5 1527 "float"
425 422
V L "r" 5 1529 "float"
426 423
V G "pat" 5 1555 "float[4]"
427 424
V G "qat" 5 1556 "float[4]"
428 425
C L "atan" 5 2 3 "FUNCTION"
429
F G "atan" 5 1564 "float(float x)"
426
F G "atan" 5 1564 "float()"
430 427
V L "x" 5 1564 "float"
431 428
V L "y" 5 1566 "float"
432 429
V L "res" 5 1566 "float"
......
435 432
V L "flag" 5 1567 "int1"
436 433
C L "atan" 5 2 1 "FUNCTION"
437 434
C L "atan2" 5 2 7 "FUNCTION"
438
F G "atan2" 5 1697 "float(float y,float x)"
435
F G "atan2" 5 1697 "float()"
439 436
V L "y" 5 1697 "float"
440 437
V L "x" 5 1697 "float"
441 438
V L "z" 5 1699 "float"
......
444 441
C L "atan2" 5 2 1 "FUNCTION"
445 442
C L "atan2" 5 2 1 "FUNCTION"
446 443
C L "cosh" 5 2 7 "FUNCTION"
447
F G "cosh" 5 1919 "float(float x)"
444
F G "cosh" 5 1919 "float()"
448 445
V L "x" 5 1919 "float"
449 446
C L "sinh" 5 2 6 "FUNCTION"
450
F G "sinh" 5 1946 "float(float x)"
447
F G "sinh" 5 1946 "float()"
451 448
V L "x" 5 1946 "float"
452 449
C L "tanh" 5 2 6 "FUNCTION"
453
F G "tanh" 5 1976 "float(float x)"
450
F G "tanh" 5 1976 "float()"
454 451
V L "x" 5 1976 "float"
455 452
D G "LOG2" 5 2006 ".30102999566398119521"
456
F G "frexp" 5 2007 "float(float x,*sint8 exp)"
453
F G "frexp" 5 2007 "float()"
457 454
V L "x" 5 2007 "float"
458 455
V L "exp" 5 2007 "*sint8"
459 456
V L "res" 5 2009 "float"
460 457
V L "sign" 5 2010 "int1"
461 458
C L "ldexp" 5 2 6 "FUNCTION"
462
F G "ldexp" 5 2152 "float(float value,sint8 exp)"
459
F G "ldexp" 5 2152 "float()"
463 460
V L "value" 5 2152 "float"
464 461
V L "exp" 5 2152 "sint8"
465 462
C L "MAIN" 5 2 2 "FUNCTION"
......
469 466
V L "anemo_speed" 0 7 "float"
470 467
V L "anemo_round" 0 8 "int16"
471 468
V L "i" 0 9 "int16" "signed int16 X,Y,Z;"
472
C L "MAIN" 0 20 3 "FUNCTION"
473
C L "MAIN" 0 20 1 "FUNCTION"
474
C L "MAIN" 0 20 1 "FUNCTION"
475
C L "MAIN" 0 20 2 "FUNCTION"
476
C L "MAIN" 0 20 6 "FUNCTION"
477
C L "MAIN" 0 20 1 "FUNCTION"
478
C L "MAIN" 0 20 7 "FUNCTION"
469
C L "MAIN" 0 19 1 "FUNCTION"
470
C L "MAIN" 0 19 2 "FUNCTION"
471
C L "MAIN" 0 19 1 "FUNCTION"
472
C L "MAIN" 0 19 1 "FUNCTION"
473
C L "MAIN" 0 19 2 "FUNCTION"
479 474
F B "reset_cpu" 0 0
480 475
F B "abs" 1 0
481 476
F B "sleep_ulpwu" 1 0
main.pjt
17 17
0=0000 %S 0 0 796 451 3 0
18 18
[Opened Files]
19 19
1=main.c
20
2=HMC5883L.c
21
3=main.h
22
4=C:\Program Files (x86)\PICC\devices\16F887.h
23
5=HMC5883L.h
24
6=
20
2=
21
3=C:\Program Files (x86)\PICC\devices\16F887.h
22
4=HMC5883L.h
23
5=HMC5883L.c
24
6=C:\Program Files (x86)\PICC\drivers\math.h
25
7=
25 26
[Target Data]
26 27
OptionString=-p +FM
27 28
FileList=Z:\home\kaklik\svnMLAB\Modules\Sensors\MAG01A\SW\PIC16F887\main.c
HMC5883L.h
1
#define MAG_ADDR_R  0x3D //addresa pro cteni
2
#define MAG_ADDR_W  0x3C
1
// i2c slave addresses
2
#define HMC5883L_WRT_ADDR  0x3C
3
#define HMC5883L_READ_ADDR 0x3D
3 4

  
5
// Register addresses
6
#define HMC5883L_CFG_A_REG 0x00
7
#define HMC5883L_CFG_B_REG 0x01
8
#define HMC5883L_MODE_REG  0x02
9
#define HMC5883L_X_MSB_REG 0x03
4 10

  
5 11
//Konstanty nastavujici rozsah
6 12
//pro void set_mag_roz (unsigned int8 h)
main.c
8 8
unsigned int16 anemo_round=0;
9 9
unsigned int16 i;
10 10

  
11

  
12 11
//signed int16 X,Y,Z;
13 12
  setup_adc_ports(NO_ANALOGS|VSS_VDD);
14 13
  setup_adc(ADC_CLOCK_DIV_2);
......
19 18
  setup_ccp1(CCP_OFF);
20 19
  setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
21 20

  
21
  printf("Magnetometr:  \r\n",);
22
  printf("(c)mlab JACHO 2013:  \r\n",);
23
  printf("X, Y, Z \r\n",);
24

  
25

  
22 26
// Init the HMC5883L.  Set Mode register for
23 27
// continuous measurements.
24 28
hmc5883l_write_reg(HMC5883L_CFG_A_REG, 0x18);      // no average, maximal update range
......
29 33
// Wait at least 67 ms between reads, re the HMC5883L data sheet.
30 34

  
31 35

  
32
  printf("Magnetometr:  \r\n",);
33
  printf("(c)mlab JACHO 2013:  \r\n",);
34
  printf("X, Y, Z \r\n",);
35

  
36
/*  while(true)
37
  {  
38
    X = mag_readX();
39
    Y = mag_readY();
40
    Z = mag_readZ();
41
    printf("%4Ld %4Ld %4Ld \r\n", X, Y, Z);
42
    Delay_ms(50);  
43
   
44
  }
45
*/
46

  
47 36
while(TRUE)
48 37
  {
49 38

  
50
//   for(i=0;i<=10;i++)
51
//   {
52
     hmc5883l_read_data();   
53
   
54
//     b = atan2((float)compass.y,(float)compass.x); // vypocet azimutu z kartezskych souradnic
55
//     b = (b/3.141596)*180;  // prevod na stupne
56
//     b += 180;
57

  
58
//     anemo_speed += (b-last);
59
//     last=b;
60
//     delay_ms(10);
61
//   }
62
//   anemo_speed=anemo_speed/10;
63

  
64
   printf("%6Ld %6Ld %6Ld \n\r", compass.x, compass.y, compass.z);
65
//   delay_ms(100);
39
    hmc5883l_read_data();   
40
    printf("%6Ld %6Ld %6Ld \n\r", compass.x, compass.y, compass.z);
41
    delay_ms(100);
66 42
  }    
67 43

  
68 44
}
main.lst
1
CCS PCM C Compiler, Version 4.106, 47914               15-V-13 20:34
1
CCS PCM C Compiler, Version 4.106, 47914               17-V-13 12:14
2 2

  
3 3
               Filename: Z:\home\kaklik\svnMLAB\Modules\Sensors\MAG01A\SW\PIC16F887\main.lst
4 4

  
5
               ROM used: 775 words (9%)
5
               ROM used: 799 words (10%)
6 6
                         Largest free fragment is 2048
7 7
               RAM used: 28 (8%) at main() level
8 8
                         38 (10%) worst case
......
11 11
*
12 12
0000:  MOVLW  02
13 13
0001:  MOVWF  0A
14
0002:  GOTO   24F
14
0002:  GOTO   266
15 15
0003:  NOP
16 16
.................... #include "main.h" 
17 17
.................... #include <16F887.h> 
......
36 36
.................... #FUSES BORV40                   //Brownout reset at 4.0V 
37 37
....................  
38 38
.................... #use delay(clock=8000000) 
39
.................... #use i2c(master, sda=PIN_C4, scl=PIN_C3) 
40 39
*
41
001F:  MOVLW  08
42
0020:  MOVWF  78
43
0021:  NOP
44
0022:  BCF    07.3
45
0023:  BCF    20.3
46
0024:  MOVF   20,W
47
0025:  BSF    03.5
48
0026:  MOVWF  07
49
0027:  NOP
50
0028:  BCF    03.5
51
0029:  RLF    3D,F
52
002A:  BCF    07.4
53
002B:  BTFSS  03.0
54
002C:  GOTO   033
55
002D:  BSF    20.4
56
002E:  MOVF   20,W
57
002F:  BSF    03.5
58
0030:  MOVWF  07
59
0031:  GOTO   037
60
0032:  BCF    03.5
61
0033:  BCF    20.4
62
0034:  MOVF   20,W
63
0035:  BSF    03.5
64
0036:  MOVWF  07
65
0037:  NOP
66
0038:  BCF    03.5
67
0039:  BSF    20.3
68
003A:  MOVF   20,W
69
003B:  BSF    03.5
70
003C:  MOVWF  07
71
003D:  BCF    03.5
72
003E:  BTFSS  07.3
73
003F:  GOTO   03E
74
0040:  DECFSZ 78,F
75
0041:  GOTO   021
76
0042:  NOP
77
0043:  BCF    07.3
78
0044:  BCF    20.3
79
0045:  MOVF   20,W
80
0046:  BSF    03.5
81
0047:  MOVWF  07
82
0048:  NOP
83
0049:  BCF    03.5
84
004A:  BSF    20.4
85
004B:  MOVF   20,W
86
004C:  BSF    03.5
87
004D:  MOVWF  07
88
004E:  NOP
89
004F:  NOP
90
0050:  BCF    03.5
91
0051:  BSF    20.3
92
0052:  MOVF   20,W
93
0053:  BSF    03.5
94
0054:  MOVWF  07
95
0055:  BCF    03.5
96
0056:  BTFSS  07.3
97
0057:  GOTO   056
98
0058:  CLRF   78
99
0059:  NOP
100
005A:  BTFSC  07.4
101
005B:  BSF    78.0
102
005C:  BCF    07.3
103
005D:  BCF    20.3
104
005E:  MOVF   20,W
105
005F:  BSF    03.5
106
0060:  MOVWF  07
107
0061:  BCF    03.5
108
0062:  BCF    07.4
109
0063:  BCF    20.4
110
0064:  MOVF   20,W
111
0065:  BSF    03.5
112
0066:  MOVWF  07
113
0067:  BCF    03.5
114
0068:  RETURN
40
0250:  MOVLW  37
41
0251:  MOVWF  04
42
0252:  BCF    03.7
43
0253:  MOVF   00,W
44
0254:  BTFSC  03.2
45
0255:  GOTO   263
46
0256:  MOVLW  02
47
0257:  MOVWF  78
48
0258:  CLRF   77
49
0259:  DECFSZ 77,F
50
025A:  GOTO   259
51
025B:  DECFSZ 78,F
52
025C:  GOTO   258
53
025D:  MOVLW  97
54
025E:  MOVWF  77
55
025F:  DECFSZ 77,F
56
0260:  GOTO   25F
57
0261:  DECFSZ 00,F
58
0262:  GOTO   256
59
0263:  BCF    0A.3
60
0264:  BCF    0A.4
61
0265:  GOTO   31D (RETURN)
62
.................... #use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3) 
115 63
*
116
010B:  MOVLW  08
117
010C:  MOVWF  3E
118
010D:  MOVF   77,W
119
010E:  MOVWF  3F
120
010F:  BSF    20.4
121
0110:  MOVF   20,W
122
0111:  BSF    03.5
123
0112:  MOVWF  07
124
0113:  NOP
125
0114:  BCF    03.5
126
0115:  BSF    20.3
127
0116:  MOVF   20,W
128
0117:  BSF    03.5
129
0118:  MOVWF  07
130
0119:  BCF    03.5
131
011A:  BTFSS  07.3
132
011B:  GOTO   11A
133
011C:  BTFSC  07.4
134
011D:  BSF    03.0
135
011E:  BTFSS  07.4
136
011F:  BCF    03.0
137
0120:  RLF    78,F
138
0121:  NOP
139
0122:  BCF    20.3
140
0123:  MOVF   20,W
141
0124:  BSF    03.5
142
0125:  MOVWF  07
143
0126:  BCF    03.5
144
0127:  BCF    07.3
145
0128:  DECFSZ 3E,F
146
0129:  GOTO   10F
147
012A:  BSF    20.4
148
012B:  MOVF   20,W
149
012C:  BSF    03.5
150
012D:  MOVWF  07
151
012E:  NOP
152
012F:  BCF    03.5
153
0130:  BCF    07.4
154
0131:  MOVF   3F,W
155
0132:  BTFSC  03.2
156
0133:  GOTO   139
157
0134:  BCF    20.4
158
0135:  MOVF   20,W
159
0136:  BSF    03.5
160
0137:  MOVWF  07
161
0138:  BCF    03.5
162
0139:  NOP
163
013A:  BSF    20.3
164
013B:  MOVF   20,W
165
013C:  BSF    03.5
166
013D:  MOVWF  07
167
013E:  BCF    03.5
168
013F:  BTFSS  07.3
169
0140:  GOTO   13F
170
0141:  NOP
171
0142:  BCF    07.3
172
0143:  BCF    20.3
173
0144:  MOVF   20,W
174
0145:  BSF    03.5
175
0146:  MOVWF  07
176
0147:  NOP
177
0148:  BCF    03.5
178
0149:  BCF    07.4
179
014A:  BCF    20.4
180
014B:  MOVF   20,W
181
014C:  BSF    03.5
182
014D:  MOVWF  07
183
014E:  BCF    03.5
184
014F:  RETURN
185
.................... #use rs232(baud=115200,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD 
64
0089:  MOVLW  08
65
008A:  MOVWF  78
66
008B:  NOP
67
008C:  BCF    07.3
68
008D:  BCF    20.3
69
008E:  MOVF   20,W
70
008F:  BSF    03.5
71
0090:  MOVWF  07
72
0091:  NOP
73
0092:  BCF    03.5
74
0093:  RLF    3D,F
75
0094:  BCF    07.4
76
0095:  BTFSS  03.0
77
0096:  GOTO   09D
78
0097:  BSF    20.4
79
0098:  MOVF   20,W
80
0099:  BSF    03.5
81
009A:  MOVWF  07
82
009B:  GOTO   0A1
83
009C:  BCF    03.5
84
009D:  BCF    20.4
85
009E:  MOVF   20,W
86
009F:  BSF    03.5
87
00A0:  MOVWF  07
88
00A1:  NOP
89
00A2:  BCF    03.5
90
00A3:  BSF    20.3
91
00A4:  MOVF   20,W
92
00A5:  BSF    03.5
93
00A6:  MOVWF  07
94
00A7:  BCF    03.5
95
00A8:  BTFSS  07.3
96
00A9:  GOTO   0A8
97
00AA:  DECFSZ 78,F
98
00AB:  GOTO   08B
99
00AC:  NOP
100
00AD:  BCF    07.3
101
00AE:  BCF    20.3
102
00AF:  MOVF   20,W
103
00B0:  BSF    03.5
104
00B1:  MOVWF  07
105
00B2:  NOP
106
00B3:  BCF    03.5
107
00B4:  BSF    20.4
108
00B5:  MOVF   20,W
109
00B6:  BSF    03.5
110
00B7:  MOVWF  07
111
00B8:  NOP
112
00B9:  NOP
113
00BA:  BCF    03.5
114
00BB:  BSF    20.3
115
00BC:  MOVF   20,W
116
00BD:  BSF    03.5
117
00BE:  MOVWF  07
118
00BF:  BCF    03.5
119
00C0:  BTFSS  07.3
120
00C1:  GOTO   0C0
121
00C2:  CLRF   78
122
00C3:  NOP
123
00C4:  BTFSC  07.4
124
00C5:  BSF    78.0
125
00C6:  BCF    07.3
126
00C7:  BCF    20.3
127
00C8:  MOVF   20,W
128
00C9:  BSF    03.5
129
00CA:  MOVWF  07
130
00CB:  BCF    03.5
131
00CC:  BCF    07.4
132
00CD:  BCF    20.4
133
00CE:  MOVF   20,W
134
00CF:  BSF    03.5
135
00D0:  MOVWF  07
136
00D1:  BCF    03.5
137
00D2:  RETURN
186 138
*
187
00A2:  BCF    20.7
188
00A3:  MOVF   20,W
189
00A4:  BSF    03.5
190
00A5:  MOVWF  07
191
00A6:  BCF    03.5
192
00A7:  BCF    07.7
193
00A8:  MOVLW  08
194
00A9:  MOVWF  78
195
00AA:  GOTO   0AB
196
00AB:  NOP
197
00AC:  BSF    78.7
198
00AD:  GOTO   0C0
199
00AE:  BCF    78.7
200
00AF:  MOVF   40,W
201
00B0:  MOVWF  79
202
00B1:  RRF    79,F
203
00B2:  BTFSC  03.0
204
00B3:  BSF    07.7
205
00B4:  BTFSS  03.0
206
00B5:  BCF    07.7
207
00B6:  BSF    78.6
208
00B7:  GOTO   0C0
209
00B8:  BCF    78.6
210
00B9:  DECFSZ 78,F
211
00BA:  GOTO   0B1
212
00BB:  MOVF   79,W
213
00BC:  MOVWF  40
214
00BD:  GOTO   0BE
215
00BE:  NOP
216
00BF:  BSF    07.7
217
00C0:  BTFSC  78.7
218
00C1:  GOTO   0AE
219
00C2:  BTFSC  78.6
220
00C3:  GOTO   0B8
221
00C4:  RETURN
139
010C:  MOVLW  08
140
010D:  MOVWF  3E
141
010E:  MOVF   77,W
142
010F:  MOVWF  3F
143
0110:  BSF    20.4
144
0111:  MOVF   20,W
145
0112:  BSF    03.5
146
0113:  MOVWF  07
147
0114:  NOP
148
0115:  BCF    03.5
149
0116:  BSF    20.3
150
0117:  MOVF   20,W
151
0118:  BSF    03.5
152
0119:  MOVWF  07
153
011A:  BCF    03.5
154
011B:  BTFSS  07.3
155
011C:  GOTO   11B
156
011D:  BTFSC  07.4
157
011E:  BSF    03.0
158
011F:  BTFSS  07.4
159
0120:  BCF    03.0
160
0121:  RLF    78,F
161
0122:  NOP
162
0123:  BCF    20.3
163
0124:  MOVF   20,W
164
0125:  BSF    03.5
165
0126:  MOVWF  07
166
0127:  BCF    03.5
167
0128:  BCF    07.3
168
0129:  DECFSZ 3E,F
169
012A:  GOTO   110
170
012B:  BSF    20.4
171
012C:  MOVF   20,W
172
012D:  BSF    03.5
173
012E:  MOVWF  07
174
012F:  NOP
175
0130:  BCF    03.5
176
0131:  BCF    07.4
177
0132:  MOVF   3F,W
178
0133:  BTFSC  03.2
179
0134:  GOTO   13A
180
0135:  BCF    20.4
181
0136:  MOVF   20,W
182
0137:  BSF    03.5
183
0138:  MOVWF  07
184
0139:  BCF    03.5
185
013A:  NOP
186
013B:  BSF    20.3
187
013C:  MOVF   20,W
188
013D:  BSF    03.5
189
013E:  MOVWF  07
190
013F:  BCF    03.5
191
0140:  BTFSS  07.3
192
0141:  GOTO   140
193
0142:  NOP
194
0143:  BCF    07.3
195
0144:  BCF    20.3
196
0145:  MOVF   20,W
197
0146:  BSF    03.5
198
0147:  MOVWF  07
199
0148:  NOP
200
0149:  BCF    03.5
201
014A:  BCF    07.4
202
014B:  BCF    20.4
203
014C:  MOVF   20,W
204
014D:  BSF    03.5
205
014E:  MOVWF  07
206
014F:  BCF    03.5
207
0150:  RETURN
208
.................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD 
209
*
210
001F:  BCF    20.7
211
0020:  MOVF   20,W
212
0021:  BSF    03.5
213
0022:  MOVWF  07
214
0023:  BCF    03.5
215
0024:  BCF    07.7
216
0025:  MOVLW  08
217
0026:  MOVWF  78
218
0027:  GOTO   028
219
0028:  NOP
220
0029:  BSF    78.7
221
002A:  GOTO   039
222
002B:  BCF    78.7
223
002C:  RRF    40,F
224
002D:  BTFSC  03.0
225
002E:  BSF    07.7
226
002F:  BTFSS  03.0
227
0030:  BCF    07.7
228
0031:  BSF    78.6
229
0032:  GOTO   039
230
0033:  BCF    78.6
231
0034:  DECFSZ 78,F
232
0035:  GOTO   02C
233
0036:  GOTO   037
234
0037:  NOP
235
0038:  BSF    07.7
236
0039:  MOVLW  3F
237
003A:  MOVWF  04
238
003B:  DECFSZ 04,F
239
003C:  GOTO   03B
240
003D:  NOP
241
003E:  BTFSC  78.7
242
003F:  GOTO   02B
243
0040:  BTFSC  78.6
244
0041:  GOTO   033
245
0042:  RETURN
222 246
....................  
223 247
....................  
224 248
.................... #include "HMC5883L.h" 
225
.................... #define MAG_ADDR_R  0x3D //addresa pro cteni 
226
.................... #define MAG_ADDR_W  0x3C 
249
.................... // i2c slave addresses 
250
.................... #define HMC5883L_WRT_ADDR  0x3C 
251
.................... #define HMC5883L_READ_ADDR 0x3D 
227 252
....................  
253
.................... // Register addresses 
254
.................... #define HMC5883L_CFG_A_REG 0x00 
255
.................... #define HMC5883L_CFG_B_REG 0x01 
256
.................... #define HMC5883L_MODE_REG  0x02 
257
.................... #define HMC5883L_X_MSB_REG 0x03 
228 258
....................  
229 259
.................... //Konstanty nastavujici rozsah 
230 260
.................... //pro void set_mag_roz (unsigned int8 h) 
......
239 269
....................  
240 270
....................  
241 271
.................... #include "HMC5883L.c" 
242
.................... // i2c slave addresses 
243
.................... #define HMC5883L_WRT_ADDR  0x3C 
244
.................... #define HMC5883L_READ_ADDR 0x3D 
245
....................  
246
.................... // Register addresses 
247
.................... #define HMC5883L_CFG_A_REG 0x00 
248
.................... #define HMC5883L_CFG_B_REG 0x01 
249
.................... #define HMC5883L_MODE_REG  0x02 
250
.................... #define HMC5883L_X_MSB_REG 0x03 
251
....................  
252 272
.................... //------------------------------ 
253 273
.................... // Low level routines 
254 274
.................... //------------------------------ 
......
256 276
.................... { 
257 277
.................... i2c_start(); 
258 278
*
259
0069:  BSF    20.4
260
006A:  MOVF   20,W
261
006B:  BSF    03.5
262
006C:  MOVWF  07
263
006D:  NOP
264
006E:  BCF    03.5
265
006F:  BSF    20.3
266
0070:  MOVF   20,W
267
0071:  BSF    03.5
268
0072:  MOVWF  07
269
0073:  NOP
270
0074:  BCF    03.5
271
0075:  BCF    07.4
272
0076:  BCF    20.4
273
0077:  MOVF   20,W
274
0078:  BSF    03.5
275
0079:  MOVWF  07
276
007A:  NOP
277
007B:  BCF    03.5
278
007C:  BCF    07.3
279
007D:  BCF    20.3
280
007E:  MOVF   20,W
281
007F:  BSF    03.5
282
0080:  MOVWF  07
279
00D3:  BSF    20.4
280
00D4:  MOVF   20,W
281
00D5:  BSF    03.5
282
00D6:  MOVWF  07
283
00D7:  NOP
284
00D8:  BCF    03.5
285
00D9:  BSF    20.3
286
00DA:  MOVF   20,W
287
00DB:  BSF    03.5
288
00DC:  MOVWF  07
289
00DD:  NOP
290
00DE:  BCF    03.5
291
00DF:  BCF    07.4
292
00E0:  BCF    20.4
293
00E1:  MOVF   20,W
294
00E2:  BSF    03.5
295
00E3:  MOVWF  07
296
00E4:  NOP
297
00E5:  BCF    03.5
298
00E6:  BCF    07.3
299
00E7:  BCF    20.3
300
00E8:  MOVF   20,W
301
00E9:  BSF    03.5
302
00EA:  MOVWF  07
283 303
.................... i2c_write(HMC5883L_WRT_ADDR); 
284
0081:  MOVLW  3C
285
0082:  BCF    03.5
286
0083:  MOVWF  3D
287
0084:  CALL   01F
304
00EB:  MOVLW  3C
305
00EC:  BCF    03.5
306
00ED:  MOVWF  3D
307
00EE:  CALL   089
288 308
.................... i2c_write(reg); 
289
0085:  MOVF   37,W
290
0086:  MOVWF  3D
291
0087:  CALL   01F
309
00EF:  MOVF   37,W
310
00F0:  MOVWF  3D
311
00F1:  CALL   089
292 312
.................... i2c_write(data); 
293
0088:  MOVF   38,W
294
0089:  MOVWF  3D
295
008A:  CALL   01F
313
00F2:  MOVF   38,W
314
00F3:  MOVWF  3D
315
00F4:  CALL   089
296 316
.................... i2c_stop(); 
297
008B:  BCF    20.4
298
008C:  MOVF   20,W
299
008D:  BSF    03.5
300
008E:  MOVWF  07
301
008F:  NOP
302
0090:  BCF    03.5
303
0091:  BSF    20.3
304
0092:  MOVF   20,W
305
0093:  BSF    03.5
306
0094:  MOVWF  07
307
0095:  BCF    03.5
308
0096:  BTFSS  07.3
309
0097:  GOTO   096
310
0098:  NOP
311
0099:  GOTO   09A
312
009A:  NOP
313
009B:  BSF    20.4
314
009C:  MOVF   20,W
315
009D:  BSF    03.5
316
009E:  MOVWF  07
317
009F:  NOP
317
00F5:  BCF    20.4
318
00F6:  MOVF   20,W
319
00F7:  BSF    03.5
320
00F8:  MOVWF  07
321
00F9:  NOP
322
00FA:  BCF    03.5
323
00FB:  BSF    20.3
324
00FC:  MOVF   20,W
325
00FD:  BSF    03.5
326
00FE:  MOVWF  07
327
00FF:  BCF    03.5
328
0100:  BTFSS  07.3
329
0101:  GOTO   100
330
0102:  NOP
331
0103:  GOTO   104
332
0104:  NOP
333
0105:  BSF    20.4
334
0106:  MOVF   20,W
335
0107:  BSF    03.5
336
0108:  MOVWF  07
337
0109:  NOP
318 338
.................... } 
319
00A0:  BCF    03.5
320
00A1:  RETURN
339
010A:  BCF    03.5
340
010B:  RETURN
321 341
....................  
322 342
.................... //------------------------------ 
323 343
.................... int8 hmc5883l_read_reg(int8 reg) 
......
347 367
.................... // from the HMC5883L x,y,z registers. 
348 368
.................... hmc5883l_result compass = {0,0,0}; 
349 369
*
350
0270:  CLRF   21
351
0271:  CLRF   22
352
0272:  CLRF   23
353
0273:  CLRF   24
354
0274:  CLRF   25
355
0275:  CLRF   26
370
0287:  CLRF   21
371
0288:  CLRF   22
372
0289:  CLRF   23
373
028A:  CLRF   24
374
028B:  CLRF   25
375
028C:  CLRF   26
356 376
....................  
357 377
.................... //------------------------------ 
358 378
.................... void hmc5883l_read_data(void) 
......
368 388
....................  
369 389
.................... i2c_start(); 
370 390
*
371
0150:  BSF    20.4
372
0151:  MOVF   20,W
373
0152:  BSF    03.5
374
0153:  MOVWF  07
375
0154:  NOP
376
0155:  BCF    03.5
377
0156:  BSF    20.3
378
0157:  MOVF   20,W
379
0158:  BSF    03.5
380
0159:  MOVWF  07
381
015A:  NOP
382
015B:  BCF    03.5
383
015C:  BCF    07.4
384
015D:  BCF    20.4
385
015E:  MOVF   20,W
386
015F:  BSF    03.5
387
0160:  MOVWF  07
388
0161:  NOP
389
0162:  BCF    03.5
390
0163:  BCF    07.3
391
0164:  BCF    20.3
392
0165:  MOVF   20,W
393
0166:  BSF    03.5
394
0167:  MOVWF  07
391
0151:  BSF    20.4
392
0152:  MOVF   20,W
393
0153:  BSF    03.5
394
0154:  MOVWF  07
395
0155:  NOP
396
0156:  BCF    03.5
397
0157:  BSF    20.3
398
0158:  MOVF   20,W
399
0159:  BSF    03.5
400
015A:  MOVWF  07
401
015B:  NOP
402
015C:  BCF    03.5
403
015D:  BCF    07.4
404
015E:  BCF    20.4
405
015F:  MOVF   20,W
406
0160:  BSF    03.5
407
0161:  MOVWF  07
408
0162:  NOP
409
0163:  BCF    03.5
410
0164:  BCF    07.3
411
0165:  BCF    20.3
412
0166:  MOVF   20,W
413
0167:  BSF    03.5
414
0168:  MOVWF  07
395 415
.................... i2c_write(HMC5883L_WRT_ADDR); 
396
0168:  MOVLW  3C
397
0169:  BCF    03.5
398
016A:  MOVWF  3D
399
016B:  CALL   01F
416
0169:  MOVLW  3C
417
016A:  BCF    03.5
418
016B:  MOVWF  3D
419
016C:  CALL   089
400 420
.................... i2c_write(HMC5883L_X_MSB_REG);  // Point to X-msb register 
401
016C:  MOVLW  03
402
016D:  MOVWF  3D
403
016E:  CALL   01F
421
016D:  MOVLW  03
422
016E:  MOVWF  3D
423
016F:  CALL   089
404 424
.................... i2c_start(); 
405
016F:  BSF    20.4
406
0170:  MOVF   20,W
407
0171:  BSF    03.5
408
0172:  MOVWF  07
409
0173:  NOP
410
0174:  BCF    03.5
411
0175:  BSF    20.3
412
0176:  MOVF   20,W
413
0177:  BSF    03.5
414
0178:  MOVWF  07
415
0179:  NOP
416
017A:  BCF    03.5
417
017B:  BTFSS  07.3
418
017C:  GOTO   17B
419
017D:  BCF    07.4
420
017E:  BCF    20.4
421
017F:  MOVF   20,W
422
0180:  BSF    03.5
423
0181:  MOVWF  07
424
0182:  NOP
425
0183:  BCF    03.5
426
0184:  BCF    07.3
427
0185:  BCF    20.3
428
0186:  MOVF   20,W
429
0187:  BSF    03.5
430
0188:  MOVWF  07
425
0170:  BSF    20.4
426
0171:  MOVF   20,W
427
0172:  BSF    03.5
428
0173:  MOVWF  07
429
0174:  NOP
430
0175:  BCF    03.5
431
0176:  BSF    20.3
432
0177:  MOVF   20,W
433
0178:  BSF    03.5
434
0179:  MOVWF  07
435
017A:  NOP
436
017B:  BCF    03.5
437
017C:  BTFSS  07.3
438
017D:  GOTO   17C
439
017E:  BCF    07.4
440
017F:  BCF    20.4
441
0180:  MOVF   20,W
442
0181:  BSF    03.5
443
0182:  MOVWF  07
444
0183:  NOP
445
0184:  BCF    03.5
446
0185:  BCF    07.3
447
0186:  BCF    20.3
448
0187:  MOVF   20,W
449
0188:  BSF    03.5
450
0189:  MOVWF  07
431 451
.................... i2c_write(HMC5883L_READ_ADDR); 
432
0189:  MOVLW  3D
433
018A:  BCF    03.5
434
018B:  MOVWF  3D
435
018C:  CALL   01F
452
018A:  MOVLW  3D
453
018B:  BCF    03.5
454
018C:  MOVWF  3D
455
018D:  CALL   089
436 456
....................  
437 457
.................... x_msb = i2c_read(); 
438
018D:  MOVLW  01
439
018E:  MOVWF  77
440
018F:  CALL   10B
441
0190:  MOVF   78,W
442
0191:  MOVWF  38
458
018E:  MOVLW  01
459
018F:  MOVWF  77
460
0190:  CALL   10C
461
0191:  MOVF   78,W
462
0192:  MOVWF  38
443 463
.................... x_lsb = i2c_read(); 
444
0192:  MOVLW  01
445
0193:  MOVWF  77
446
0194:  CALL   10B
447
0195:  MOVF   78,W
448
0196:  MOVWF  37
464
0193:  MOVLW  01
465
0194:  MOVWF  77
466
0195:  CALL   10C
467
0196:  MOVF   78,W
468
0197:  MOVWF  37
449 469
....................  
450 470
.................... z_msb = i2c_read(); 
451
0197:  MOVLW  01
452
0198:  MOVWF  77
453
0199:  CALL   10B
454
019A:  MOVF   78,W
455
019B:  MOVWF  3C
471
0198:  MOVLW  01
472
0199:  MOVWF  77
473
019A:  CALL   10C
474
019B:  MOVF   78,W
475
019C:  MOVWF  3C
456 476
.................... z_lsb = i2c_read();    
457
019C:  MOVLW  01
458
019D:  MOVWF  77
459
019E:  CALL   10B
460
019F:  MOVF   78,W
461
01A0:  MOVWF  3B
477
019D:  MOVLW  01
478
019E:  MOVWF  77
479
019F:  CALL   10C
480
01A0:  MOVF   78,W
481
01A1:  MOVWF  3B
462 482
....................  
463 483
.................... y_msb = i2c_read(); 
464
01A1:  MOVLW  01
465
01A2:  MOVWF  77
466
01A3:  CALL   10B
467
01A4:  MOVF   78,W
468
01A5:  MOVWF  3A
484
01A2:  MOVLW  01
485
01A3:  MOVWF  77
486
01A4:  CALL   10C
487
01A5:  MOVF   78,W
488
01A6:  MOVWF  3A
469 489
.................... y_lsb = i2c_read(0); // do a NACK on last read 
470
01A6:  CLRF   77
471
01A7:  CALL   10B
472
01A8:  MOVF   78,W
473
01A9:  MOVWF  39
490
01A7:  CLRF   77
491
01A8:  CALL   10C
492
01A9:  MOVF   78,W
493
01AA:  MOVWF  39
474 494
....................  
475 495
.................... i2c_stop(); 
476
01AA:  BCF    20.4
477
01AB:  MOVF   20,W
478
01AC:  BSF    03.5
479
01AD:  MOVWF  07
480
01AE:  NOP
481
01AF:  BCF    03.5
482
01B0:  BSF    20.3
483
01B1:  MOVF   20,W
484
01B2:  BSF    03.5
485
01B3:  MOVWF  07
486
01B4:  BCF    03.5
487
01B5:  BTFSS  07.3
488
01B6:  GOTO   1B5
489
01B7:  NOP
490
01B8:  GOTO   1B9
491
01B9:  NOP
492
01BA:  BSF    20.4
493
01BB:  MOVF   20,W
494
01BC:  BSF    03.5
495
01BD:  MOVWF  07
496
01BE:  NOP
496
01AB:  BCF    20.4
497
01AC:  MOVF   20,W
498
01AD:  BSF    03.5
499
01AE:  MOVWF  07
500
01AF:  NOP
501
01B0:  BCF    03.5
502
01B1:  BSF    20.3
503
01B2:  MOVF   20,W
504
01B3:  BSF    03.5
505
01B4:  MOVWF  07
506
01B5:  BCF    03.5
507
01B6:  BTFSS  07.3
508
01B7:  GOTO   1B6
509
01B8:  NOP
510
01B9:  GOTO   1BA
511
01BA:  NOP
512
01BB:  BSF    20.4
513
01BC:  MOVF   20,W
514
01BD:  BSF    03.5
515
01BE:  MOVWF  07
516
01BF:  NOP
497 517
....................   
498 518
.................... // Combine high and low bytes into 16-bit values. 
499 519
.................... compass.x = make16(x_msb, x_lsb); 
500
01BF:  BCF    03.5
501
01C0:  MOVF   38,W
502
01C1:  MOVWF  22
503
01C2:  MOVF   37,W
504
01C3:  MOVWF  21
520
01C0:  BCF    03.5
521
01C1:  MOVF   38,W
522
01C2:  MOVWF  22
523
01C3:  MOVF   37,W
524
01C4:  MOVWF  21
505 525
.................... compass.y = make16(y_msb, y_lsb); 
506
01C4:  MOVF   3A,W
507
01C5:  MOVWF  24
508
01C6:  MOVF   39,W
509
01C7:  MOVWF  23
526
01C5:  MOVF   3A,W
527
01C6:  MOVWF  24
528
01C7:  MOVF   39,W
529
01C8:  MOVWF  23
510 530
.................... compass.z = make16(z_msb, z_lsb); 
511
01C8:  MOVF   3C,W
512
01C9:  MOVWF  26
513
01CA:  MOVF   3B,W
514
01CB:  MOVWF  25
531
01C9:  MOVF   3C,W
532
01CA:  MOVWF  26
533
01CB:  MOVF   3B,W
534
01CC:  MOVWF  25
515 535
.................... } 
516
01CC:  BCF    0A.3
517
01CD:  BCF    0A.4
518
01CE:  GOTO   2E1 (RETURN)
536
01CD:  BCF    0A.3
537
01CE:  BCF    0A.4
538
01CF:  GOTO   2F6 (RETURN)
519 539
....................  
520 540
....................  
521 541
....................  
......
2697 2717
.................... void main() 
2698 2718
.................... { 
2699 2719
*
2700
024F:  CLRF   04
2701
0250:  BCF    03.7
2702
0251:  MOVLW  1F
2703
0252:  ANDWF  03,F
2704
0253:  MOVLW  71
2705
0254:  BSF    03.5
2706
0255:  MOVWF  0F
2707
0256:  MOVF   0F,W
2708
0257:  BCF    03.5
2709
0258:  BCF    20.7
2710
0259:  MOVF   20,W
2711
025A:  BSF    03.5
2712
025B:  MOVWF  07
2713
025C:  BCF    03.5
2714
025D:  BSF    07.7
2715
025E:  BSF    03.5
2716
025F:  BSF    03.6
2717
0260:  MOVF   09,W
2718
0261:  ANDLW  C0
2719
0262:  MOVWF  09
2720
0263:  BCF    03.6
2721
0264:  BCF    1F.4
2722
0265:  BCF    1F.5
2723
0266:  MOVLW  00
2724
0267:  BSF    03.6
2725
0268:  MOVWF  08
2726
0269:  BCF    03.5
2727
026A:  CLRF   07
2728
026B:  CLRF   08
2729
026C:  CLRF   09
2720
0266:  CLRF   04
2721
0267:  BCF    03.7
2722
0268:  MOVLW  1F
2723
0269:  ANDWF  03,F
2724
026A:  MOVLW  71
2725
026B:  BSF    03.5
2726
026C:  MOVWF  0F
2727
026D:  MOVF   0F,W
2728
026E:  BCF    03.5
2729
026F:  BCF    20.7
2730
0270:  MOVF   20,W
2731
0271:  BSF    03.5
2732
0272:  MOVWF  07
2733
0273:  BCF    03.5
2734
0274:  BSF    07.7
2735
0275:  BSF    03.5
2736
0276:  BSF    03.6
2737
0277:  MOVF   09,W
2738
0278:  ANDLW  C0
2739
0279:  MOVWF  09
2740
027A:  BCF    03.6
2741
027B:  BCF    1F.4
2742
027C:  BCF    1F.5
2743
027D:  MOVLW  00
2744
027E:  BSF    03.6
2745
027F:  MOVWF  08
2746
0280:  BCF    03.5
2747
0281:  CLRF   07
2748
0282:  CLRF   08
2749
0283:  CLRF   09
2730 2750
*
2731
0276:  CLRF   34
2732
0277:  CLRF   33
2751
028D:  CLRF   34
2752
028E:  CLRF   33
2733 2753
.................... float last,b,anemo_speed; 
2734 2754
.................... unsigned int16 anemo_round=0; 
2735 2755
.................... unsigned int16 i; 
2736 2756
....................  
2737
....................  
2738 2757
.................... //signed int16 X,Y,Z; 
2739 2758
....................   setup_adc_ports(NO_ANALOGS|VSS_VDD); 
2740
0278:  BSF    03.5
2741
0279:  BSF    03.6
2742
027A:  MOVF   09,W
2743
027B:  ANDLW  C0
2744
027C:  MOVWF  09
2745
027D:  BCF    03.6
2746
027E:  BCF    1F.4
2747
027F:  BCF    1F.5
2748
0280:  MOVLW  00
2749
0281:  BSF    03.6
2750
0282:  MOVWF  08
2759
028F:  BSF    03.5
2760
0290:  BSF    03.6
2761
0291:  MOVF   09,W
2762
0292:  ANDLW  C0
2763
0293:  MOVWF  09
2764
0294:  BCF    03.6
2765
0295:  BCF    1F.4
2766
0296:  BCF    1F.5
2767
0297:  MOVLW  00
2768
0298:  BSF    03.6
2769
0299:  MOVWF  08
2751 2770
....................   setup_adc(ADC_CLOCK_DIV_2); 
2752
0283:  BCF    03.5
2753
0284:  BCF    03.6
2754
0285:  BCF    1F.6
2755
0286:  BCF    1F.7
2756
0287:  BSF    03.5
2757
0288:  BCF    1F.7
2758
0289:  BCF    03.5
2759
028A:  BSF    1F.0
2771
029A:  BCF    03.5
2772
029B:  BCF    03.6
2773
029C:  BCF    1F.6
2774
029D:  BCF    1F.7
2775
029E:  BSF    03.5
2776
029F:  BCF    1F.7
2777
02A0:  BCF    03.5
2778
02A1:  BSF    1F.0
2760 2779
....................   setup_spi(SPI_SS_DISABLED); 
2761
028B:  BCF    14.5
2762
028C:  BCF    20.5
2763
028D:  MOVF   20,W
2764
028E:  BSF    03.5
2765
028F:  MOVWF  07
2766
0290:  BCF    03.5
2767
0291:  BSF    20.4
2768
0292:  MOVF   20,W
2769
0293:  BSF    03.5
2770
0294:  MOVWF  07
2771
0295:  BCF    03.5
2772
0296:  BCF    20.3
2773
0297:  MOVF   20,W
2774
0298:  BSF    03.5
2775
0299:  MOVWF  07
2776
029A:  MOVLW  01
2777
029B:  BCF    03.5
2778
029C:  MOVWF  14
2779
029D:  MOVLW  00
2780
029E:  BSF    03.5
2781
029F:  MOVWF  14
2782
....................   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 
2783
02A0:  MOVF   01,W
2784
02A1:  ANDLW  C7
2785
02A2:  IORLW  08
2786
02A3:  MOVWF  01
2787
....................   setup_timer_1(T1_DISABLED); 
2788
02A4:  BCF    03.5
2789
02A5:  CLRF   10
2790
....................   setup_timer_2(T2_DISABLED,0,1); 
2791
02A6:  MOVLW  00
2792
02A7:  MOVWF  78
2793
02A8:  MOVWF  12
2794
02A9:  MOVLW  00
2780
02A2:  BCF    14.5
2781
02A3:  BCF    20.5
2782
02A4:  MOVF   20,W
2783
02A5:  BSF    03.5
2784
02A6:  MOVWF  07
2785
02A7:  BCF    03.5
2786
02A8:  BSF    20.4
2787
02A9:  MOVF   20,W
2795 2788
02AA:  BSF    03.5
2796
02AB:  MOVWF  12
2797
....................   setup_ccp1(CCP_OFF); 
2789
02AB:  MOVWF  07
2798 2790
02AC:  BCF    03.5
2799
02AD:  BSF    20.2
2791
02AD:  BCF    20.3
2800 2792
02AE:  MOVF   20,W
2801 2793
02AF:  BSF    03.5
2802 2794
02B0:  MOVWF  07
2803
02B1:  BCF    03.5
2804
02B2:  CLRF   17
2805
02B3:  BSF    03.5
2806
02B4:  CLRF   1B
2807
02B5:  CLRF   1C
2808
02B6:  MOVLW  01
2809
02B7:  MOVWF  1D
2795
02B1:  MOVLW  01
2796
02B2:  BCF    03.5
2797
02B3:  MOVWF  14
2798
02B4:  MOVLW  00
2799
02B5:  BSF    03.5
2800
02B6:  MOVWF  14
2801
....................   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 
2802
02B7:  MOVF   01,W
2803
02B8:  ANDLW  C7
2804
02B9:  IORLW  08
2805
02BA:  MOVWF  01
2806
....................   setup_timer_1(T1_DISABLED); 
2807
02BB:  BCF    03.5
2808
02BC:  CLRF   10
2809
....................   setup_timer_2(T2_DISABLED,0,1); 
2810
02BD:  MOVLW  00
2811
02BE:  MOVWF  78
2812
02BF:  MOVWF  12
2813
02C0:  MOVLW  00
2814
02C1:  BSF    03.5
2815
02C2:  MOVWF  12
2816
....................   setup_ccp1(CCP_OFF); 
2817
02C3:  BCF    03.5
2818
02C4:  BSF    20.2
2819
02C5:  MOVF   20,W
2820
02C6:  BSF    03.5
2821
02C7:  MOVWF  07
2822
02C8:  BCF    03.5
2823
02C9:  CLRF   17
2824
02CA:  BSF    03.5
2825
02CB:  CLRF   1B
2826
02CC:  CLRF   1C
2827
02CD:  MOVLW  01
2828
02CE:  MOVWF  1D
2810 2829
....................   setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard 
2811
02B8:  BCF    03.5
2812
02B9:  BSF    03.6
2813
02BA:  CLRF   07
2814
02BB:  CLRF   08
2815
02BC:  CLRF   09
2830
02CF:  BCF    03.5
2831
02D0:  BSF    03.6
2832
02D1:  CLRF   07
2833
02D2:  CLRF   08
2834
02D3:  CLRF   09
2816 2835
....................  
2836
....................   printf("Magnetometr:  \r\n",); 
2837
02D4:  MOVLW  04
2838
02D5:  MOVWF  0D
2839
02D6:  MOVLW  00
2840
02D7:  MOVWF  0F
2841
02D8:  BCF    03.6
2842
02D9:  CALL   043
2843
....................   printf("(c)mlab JACHO 2013:  \r\n",); 
2844
02DA:  MOVLW  0D
2845
02DB:  BSF    03.6
2846
02DC:  MOVWF  0D
2847
02DD:  MOVLW  00
2848
02DE:  MOVWF  0F
2849
02DF:  BCF    03.6
2850
02E0:  CALL   043
2851
....................   printf("X, Y, Z \r\n",); 
2852
02E1:  MOVLW  19
2853
02E2:  BSF    03.6
2854
02E3:  MOVWF  0D
2855
02E4:  MOVLW  00
2856
02E5:  MOVWF  0F
2857
02E6:  BCF    03.6
2858
02E7:  CALL   043
2859
....................  
2860
....................  
2817 2861
.................... // Init the HMC5883L.  Set Mode register for 
2818 2862
.................... // continuous measurements. 
2819 2863
.................... hmc5883l_write_reg(HMC5883L_CFG_A_REG, 0x18);      // no average, maximal update range 
2820
02BD:  BCF    03.6
2821
02BE:  CLRF   37
... This diff was truncated because it exceeds the maximum size that can be displayed. :@created_atf1436952035.0077159~k:@expires_in0