o: ActiveSupport::Cache::Entry :@compressedF: @value"„"„
Modules/Sensors/MAG01A/SW/PIC16F887/main.h
1 1
#include <16F887.h>
2 2
#device adc=8
3 3

  
4
#FUSES NOWDT                 	//No Watch Dog Timer
5
#FUSES INTRC                 	//Internal RC Osc
6
#FUSES NOPUT                 	//No Power Up Timer
7
#FUSES MCLR                  	//Master Clear pin enabled
8
#FUSES NOPROTECT             	//Code not protected from reading
9
#FUSES NOCPD                 	//No EE protection
10
#FUSES NOBROWNOUT            	//No brownout reset
11
#FUSES IESO                  	//Internal External Switch Over mode enabled
12
#FUSES FCMEN                 	//Fail-safe clock monitor enabled
13
#FUSES NOLVP                 	//No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
14
#FUSES NODEBUG               	//No Debug mode for ICD
15
#FUSES NOWRT                 	//Program memory not write protected
16
#FUSES BORV40                	//Brownout reset at 4.0V
4
#FUSES NOWDT                    //No Watch Dog Timer
5
#FUSES INTRC                    //Internal RC Osc
6
#FUSES NOPUT                    //No Power Up Timer
7
#FUSES MCLR                     //Master Clear pin enabled
8
#FUSES NOPROTECT                //Code not protected from reading
9
#FUSES NOCPD                    //No EE protection
10
#FUSES NOBROWNOUT               //No brownout reset
11
#FUSES IESO                     //Internal External Switch Over mode enabled
12
#FUSES FCMEN                    //Fail-safe clock monitor enabled
13
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
14
#FUSES NODEBUG                  //No Debug mode for ICD
15
#FUSES NOWRT                    //Program memory not write protected
16
#FUSES BORV40                   //Brownout reset at 4.0V
17 17

  
18 18
#use delay(clock=8000000)
19
#use i2c(master, sda=PIN_C4, scl=PIN_C3)
20
#use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD
19 21

  
Modules/Sensors/MAG01A/SW/PIC16F887/main.sta
1 1

  
2
ROM used: 788 (10%)
3
          788 (10%) including unused fragments
2
ROM used: 972 (12%)
3
          972 (12%) including unused fragments
4 4

  
5
          1 Average locations per line
6
          12 Average locations per statement
5
          2 Average locations per line
6
          15 Average locations per statement
7 7

  
8
RAM used: 7 (2%) at main() level
8
RAM used: 12 (3%) at main() level
9 9
          22 (6%) worst case
10 10

  
11 11
Stack used: 3 worst case (out of 8 total available)
12 12

  
13 13
Lines Stmts  %   Files
14 14
----- ----- ---  -----
15
   43    22  32  main.c
16
   20     0   0  main.h
17
  423     0   0  ..\..\..\..\..\Program Files (x86)\PICC\devices\16F887.h
15
   32    19  29  main.c
16
   22     0   0  main.h
17
  423     0   0  C:\Program Files (x86)\PICC\devices\16F887.h
18 18
   19     0   0  HMC5883L.h
19
  102    46  68  HMC5883L.c
19
  102    46  71  HMC5883L.c
20 20
----- -----
21
  607    68 Total
21
  598    65 Total
22 22

  
23 23
Page ROM  %  RAM   Vol Diff  Functions:
24 24
---- --- --- ---   --- ----  ----------
25
0     22   3   1             @delay_ms1
25
0     20   2   1             @delay_ms1
26 26
 Inline        3   357  1.4  @I2C_READ_1
27
0     52   7   1   113  1.3  @I2C_WRITE_1
28
0     34   4   1   152  2.2  @PUTCHAR_1_
29
0    107  14   1   152  2.2  mag_read
30
0     21   3   6   129  4.6  mag_vypocet
27
0     74   8   1   113  1.3  @I2C_WRITE_1
28
0     36   4   1   152  2.2  @PUTCHAR_1_
29
0    178  18   0   357  1.4  set_mag
30
0    155  16   1   152  2.2  mag_read
31
0     21   2   6   129  4.6  mag_vypocet
31 32
0     26   3   4   171  2.7  mag_readX
32 33
0     26   3   4   171  2.7  mag_readY
33 34
0     26   3   4   171  2.7  mag_readZ
34
0    221  28   1   658  3.3  MAIN
35
0      9   1   0    44  1.9  @const99
36
0     70   9   3   257  7.2  @PSTRINGC7_68
37
0     12   2   0             @const101
38
0     15   2   0  1071  8.0  @const102
39
0     15   2   0             @const106
40
0    128  16   9             @PRINTF_LD_68
35
0    181  19   6   587  3.3  MAIN
36
0      9   1   0             @const102
37
0     70   7   3             @PSTRINGC7_69
38
0     12   1   0             @const104
39
0      6   1   0             @const105
40
0    128  13   9             @PRINTF_LD_69
41 41

  
42 42
Program metrics:
43
    Functions               12
44
    Statements              68
45
    Comments                109
46
    Volume (V)              5531
47
    Difficilty (D)          39.8
48
    Effort to implement (E) 220066
49
    Time to implement (T)   3 hours, 24 minutes
43
    Functions               10
44
    Statements              65
45
    Comments                99
46
    Volume (V)              3874
47
    Difficilty (D)          23.6
48
    Effort to implement (E) 91333
49
    Time to implement (T)   1 hours, 25 minutes
50 50
    Est Delivered Bugs (B)  1
51
    Cyclomatic Complexity   3
52
    Maintainability (MI)    61
51
    Cyclomatic Complexity   1
52
    Maintainability (MI)    60
53 53

  
54 54
 Segment     Used  Free
55 55
-----------  ----  ----
56 56
00000-00003     4  0  
57
00004-007FF   784  1260  
57
00004-007FF   968  1076  
58 58
00800-00FFF     0  2048  
59 59
01000-017FF     0  2048  
60 60
01800-01FFF     0  2048  
Modules/Sensors/MAG01A/SW/PIC16F887/main.err
1
      Memory usage:   ROM=10%      RAM=2% - 6%
1
      Memory usage:   ROM=12%      RAM=3% - 6%
2 2
      0 Errors,  0 Warnings.
Modules/Sensors/MAG01A/SW/PIC16F887/main.sym
1
004-005 @READ_PROGRAM_MEMORY8.P1
2
004     @WRITE_PROGRAM_MEMORY8.P2
1
004     @WRITE_PROGRAM_MEMORY8.P1
2
004-005 @READ_PROGRAM_MEMORY8.P2
3 3
015     CCP_1_LOW
4 4
015     CCP_1
5 5
016     CCP_1_HIGH
6
01B     CCP_2_LOW
6 7
01B     CCP_2
7
01B     CCP_2_LOW
8 8
01C     CCP_2_HIGH
9 9
020     @TRIS_C
10 10
021-022 MAIN.x
11 11
023-024 MAIN.Y
12 12
025-026 MAIN.Z
13
027-028 @PRINTF_LD_68.P1
14
027     mag_readZ.h
13
027     @delay_ms1.P1
15 14
027     mag_readX.h
15
027-028 @PRINTF_LD_69.P1
16 16
027     mag_readY.h
17
027     MAIN.@SCRATCH1
18
027     @PSTRINGC7_68.@SCRATCH1
17
027     mag_readZ.h
18
027     @PSTRINGC7_69.@SCRATCH1
19 19
028     mag_readX.l
20
028     @delay_ms1.P1
21 20
028     mag_readY.l
22 21
028     mag_readZ.l
23
028     @PSTRINGC7_68.@SCRATCH2
22
028     @PSTRINGC7_69.@SCRATCH2
23
029-02A mag_readX.x
24 24
029-02A mag_readY.x
25
029-02A mag_readX.x
26 25
029-02A mag_readZ.x
27
029     @PSTRINGC7_68.@SCRATCH3
28
029     @PRINTF_LD_68.@SCRATCH1
29
02A     @PRINTF_LD_68.@SCRATCH2
26
029     @PSTRINGC7_69.@SCRATCH3
27
029     @PRINTF_LD_69.@SCRATCH1
28
02A     @PRINTF_LD_69.@SCRATCH2
29
02B     mag_vypocet.h
30 30
02B     mag_read.reg
31
02B     mag_vypocet.h
32
02B     @PRINTF_LD_68.@SCRATCH3
31
02B     @PRINTF_LD_69.@SCRATCH3
33 32
02C     mag_vypocet.l
34 33
02C     @I2C_WRITE_1.P1
35 34
02C     @I2C_READ_1.P2
36
02C     @PRINTF_LD_68.@SCRATCH4
35
02C     @PRINTF_LD_69.@SCRATCH4
37 36
02D-02E mag_vypocet.x
38 37
02D     @I2C_READ_1.@SCRATCH1
39
02D     @PRINTF_LD_68.@SCRATCH5
38
02D     @PRINTF_LD_69.@SCRATCH5
40 39
02E     @I2C_READ_1.@SCRATCH2
41
02E     @PRINTF_LD_68.@SCRATCH6
40
02E     @PRINTF_LD_69.@SCRATCH6
42 41
02F     mag_vypocet.@SCRATCH1
43
02F     @PRINTF_LD_68.@SCRATCH7
42
02F     @PRINTF_LD_69.@SCRATCH7
44 43
030     @PUTCHAR_1_.P1
45 44
030     mag_vypocet.@SCRATCH2
46 45
077     @SCRATCH
......
54 53
10D-10E @WRITE_PROGRAM_MEMORY8.P2
55 54

  
56 55
ROM Allocation:
57
0221  @delay_ms1
58
0107  @I2C_READ_1
59
009F  @I2C_WRITE_1
60
0037  @PUTCHAR_1_
61
00D3  mag_read
62
013E  mag_vypocet
63
0153  mag_readX
64
016D  mag_readY
65
0187  mag_readZ
66
0237  MAIN
67
0004  @const99
68
0059  @PSTRINGC7_68
69
000D  @const101
70
0019  @const102
71
0028  @const106
72
01A1  @PRINTF_LD_68
73
0237  @cinit
56
0069  @delay_ms1
57
01EB  @I2C_READ_1
58
001F  @I2C_WRITE_1
59
012F  @PUTCHAR_1_
60
007D  set_mag
61
0199  mag_read
62
0234  mag_vypocet
63
0249  mag_readX
64
0263  mag_readY
65
027D  mag_readZ
66
0317  MAIN
67
0004  @const102
68
0153  @PSTRINGC7_69
69
000D  @const104
70
0019  @const105
71
0297  @PRINTF_LD_69
72
0317  @cinit
74 73

  
75 74

  
76 75
User Memory space: 
......
78 77
User Memory space: 
79 78

  
80 79
Project Directory:
81
    c:\users\honza\documents\pic\i2c_magnetometr\
80
    Z:\home\kaklik\svnMLAB\Modules\Sensors\MAG01A\SW\PIC16F887\
82 81

  
83 82
Project Files:
84 83
    main.c
85 84
    main.h
86
    ..\..\..\..\..\Program Files (x86)\PICC\devices\16F887.h
85
    C:\Program Files (x86)\PICC\devices\16F887.h
87 86
    HMC5883L.h
88 87
    HMC5883L.c
89 88

  
90 89
Units:
91
    c:\users\honza\documents\pic\i2c_magnetometr\main (main)
90
    Z:\home\kaklik\svnMLAB\Modules\Sensors\MAG01A\SW\PIC16F887\main (main)
92 91

  
93 92
Compiler Settings:
94 93
    Processor:      PIC16F887
Modules/Sensors/MAG01A/SW/PIC16F887/main.tre
1 1
??main
2
   ??MAIN  0/221  Ram=1
2
   ??MAIN  0/181  Ram=6
3 3
      ????0??
4
      ??@PSTRINGC7_68  0/70  Ram=3
5
      ?  ??@PUTCHAR_1_  0/34  Ram=1
6
      ?  ??@PUTCHAR_1_  0/34  Ram=1
7
      ??@PSTRINGC7_68  0/70  Ram=3
8
      ?  ??@PUTCHAR_1_  0/34  Ram=1
9
      ?  ??@PUTCHAR_1_  0/34  Ram=1
10
      ??@PSTRINGC7_68  0/70  Ram=3
11
      ?  ??@PUTCHAR_1_  0/34  Ram=1
12
      ?  ??@PUTCHAR_1_  0/34  Ram=1
13
      ??@PSTRINGC7_68  0/70  Ram=3
14
      ?  ??@PUTCHAR_1_  0/34  Ram=1
15
      ?  ??@PUTCHAR_1_  0/34  Ram=1
4
      ??set_mag  0/178  Ram=0
5
      ?  ??@I2C_WRITE_1  0/74  Ram=1
6
      ?  ??@I2C_WRITE_1  0/74  Ram=1
7
      ?  ??@I2C_WRITE_1  0/74  Ram=1
8
      ?  ??@delay_ms1  0/20  Ram=1
9
      ?  ??@I2C_WRITE_1  0/74  Ram=1
10
      ?  ??@I2C_WRITE_1  0/74  Ram=1
11
      ?  ??@I2C_WRITE_1  0/74  Ram=1
12
      ?  ??@delay_ms1  0/20  Ram=1
13
      ?  ??@I2C_WRITE_1  0/74  Ram=1
14
      ?  ??@I2C_WRITE_1  0/74  Ram=1
15
      ?  ??@I2C_WRITE_1  0/74  Ram=1
16
      ?  ??@delay_ms1  0/20  Ram=1
17
      ??@PSTRINGC7_69  0/70  Ram=3
18
      ?  ??@PUTCHAR_1_  0/36  Ram=1
19
      ?  ??@PUTCHAR_1_  0/36  Ram=1
20
      ??@PSTRINGC7_69  0/70  Ram=3
21
      ?  ??@PUTCHAR_1_  0/36  Ram=1
22
      ?  ??@PUTCHAR_1_  0/36  Ram=1
23
      ??@PSTRINGC7_69  0/70  Ram=3
24
      ?  ??@PUTCHAR_1_  0/36  Ram=1
25
      ?  ??@PUTCHAR_1_  0/36  Ram=1
16 26
      ??mag_readX  0/26  Ram=4
17
      ?  ??mag_read  0/107  Ram=1
18
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
19
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
20
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
27
      ?  ??mag_read  0/155  Ram=1
28
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
29
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
30
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
21 31
      ?  ?  ??@I2C_READ_1  (Inline)  Ram=3
22
      ?  ??mag_read  0/107  Ram=1
23
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
24
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
25
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
32
      ?  ??mag_read  0/155  Ram=1
33
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
34
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
35
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
26 36
      ?  ?  ??@I2C_READ_1  (Inline)  Ram=3
27 37
      ?  ??mag_vypocet  0/21  Ram=6
28 38
      ??mag_readY  0/26  Ram=4
29
      ?  ??mag_read  0/107  Ram=1
30
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
31
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
32
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
39
      ?  ??mag_read  0/155  Ram=1
40
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
41
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
42
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
33 43
      ?  ?  ??@I2C_READ_1  (Inline)  Ram=3
34
      ?  ??mag_read  0/107  Ram=1
35
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
36
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
37
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
44
      ?  ??mag_read  0/155  Ram=1
45
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
46
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
47
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
38 48
      ?  ?  ??@I2C_READ_1  (Inline)  Ram=3
39 49
      ?  ??mag_vypocet  0/21  Ram=6
40 50
      ??mag_readZ  0/26  Ram=4
41
      ?  ??mag_read  0/107  Ram=1
42
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
43
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
44
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
51
      ?  ??mag_read  0/155  Ram=1
52
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
53
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
54
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
45 55
      ?  ?  ??@I2C_READ_1  (Inline)  Ram=3
46
      ?  ??mag_read  0/107  Ram=1
47
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
48
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
49
      ?  ?  ??@I2C_WRITE_1  0/52  Ram=1
56
      ?  ??mag_read  0/155  Ram=1
57
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
58
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
59
      ?  ?  ??@I2C_WRITE_1  0/74  Ram=1
50 60
      ?  ?  ??@I2C_READ_1  (Inline)  Ram=3
51 61
      ?  ??mag_vypocet  0/21  Ram=6
52
      ??@PUTCHAR_1_  0/34  Ram=1
53
      ??@PUTCHAR_1_  0/34  Ram=1
54
      ??@PUTCHAR_1_  0/34  Ram=1
55
      ??@PRINTF_LD_68  0/128  Ram=9
56
      ?  ??@PUTCHAR_1_  0/34  Ram=1
57
      ??@PUTCHAR_1_  0/34  Ram=1
58
      ??@PUTCHAR_1_  0/34  Ram=1
59
      ??@PUTCHAR_1_  0/34  Ram=1
60
      ??@PUTCHAR_1_  0/34  Ram=1
61
      ??@PUTCHAR_1_  0/34  Ram=1
62
      ??@PRINTF_LD_68  0/128  Ram=9
63
      ?  ??@PUTCHAR_1_  0/34  Ram=1
64
      ??@PUTCHAR_1_  0/34  Ram=1
65
      ??@PUTCHAR_1_  0/34  Ram=1
66
      ??@PUTCHAR_1_  0/34  Ram=1
67
      ??@PUTCHAR_1_  0/34  Ram=1
68
      ??@PUTCHAR_1_  0/34  Ram=1
69
      ??@PUTCHAR_1_  0/34  Ram=1
70
      ??@PRINTF_LD_68  0/128  Ram=9
71
      ?  ??@PUTCHAR_1_  0/34  Ram=1
72
      ??@PUTCHAR_1_  0/34  Ram=1
73
      ??@PUTCHAR_1_  0/34  Ram=1
74
      ??@PUTCHAR_1_  0/34  Ram=1
75
      ??@delay_ms1  0/22  Ram=1
62
      ??@PRINTF_LD_69  0/128  Ram=9
63
      ?  ??@PUTCHAR_1_  0/36  Ram=1
64
      ??@PUTCHAR_1_  0/36  Ram=1
65
      ??@PRINTF_LD_69  0/128  Ram=9
66
      ?  ??@PUTCHAR_1_  0/36  Ram=1
67
      ??@PUTCHAR_1_  0/36  Ram=1
68
      ??@PRINTF_LD_69  0/128  Ram=9
69
      ?  ??@PUTCHAR_1_  0/36  Ram=1
70
      ??@PUTCHAR_1_  0/36  Ram=1
71
      ??@PUTCHAR_1_  0/36  Ram=1
72
      ??@PUTCHAR_1_  0/36  Ram=1
73
      ??@delay_ms1  0/20  Ram=1
Modules/Sensors/MAG01A/SW/PIC16F887/main.bak
1
//Magnetometr Jan Chroust 2013
2
//vypise hodnoty jednotlivych os
3

  
4 1
#include "main.h"
5 2
#include "HMC5883L.h"
6
#define EEPROM_SDA  PIN_B0
7
#define EEPROM_SCL  PIN_B1
8
#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)
9
#use rs232(baud=9600,parity=N,xmit=PIN_B3,rcv=PIN_B2,bits=8) //rcv TXD xmit RXD
10 3

  
11

  
12 4
void main()
13 5
{
6
  setup_adc_ports(NO_ANALOGS|VSS_VDD);
7
  setup_adc(ADC_CLOCK_DIV_2);
8
  setup_spi(SPI_SS_DISABLED);
9
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
10
  setup_timer_1(T1_DISABLED);
11
  setup_timer_2(T2_DISABLED,0,1);
12
  setup_ccp1(CCP_OFF);
13
  setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
14 14

  
15
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
16
   setup_adc(ADC_CLOCK_DIV_2);
17
   setup_spi(SPI_SS_DISABLED);
18
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
19
   setup_timer_1(T1_DISABLED);
20
   setup_timer_2(T2_DISABLED,0,1);
21
   setup_ccp1(CCP_OFF);
22
   setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
15
  printf("Magnetometr:  \r\n",);
16
  printf("(c)mlab JACHO 2013:  \r\n",);
17
  printf("Vysledky z jednotlivych os:\r\n",);
18
  signed int16 X,Y,Z;
23 19

  
24
printf("Magnetometr:  \r\n",);
25
printf("(c)mlab JACHO 2013:  \r\n",);
26
printf("Vysledky z jednotlivych os:\r\n",);
27
signed int16 X,Y,Z;
28

  
29

  
30
while(true)
31
{  
32
   printf("Vysledky z jednotlivych os:\r\n",);
33
   X=mag_readX();
34
   Y=mag_readY();
35
   Z=mag_readZ();
36
   printf("X: %Ld \r\n", X);
37
   printf("Y %Ld \r\n", Y);
38
   printf("Z: %Ld \r\n", Z);
39
   Delay_ms(2000);  
20
  while(true)
21
  {  
22
    printf("Vysledky z jednotlivych os:\r\n",);
23
    X = mag_readX();
24
    Y = mag_readY();
25
    Z = mag_readZ();
26
    printf("X: %Ld \r\n", X);
27
    printf("Y %Ld \r\n", Y);
28
    printf("Z: %Ld \r\n", Z);
29
    Delay_ms(500);  
40 30
   
31
  }
41 32
}
42
}
Modules/Sensors/MAG01A/SW/PIC16F887/main.esym
1
D G "__PCM__" 0 44 ""4.106""
2
D G "__DEVICE__" 0 44 "887"
3
D G "__DATE__" 0 44 ""16-4-13""
4
D G "__TIME__" 0 44 ""18:24:02"" "Magnetometr Jan Chroust 2013"
1
D G "__PCM__" 0 33 ""4.106""
2
D G "__DEVICE__" 0 33 "887"
3
D G "__DATE__" 0 33 ""15-V-13""
4
D G "__TIME__" 0 33 ""16:26:21"" "Standard Header file for the PIC16F887 device ////////////////"
5 5
d G "PIN_A0" 2 20 "40"
6 6
d G "PIN_A1" 2 21 "41"
7 7
d G "PIN_A2" 2 22 "42"
......
273 273
d G "INT_RB5" 2 418 "0x0200B08"
274 274
d G "INT_RB6" 2 419 "0x0400B08"
275 275
d G "INT_RB7" 2 420 "0x0800B08"
276
D G "EEPROM_SDA" 0 6 "PIN_B0"
277
D G "EEPROM_SCL" 0 7 "PIN_B1"
278 276
D G "MAG_ADDR_R" 3 1 "0x3D" "addresa pro cteni"
279 277
D G "MAG_ADDR_W" 3 2 "0x3C"
280 278
D G "MAG_ROZ088" 3 7 "0x00"
......
289 287
C L "set_mag" 4 3 1 "FUNCTION"
290 288
C L "set_mag" 4 3 1 "FUNCTION"
291 289
C L "set_mag" 4 3 1 "FUNCTION"
292
F G "set_mag_roz" 4 26 "void()"
290
F G "set_mag_roz" 4 26 "void(int8 h)"
293 291
V L "h" 4 26 "int8" "nastavy rozsah"
294
F G "mag_read" 4 44 "int8()"
292
F G "mag_read" 4 44 "int8(int8 reg)"
295 293
V L "reg" 4 44 "int8" "pro cteni reg"
296
F G "mag_vypocet" 4 58 "sint16()"
294
F G "mag_vypocet" 4 58 "sint16(int8 h,int8 l)"
297 295
V L "h" 4 58 "int8"
298 296
V L "l" 4 58 "int8" "prepocet na 16bit cislo"
299 297
V L "x" 4 60 "sint16"
......
301 299
V L "h" 4 68 "int8"
302 300
V L "l" 4 68 "int8"
303 301
V L "x" 4 69 "sint16"
304
F G "mag_readY" 4 78 "sint16(int8 )" "nacteni osy x"
302
F G "mag_readY" 4 78 "sint16()" "nacteni osy x"
305 303
V L "h" 4 80 "int8"
306 304
V L "l" 4 80 "int8"
307 305
V L "x" 4 81 "sint16"
......
309 307
V L "h" 4 92 "int8"
310 308
V L "l" 4 92 "int8"
311 309
V L "x" 4 93 "sint16"
312
F G "MAIN" 0 12 "void()"
313
C L "MAIN" 0 22 1 "FUNCTION"
314
V L "x" 0 27 "sint16"
315
V L "Y" 0 27 "sint16"
316
V L "Z" 0 27 "sint16"
310
F G "MAIN" 0 4 "void()"
311
V L "x" 0 6 "sint16"
312
V L "Y" 0 6 "sint16"
313
V L "Z" 0 6 "sint16"
314
C L "MAIN" 0 14 1 "FUNCTION"
317 315
F B "reset_cpu" 0 0
318 316
F B "abs" 1 0
319 317
F B "sleep_ulpwu" 1 0
Modules/Sensors/MAG01A/SW/PIC16F887/main.pjt
1 1
[PROJECT]
2
Target=C:\Users\Honza\Documents\pic\I2C_magnetometr\main.hex
2
Target=main.hex
3 3
Development_Mode=
4 4
Processor_Text=PIC16F887
5 5
ToolSuite=CCS
6 6
Processor=0x887F
7
[C:\Users\Honza\Documents\pic\I2C_magnetometr\main]
7
[main]
8 8
Type=4
9 9
Path=
10 10
FileList=
......
12 12
OptionString=
13 13
AdditionalOptionString=
14 14
[mru-list]
15
1=C:\Users\Honza\Documents\pic\I2C_magnetometr\main.c
15
1=main.c
16 16
[Windows]
17 17
0=0000 %S 0 0 796 451 3 0
18
[Opened Files]
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=
25
[Target Data]
26
OptionString=-p +FM
27
FileList=Z:\home\kaklik\svnMLAB\Modules\Sensors\MAG01A\SW\PIC16F887\main.c
18 28
[Units]
19
Link=0
20 29
Count=1
21
1=C:\Users\Honza\Documents\pic\I2C_magnetometr\main
22
[Opened Files]
23
1=..\I2C_magnetometr\main.c
24
2=..\kompas\main.c
25
3=HMC5883L.c
26
4=
30
1=main (main)
Modules/Sensors/MAG01A/SW/PIC16F887/main.c
1
//Magnetometr Jan Chroust 2013
2
//vypise hodnoty jednotlivych os
3

  
4 1
#include "main.h"
2
#include "HMC5883L.h"
5 3

  
6
#define EEPROM_SDA  PIN_B0
7
#define EEPROM_SCL  PIN_B1
8
#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)
9
#use rs232(baud=9600,parity=N,xmit=PIN_B3,rcv=PIN_B2,bits=8) //rcv TXD xmit RXD
10

  
11
#include "HMC5883L.h"
12 4
void main()
13 5
{
6
signed int16 X,Y,Z;
7
  setup_adc_ports(NO_ANALOGS|VSS_VDD);
8
  setup_adc(ADC_CLOCK_DIV_2);
9
  setup_spi(SPI_SS_DISABLED);
10
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
11
  setup_timer_1(T1_DISABLED);
12
  setup_timer_2(T2_DISABLED,0,1);
13
  setup_ccp1(CCP_OFF);
14
  setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
14 15

  
15
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
16
   setup_adc(ADC_CLOCK_DIV_2);
17
   setup_spi(SPI_SS_DISABLED);
18
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
19
   setup_timer_1(T1_DISABLED);
20
   setup_timer_2(T2_DISABLED,0,1);
21
   setup_ccp1(CCP_OFF);
22
   setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
16
  set_mag();
23 17

  
24
printf("Magnetometr:  \r\n",);
25
printf("(c)mlab JACHO 2013:  \r\n",);
26
printf("Vysledky z jednotlivych os:\r\n",);
27
signed int16 X,Y,Z;
18
  printf("Magnetometr:  \r\n",);
19
  printf("(c)mlab JACHO 2013:  \r\n",);
20
  printf("X, Y, Z \r\n",);
28 21

  
29

  
30
while(true)
31
{  
32
   printf("Vysledky z jednotlivych os:\r\n",);
33
   X=mag_readX();
34
   Y=mag_readY();
35
   Z=mag_readZ();
36
   printf("X: %Ld \r\n", X);
37
   printf("Y %Ld \r\n", Y);
38
   printf("Z: %Ld \r\n", Z);
39
   Delay_ms(2000);  
22
  while(true)
23
  {  
24
    X = mag_readX();
25
    Y = mag_readY();
26
    Z = mag_readZ();
27
    printf("%4Ld %4Ld %4Ld \r\n", X, Y, Z);
28
    Delay_ms(50);  
40 29
   
30
  }
41 31
}
42
}
Modules/Sensors/MAG01A/SW/PIC16F887/main.lst
1
CCS PCM C Compiler, Version 4.106, 47914               16-4-13 18:24
1
CCS PCM C Compiler, Version 4.106, 47914               15-V-13 16:26
2 2

  
3
               Filename: c:\users\honza\documents\pic\i2c_magnetometr\main.lst
3
               Filename: Z:\home\kaklik\svnMLAB\Modules\Sensors\MAG01A\SW\PIC16F887\main.lst
4 4

  
5
               ROM used: 788 words (10%)
5
               ROM used: 972 words (12%)
6 6
                         Largest free fragment is 2048
7
               RAM used: 7 (2%) at main() level
7
               RAM used: 12 (3%) at main() level
8 8
                         22 (6%) worst case
9 9
               Stack:    3 locations
10 10

  
11 11
*
12
0000:  MOVLW  02
12
0000:  MOVLW  03
13 13
0001:  MOVWF  0A
14
0002:  GOTO   237
14
0002:  GOTO   317
15 15
0003:  NOP
16
.................... //Magnetometr Jan Chroust 2013 
17
.................... //vypise hodnoty jednotlivych os 
18
....................  
19 16
.................... #include "main.h" 
20 17
.................... #include <16F887.h> 
21 18
.................... //////// Standard Header file for the PIC16F887 device //////////////// 
......
24 21
....................  
25 22
.................... #device adc=8 
26 23
....................  
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 
24
.................... #FUSES NOWDT                    //No Watch Dog Timer 
25
.................... #FUSES INTRC                    //Internal RC Osc 
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 
40 37
....................  
41 38
.................... #use delay(clock=8000000) 
42 39
*
43
0221:  MOVLW  28
44
0222:  MOVWF  04
45
0223:  BCF    03.7
46
0224:  MOVF   00,W
47
0225:  BTFSC  03.2
48
0226:  GOTO   234
49
0227:  MOVLW  02
50
0228:  MOVWF  78
51
0229:  CLRF   77
52
022A:  DECFSZ 77,F
53
022B:  GOTO   22A
54
022C:  DECFSZ 78,F
55
022D:  GOTO   229
56
022E:  MOVLW  97
57
022F:  MOVWF  77
58
0230:  DECFSZ 77,F
59
0231:  GOTO   230
60
0232:  DECFSZ 00,F
61
0233:  GOTO   227
62
0234:  BCF    0A.3
63
0235:  BCF    0A.4
64
0236:  GOTO   310 (RETURN)
65
....................  
66
....................  
67
....................  
68
.................... #define EEPROM_SDA  PIN_B0 
69
.................... #define EEPROM_SCL  PIN_B1 
70
.................... #use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL) 
40
0069:  MOVLW  27
41
006A:  MOVWF  04
42
006B:  BCF    03.7
43
006C:  MOVF   00,W
44
006D:  BTFSC  03.2
45
006E:  GOTO   07C
46
006F:  MOVLW  02
47
0070:  MOVWF  78
48
0071:  CLRF   77
49
0072:  DECFSZ 77,F
50
0073:  GOTO   072
51
0074:  DECFSZ 78,F
52
0075:  GOTO   071
53
0076:  MOVLW  97
54
0077:  MOVWF  77
55
0078:  DECFSZ 77,F
56
0079:  GOTO   078
57
007A:  DECFSZ 00,F
58
007B:  GOTO   06F
59
007C:  RETURN
60
.................... #use i2c(master, sda=PIN_C4, scl=PIN_C3) 
71 61
*
72
009F:  MOVLW  08
73
00A0:  MOVWF  78
74
00A1:  NOP
75
00A2:  BCF    06.1
76
00A3:  BSF    03.5
77
00A4:  BCF    06.1
78
00A5:  NOP
79
00A6:  BCF    03.5
80
00A7:  RLF    2C,F
81
00A8:  BCF    06.0
82
00A9:  BTFSS  03.0
83
00AA:  GOTO   0AE
84
00AB:  BSF    03.5
85
00AC:  BSF    06.0
86
00AD:  BCF    03.5
87
00AE:  BTFSC  03.0
88
00AF:  GOTO   0B3
89
00B0:  BSF    03.5
90
00B1:  BCF    06.0
91
00B2:  BCF    03.5
92
00B3:  BSF    03.5
93
00B4:  BSF    06.1
94
00B5:  BCF    03.5
95
00B6:  BTFSS  06.1
96
00B7:  GOTO   0B6
97
00B8:  DECFSZ 78,F
98
00B9:  GOTO   0A1
99
00BA:  NOP
100
00BB:  BCF    06.1
101
00BC:  BSF    03.5
102
00BD:  BCF    06.1
103
00BE:  NOP
104
00BF:  BSF    06.0
105
00C0:  NOP
106
00C1:  NOP
107
00C2:  BSF    06.1
108
00C3:  BCF    03.5
109
00C4:  BTFSS  06.1
110
00C5:  GOTO   0C4
111
00C6:  CLRF   78
112
00C7:  NOP
113
00C8:  BTFSC  06.0
114
00C9:  BSF    78.0
115
00CA:  BCF    06.1
116
00CB:  BSF    03.5
117
00CC:  BCF    06.1
118
00CD:  BCF    03.5
119
00CE:  BCF    06.0
120
00CF:  BSF    03.5
121
00D0:  BCF    06.0
122
00D1:  BCF    03.5
123
00D2:  RETURN
62
001F:  MOVLW  08
63
0020:  MOVWF  78
64
0021:  NOP
65
0022:  BCF    07.3
66
0023:  BCF    20.3
67
0024:  MOVF   20,W
68
0025:  BSF    03.5
69
0026:  MOVWF  07
70
0027:  NOP
71
0028:  BCF    03.5
72
0029:  RLF    2C,F
73
002A:  BCF    07.4
74
002B:  BTFSS  03.0
75
002C:  GOTO   033
76
002D:  BSF    20.4
77
002E:  MOVF   20,W
78
002F:  BSF    03.5
79
0030:  MOVWF  07
80
0031:  GOTO   037
81
0032:  BCF    03.5
82
0033:  BCF    20.4
83
0034:  MOVF   20,W
84
0035:  BSF    03.5
85
0036:  MOVWF  07
86
0037:  NOP
87
0038:  BCF    03.5
88
0039:  BSF    20.3
89
003A:  MOVF   20,W
90
003B:  BSF    03.5
91
003C:  MOVWF  07
92
003D:  BCF    03.5
93
003E:  BTFSS  07.3
94
003F:  GOTO   03E
95
0040:  DECFSZ 78,F
96
0041:  GOTO   021
97
0042:  NOP
98
0043:  BCF    07.3
99
0044:  BCF    20.3
100
0045:  MOVF   20,W
101
0046:  BSF    03.5
102
0047:  MOVWF  07
103
0048:  NOP
104
0049:  BCF    03.5
105
004A:  BSF    20.4
106
004B:  MOVF   20,W
107
004C:  BSF    03.5
108
004D:  MOVWF  07
109
004E:  NOP
110
004F:  NOP
111
0050:  BCF    03.5
112
0051:  BSF    20.3
113
0052:  MOVF   20,W
114
0053:  BSF    03.5
115
0054:  MOVWF  07
116
0055:  BCF    03.5
117
0056:  BTFSS  07.3
118
0057:  GOTO   056
119
0058:  CLRF   78
120
0059:  NOP
121
005A:  BTFSC  07.4
122
005B:  BSF    78.0
123
005C:  BCF    07.3
124
005D:  BCF    20.3
125
005E:  MOVF   20,W
126
005F:  BSF    03.5
127
0060:  MOVWF  07
128
0061:  BCF    03.5
129
0062:  BCF    07.4
130
0063:  BCF    20.4
131
0064:  MOVF   20,W
132
0065:  BSF    03.5
133
0066:  MOVWF  07
134
0067:  BCF    03.5
135
0068:  RETURN
124 136
*
125
0107:  MOVLW  08
126
0108:  MOVWF  2D
127
0109:  MOVF   77,W
128
010A:  MOVWF  2E
129
010B:  BSF    03.5
130
010C:  BSF    06.0
131
010D:  NOP
132
010E:  BSF    06.1
133
010F:  BCF    03.5
134
0110:  BTFSS  06.1
135
0111:  GOTO   110
136
0112:  BTFSC  06.0
137
0113:  BSF    03.0
138
0114:  BTFSS  06.0
139
0115:  BCF    03.0
140
0116:  RLF    78,F
141
0117:  NOP
142
0118:  BSF    03.5
143
0119:  BCF    06.1
144
011A:  BCF    03.5
145
011B:  BCF    06.1
146
011C:  DECFSZ 2D,F
147
011D:  GOTO   10B
148
011E:  BSF    03.5
149
011F:  BSF    06.0
150
0120:  NOP
151
0121:  BCF    03.5
152
0122:  BCF    06.0
153
0123:  MOVF   2E,W
154
0124:  BTFSC  03.2
155
0125:  GOTO   129
156
0126:  BSF    03.5
157
0127:  BCF    06.0
158
0128:  BCF    03.5
159
0129:  NOP
160
012A:  BSF    03.5
161
012B:  BSF    06.1
162
012C:  BCF    03.5
163
012D:  BTFSS  06.1
164
012E:  GOTO   12D
165
012F:  NOP
166
0130:  BCF    06.1
137
01EB:  MOVLW  08
138
01EC:  MOVWF  2D
139
01ED:  MOVF   77,W
140
01EE:  MOVWF  2E
141
01EF:  BSF    20.4
142
01F0:  MOVF   20,W
143
01F1:  BSF    03.5
144
01F2:  MOVWF  07
145
01F3:  NOP
146
01F4:  BCF    03.5
147
01F5:  BSF    20.3
148
01F6:  MOVF   20,W
149
01F7:  BSF    03.5
150
01F8:  MOVWF  07
151
01F9:  BCF    03.5
152
01FA:  BTFSS  07.3
153
01FB:  GOTO   1FA
154
01FC:  BTFSC  07.4
155
01FD:  BSF    03.0
156
01FE:  BTFSS  07.4
157
01FF:  BCF    03.0
158
0200:  RLF    78,F
159
0201:  NOP
160
0202:  BCF    20.3
161
0203:  MOVF   20,W
162
0204:  BSF    03.5
163
0205:  MOVWF  07
164
0206:  BCF    03.5
165
0207:  BCF    07.3
166
0208:  DECFSZ 2D,F
167
0209:  GOTO   1EF
168
020A:  BSF    20.4
169
020B:  MOVF   20,W
170
020C:  BSF    03.5
171
020D:  MOVWF  07
172
020E:  NOP
173
020F:  BCF    03.5
174
0210:  BCF    07.4
175
0211:  MOVF   2E,W
176
0212:  BTFSC  03.2
177
0213:  GOTO   219
178
0214:  BCF    20.4
179
0215:  MOVF   20,W
180
0216:  BSF    03.5
181
0217:  MOVWF  07
182
0218:  BCF    03.5
183
0219:  NOP
184
021A:  BSF    20.3
185
021B:  MOVF   20,W
186
021C:  BSF    03.5
187
021D:  MOVWF  07
188
021E:  BCF    03.5
189
021F:  BTFSS  07.3
190
0220:  GOTO   21F
191
0221:  NOP
192
0222:  BCF    07.3
193
0223:  BCF    20.3
194
0224:  MOVF   20,W
195
0225:  BSF    03.5
196
0226:  MOVWF  07
197
0227:  NOP
198
0228:  BCF    03.5
199
0229:  BCF    07.4
200
022A:  BCF    20.4
201
022B:  MOVF   20,W
202
022C:  BSF    03.5
203
022D:  MOVWF  07
204
.................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD 
205
*
206
012F:  BCF    20.7
207
0130:  MOVF   20,W
167 208
0131:  BSF    03.5
168
0132:  BCF    06.1
169
0133:  NOP
170
0134:  BCF    03.5
171
0135:  BCF    06.0
172
0136:  BSF    03.5
173
0137:  BCF    06.0
174
.................... #use rs232(baud=9600,parity=N,xmit=PIN_B3,rcv=PIN_B2,bits=8) //rcv TXD xmit RXD 
175
*
176
0037:  BSF    03.5
177
0038:  BCF    06.3
178
0039:  BCF    03.5
179
003A:  BCF    06.3
180
003B:  MOVLW  08
181
003C:  MOVWF  78
182
003D:  GOTO   03E
183
003E:  NOP
184
003F:  BSF    78.7
185
0040:  GOTO   04F
186
0041:  BCF    78.7
187
0042:  RRF    30,F
188
0043:  BTFSC  03.0
189
0044:  BSF    06.3
190
0045:  BTFSS  03.0
191
0046:  BCF    06.3
192
0047:  BSF    78.6
193
0048:  GOTO   04F
194
0049:  BCF    78.6
195
004A:  DECFSZ 78,F
196
004B:  GOTO   042
197
004C:  GOTO   04D
198
004D:  NOP
199
004E:  BSF    06.3
200
004F:  MOVLW  3F
201
0050:  MOVWF  04
202
0051:  DECFSZ 04,F
203
0052:  GOTO   051
204
0053:  NOP
205
0054:  BTFSC  78.7
206
0055:  GOTO   041
207
0056:  BTFSC  78.6
208
0057:  GOTO   049
209
0058:  RETURN
209
0132:  MOVWF  07
210
0133:  BCF    03.5
211
0134:  BCF    07.7
212
0135:  MOVLW  08
213
0136:  MOVWF  78
214
0137:  GOTO   138
215
0138:  NOP
216
0139:  BSF    78.7
217
013A:  GOTO   149
218
013B:  BCF    78.7
219
013C:  RRF    30,F
220
013D:  BTFSC  03.0
221
013E:  BSF    07.7
222
013F:  BTFSS  03.0
223
0140:  BCF    07.7
224
0141:  BSF    78.6
225
0142:  GOTO   149
226
0143:  BCF    78.6
227
0144:  DECFSZ 78,F
228
0145:  GOTO   13C
229
0146:  GOTO   147
230
0147:  NOP
231
0148:  BSF    07.7
232
0149:  MOVLW  3F
233
014A:  MOVWF  04
234
014B:  DECFSZ 04,F
235
014C:  GOTO   14B
236
014D:  NOP
237
014E:  BTFSC  78.7
238
014F:  GOTO   13B
239
0150:  BTFSC  78.6
240
0151:  GOTO   143
241
0152:  RETURN
210 242
....................  
243
....................  
211 244
.................... #include "HMC5883L.h" 
212 245
.................... #define MAG_ADDR_R  0x3D //addresa pro cteni 
213 246
.................... #define MAG_ADDR_W  0x3C 
......
229 262
.................... void set_mag (void) //uvodni nastaveni na kontinualni mereni, rozsah ? 8.1 Ga, frekvence mereni 15HZ 
230 263
.................... { 
231 264
....................   i2c_start();       //nastaven? Configuration Register A 
265
*
266
007D:  BSF    20.4
267
007E:  MOVF   20,W
268
007F:  BSF    03.5
269
0080:  MOVWF  07
270
0081:  NOP
271
0082:  BCF    03.5
272
0083:  BSF    20.3
273
0084:  MOVF   20,W
274
0085:  BSF    03.5
275
0086:  MOVWF  07
276
0087:  NOP
277
0088:  BCF    03.5
278
0089:  BCF    07.4
279
008A:  BCF    20.4
280
008B:  MOVF   20,W
281
008C:  BSF    03.5
282
008D:  MOVWF  07
283
008E:  NOP
284
008F:  BCF    03.5
285
0090:  BCF    07.3
286
0091:  BCF    20.3
287
0092:  MOVF   20,W
288
0093:  BSF    03.5
289
0094:  MOVWF  07
232 290
....................   I2C_Write(MAG_ADDR_W);      
291
0095:  MOVLW  3C
292
0096:  BCF    03.5
293
0097:  MOVWF  2C
294
0098:  CALL   01F
233 295
....................   I2C_Write(0x00);    
296
0099:  CLRF   2C
297
009A:  CALL   01F
234 298
....................   I2C_Write(0x70); 
299
009B:  MOVLW  70
300
009C:  MOVWF  2C
301
009D:  CALL   01F
235 302
....................   i2c_stop(); 
303
009E:  BCF    20.4
304
009F:  MOVF   20,W
305
00A0:  BSF    03.5
306
00A1:  MOVWF  07
307
00A2:  NOP
308
00A3:  BCF    03.5
309
00A4:  BSF    20.3
310
00A5:  MOVF   20,W
311
00A6:  BSF    03.5
312
00A7:  MOVWF  07
313
00A8:  BCF    03.5
314
00A9:  BTFSS  07.3
315
00AA:  GOTO   0A9
316
00AB:  NOP
317
00AC:  GOTO   0AD
318
00AD:  NOP
319
00AE:  BSF    20.4
320
00AF:  MOVF   20,W
321
00B0:  BSF    03.5
322
00B1:  MOVWF  07
323
00B2:  NOP
236 324
....................   Delay_ms(6); 
325
00B3:  MOVLW  06
326
00B4:  BCF    03.5
327
00B5:  MOVWF  27
328
00B6:  CALL   069
237 329
....................     
238 330
....................   i2c_start();       //nastaven? Configuration Register B 
331
00B7:  BSF    20.4
332
00B8:  MOVF   20,W
333
00B9:  BSF    03.5
334
00BA:  MOVWF  07
335
00BB:  NOP
336
00BC:  BCF    03.5
337
00BD:  BSF    20.3
338
00BE:  MOVF   20,W
339
00BF:  BSF    03.5
340
00C0:  MOVWF  07
341
00C1:  NOP
342
00C2:  BCF    03.5
343
00C3:  BCF    07.4
344
00C4:  BCF    20.4
345
00C5:  MOVF   20,W
346
00C6:  BSF    03.5
347
00C7:  MOVWF  07
348
00C8:  NOP
349
00C9:  BCF    03.5
350
00CA:  BCF    07.3
351
00CB:  BCF    20.3
352
00CC:  MOVF   20,W
353
00CD:  BSF    03.5
354
00CE:  MOVWF  07
239 355
....................   I2C_Write(MAG_ADDR_W);      
356
00CF:  MOVLW  3C
357
00D0:  BCF    03.5
358
00D1:  MOVWF  2C
359
00D2:  CALL   01F
240 360
....................   I2C_Write(0x01);    
361
00D3:  MOVLW  01
362
00D4:  MOVWF  2C
363
00D5:  CALL   01F
241 364
....................   I2C_Write(MAG_ROZ810); 
365
00D6:  MOVLW  E0
366
00D7:  MOVWF  2C
367
00D8:  CALL   01F
242 368
....................   i2c_stop(); 
369
00D9:  BCF    20.4
370
00DA:  MOVF   20,W
371
00DB:  BSF    03.5
372
00DC:  MOVWF  07
373
00DD:  NOP
374
00DE:  BCF    03.5
375
00DF:  BSF    20.3
376
00E0:  MOVF   20,W
377
00E1:  BSF    03.5
378
00E2:  MOVWF  07
379
00E3:  BCF    03.5
380
00E4:  BTFSS  07.3
381
00E5:  GOTO   0E4
382
00E6:  NOP
383
00E7:  GOTO   0E8
384
00E8:  NOP
385
00E9:  BSF    20.4
386
00EA:  MOVF   20,W
387
00EB:  BSF    03.5
388
00EC:  MOVWF  07
389
00ED:  NOP
243 390
....................  
244 391
....................   Delay_ms(6); 
392
00EE:  MOVLW  06
393
00EF:  BCF    03.5
394
00F0:  MOVWF  27
395
00F1:  CALL   069
245 396
....................  
246 397
....................   i2c_start();          //nastveni Mode Register  
398
00F2:  BSF    20.4
399
00F3:  MOVF   20,W
400
00F4:  BSF    03.5
401
00F5:  MOVWF  07
402
00F6:  NOP
403
00F7:  BCF    03.5
404
00F8:  BSF    20.3
405
00F9:  MOVF   20,W
406
00FA:  BSF    03.5
407
00FB:  MOVWF  07
408
00FC:  NOP
409
00FD:  BCF    03.5
410
00FE:  BCF    07.4
411
00FF:  BCF    20.4
412
0100:  MOVF   20,W
413
0101:  BSF    03.5
414
0102:  MOVWF  07
415
0103:  NOP
416
0104:  BCF    03.5
417
0105:  BCF    07.3
418
0106:  BCF    20.3
419
0107:  MOVF   20,W
420
0108:  BSF    03.5
421
0109:  MOVWF  07
247 422
....................   I2C_Write(MAG_ADDR_W);      
423
010A:  MOVLW  3C
424
010B:  BCF    03.5
425
010C:  MOVWF  2C
426
010D:  CALL   01F
248 427
....................   I2C_Write(0x02);    
428
010E:  MOVLW  02
429
010F:  MOVWF  2C
430
0110:  CALL   01F
249 431
....................   I2C_Write(0x00); 
432
0111:  CLRF   2C
433
0112:  CALL   01F
250 434
....................   i2c_stop(); 
435
0113:  BCF    20.4
436
0114:  MOVF   20,W
437
0115:  BSF    03.5
438
0116:  MOVWF  07
439
0117:  NOP
440
0118:  BCF    03.5
441
0119:  BSF    20.3
442
011A:  MOVF   20,W
443
011B:  BSF    03.5
444
011C:  MOVWF  07
445
011D:  BCF    03.5
446
011E:  BTFSS  07.3
447
011F:  GOTO   11E
448
0120:  NOP
449
0121:  GOTO   122
450
0122:  NOP
451
0123:  BSF    20.4
452
0124:  MOVF   20,W
453
0125:  BSF    03.5
454
0126:  MOVWF  07
455
0127:  NOP
251 456
....................   Delay_ms(6);   
457
0128:  MOVLW  06
458
0129:  BCF    03.5
459
012A:  MOVWF  27
460
012B:  CALL   069
252 461
.................... } 
462
012C:  BCF    0A.3
463
012D:  BCF    0A.4
464
012E:  GOTO   37F (RETURN)
253 465
....................  
254 466
.................... void set_mag_roz (unsigned int8 h) //nastavy rozsah 
255 467
.................... { 
......
274 486
....................   
275 487
....................    i2c_start(); 
276 488
*
277
00D3:  BSF    03.5
278
00D4:  BSF    06.0
279
00D5:  NOP
280
00D6:  BSF    06.1
281
00D7:  NOP
282
00D8:  BCF    03.5
283
00D9:  BCF    06.0
284
00DA:  BSF    03.5
285
00DB:  BCF    06.0
286
00DC:  NOP
287
00DD:  BCF    03.5
288
00DE:  BCF    06.1
289
00DF:  BSF    03.5
290
00E0:  BCF    06.1
489
0199:  BSF    20.4
490
019A:  MOVF   20,W
491
019B:  BSF    03.5
492
019C:  MOVWF  07
493
019D:  NOP
494
019E:  BCF    03.5
495
019F:  BSF    20.3
496
01A0:  MOVF   20,W
497
01A1:  BSF    03.5
498
01A2:  MOVWF  07
499
01A3:  NOP
500
01A4:  BCF    03.5
501
01A5:  BCF    07.4
502
01A6:  BCF    20.4
503
01A7:  MOVF   20,W
504
01A8:  BSF    03.5
505
01A9:  MOVWF  07
506
01AA:  NOP
507
01AB:  BCF    03.5
508
01AC:  BCF    07.3
509
01AD:  BCF    20.3
510
01AE:  MOVF   20,W
511
01AF:  BSF    03.5
512
01B0:  MOVWF  07
291 513
....................    I2C_Write(MAG_ADDR_W); 
292
00E1:  MOVLW  3C
293
00E2:  BCF    03.5
294
00E3:  MOVWF  2C
295
00E4:  CALL   09F
514
01B1:  MOVLW  3C
515
01B2:  BCF    03.5
516
01B3:  MOVWF  2C
517
01B4:  CALL   01F
296 518
....................    I2C_write(reg); 
297
00E5:  MOVF   2B,W
298
00E6:  MOVWF  2C
299
00E7:  CALL   09F
519
01B5:  MOVF   2B,W
520
01B6:  MOVWF  2C
521
01B7:  CALL   01F
300 522
....................    i2c_stop(); 
301
00E8:  BSF    03.5
302
00E9:  BCF    06.0
303
00EA:  NOP
304
00EB:  BSF    06.1
305
00EC:  BCF    03.5
306
00ED:  BTFSS  06.1
307
00EE:  GOTO   0ED
308
00EF:  NOP
309
00F0:  GOTO   0F1
310
00F1:  NOP
311
00F2:  BSF    03.5
312
00F3:  BSF    06.0
313
00F4:  NOP
523
01B8:  BCF    20.4
524
01B9:  MOVF   20,W
525
01BA:  BSF    03.5
526
01BB:  MOVWF  07
527
01BC:  NOP
528
01BD:  BCF    03.5
529
01BE:  BSF    20.3
530
01BF:  MOVF   20,W
531
01C0:  BSF    03.5
532
01C1:  MOVWF  07
533
01C2:  BCF    03.5
534
01C3:  BTFSS  07.3
535
01C4:  GOTO   1C3
536
01C5:  NOP
537
01C6:  GOTO   1C7
538
01C7:  NOP
539
01C8:  BSF    20.4
540
01C9:  MOVF   20,W
541
01CA:  BSF    03.5
542
01CB:  MOVWF  07
543
01CC:  NOP
314 544
....................    i2c_start(); 
315
00F5:  BSF    06.0
316
00F6:  NOP
317
00F7:  BSF    06.1
318
00F8:  NOP
319
00F9:  BCF    03.5
320
00FA:  BCF    06.0
321
00FB:  BSF    03.5
322
00FC:  BCF    06.0
323
00FD:  NOP
324
00FE:  BCF    03.5
325
00FF:  BCF    06.1
326
0100:  BSF    03.5
327
0101:  BCF    06.1
545
01CD:  BCF    03.5
546
01CE:  BSF    20.4
547
01CF:  MOVF   20,W
548
01D0:  BSF    03.5
549
01D1:  MOVWF  07
550
01D2:  NOP
551
01D3:  BCF    03.5
552
01D4:  BSF    20.3
553
01D5:  MOVF   20,W
554
01D6:  BSF    03.5
555
01D7:  MOVWF  07
556
01D8:  NOP
557
01D9:  BCF    03.5
558
01DA:  BCF    07.4
559
01DB:  BCF    20.4
560
01DC:  MOVF   20,W
561
01DD:  BSF    03.5
562
01DE:  MOVWF  07
563
01DF:  NOP
564
01E0:  BCF    03.5
565
01E1:  BCF    07.3
566
01E2:  BCF    20.3
567
01E3:  MOVF   20,W
568
01E4:  BSF    03.5
569
01E5:  MOVWF  07
328 570
....................    I2C_Write(MAG_ADDR_R); 
329
0102:  MOVLW  3D
330
0103:  BCF    03.5
331
0104:  MOVWF  2C
332
0105:  CALL   09F
571
01E6:  MOVLW  3D
572
01E7:  BCF    03.5
573
01E8:  MOVWF  2C
574
01E9:  CALL   01F
333 575
....................    reg=i2c_read(0); 
334
0106:  CLRF   77
576
01EA:  CLRF   77
335 577
*
336
0138:  MOVF   78,W
337
0139:  BCF    03.5
338
013A:  MOVWF  2B
578
022E:  MOVF   78,W
579
022F:  BCF    03.5
580
0230:  MOVWF  2B
339 581
....................   return reg; 
340
013B:  MOVF   2B,W
341
013C:  MOVWF  78
582
0231:  MOVF   2B,W
583
0232:  MOVWF  78
342 584
.................... } 
343
013D:  RETURN
585
0233:  RETURN
344 586
....................  
345 587
....................  
346 588
.................... signed int16 mag_vypocet(unsigned int8 h, unsigned int8 l) //prepocet na 16bit cislo 
347 589
.................... { 
348 590
.................... signed int16 x; 
349 591
.................... x = (((unsigned int16) h << 8) + l ); 
350
013E:  CLRF   30
351
013F:  MOVF   2B,W
352
0140:  MOVWF  2F
353
0141:  MOVWF  30
354
0142:  CLRF   2F
355
0143:  MOVF   2C,W
356
0144:  ADDWF  2F,W
357
0145:  MOVWF  78
358
0146:  MOVF   30,W
359
0147:  MOVWF  7A
360
0148:  BTFSC  03.0
361
0149:  INCF   7A,F
362
014A:  MOVF   78,W
363
014B:  MOVWF  2D
364
014C:  MOVF   7A,W
365
014D:  MOVWF  2E
592
0234:  CLRF   30
593
0235:  MOVF   2B,W
594
0236:  MOVWF  2F
595
0237:  MOVWF  30
596
0238:  CLRF   2F
597
0239:  MOVF   2C,W
598
023A:  ADDWF  2F,W
599
023B:  MOVWF  78
600
023C:  MOVF   30,W
... Π­Ρ‚ΠΎΡ‚ diff ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. :@created_atf1417897278.8710921Ώω:@expires_in0