/Modules/Sensors/MAG01A/SW/PIC16F887/main.c
4,6 → 4,11
 
void main()
{
float last,b,anemo_speed;
unsigned int16 anemo_round=0;
unsigned int16 i;
 
//signed int16 X,Y,Z;
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
11,10 → 16,10
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
 
printf("Magnetometr: \r\n",);
printf("(c)mlab.cz kaklik 2013: \r\n",);
printf("(c)mlab JACHO 2013: \r\n",);
printf("X, Y, Z \r\n",);
 
 
21,7 → 26,7
// Init the HMC5883L. Set Mode register for
// continuous measurements.
hmc5883l_write_reg(HMC5883L_CFG_A_REG, 0x18); // no average, maximal update range
hmc5883l_write_reg(HMC5883L_CFG_B_REG, 0x00); // minimal range
hmc5883l_write_reg(HMC5883L_CFG_B_REG, 0xE0); // maximal range
hmc5883l_write_reg(HMC5883L_MODE_REG, 0x00);
 
// Continuously read and display the x,y,z results.
/Modules/Sensors/MAG01A/SW/PIC16F887/main.cof
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/Modules/Sensors/MAG01A/SW/PIC16F887/main.err
1,2 → 1,7
Memory usage: ROM=9% RAM=3% - 6%
0 Errors, 0 Warnings.
>>> Warning 202 "main.c" Line 7(7,11): Variable never used: last
>>> Warning 202 "main.c" Line 7(12,13): Variable never used: b
>>> Warning 202 "main.c" Line 7(14,25): Variable never used: anemo_speed
>>> Warning 202 "main.c" Line 8(16,27): Variable never used: anemo_round
>>> Warning 202 "main.c" Line 9(16,17): Variable never used: i
Memory usage: ROM=10% RAM=8% - 10%
0 Errors, 5 Warnings.
/Modules/Sensors/MAG01A/SW/PIC16F887/main.esym
1,7 → 1,7
D G "__PCM__" 0 44 ""4.106""
D G "__DEVICE__" 0 44 "887"
D G "__DATE__" 0 44 ""25-VIII-13""
D G "__TIME__" 0 44 ""18:55:43"" "Standard Header file for the PIC16F887 device ////////////////"
D G "__PCM__" 0 0 ""4.106""
D G "__DEVICE__" 0 0 ""
D G "__DATE__" 0 0 ""17-V-13""
D G "__TIME__" 0 0 ""12:14:46"" "Standard Header file for the PIC16F887 device ////////////////"
d G "PIN_A0" 2 20 "40"
d G "PIN_A1" 2 21 "41"
d G "PIN_A2" 2 22 "42"
288,10 → 288,10
D G "MAG_ROZ560" 3 19 "0xC0"
D G "MAG_ROZ810" 3 20 "0xE0"
C L "hmc5883l_write_reg" 4 2 1 "FUNCTION"
F G "hmc5883l_write_reg" 4 4 "void(int8 reg,int8 data)"
F G "hmc5883l_write_reg" 4 4 "void()"
V L "reg" 4 4 "int8"
V L "data" 4 4 "int8"
F G "hmc5883l_read_reg" 4 14 "int8(int8 reg)"
F G "hmc5883l_read_reg" 4 14 "int8()"
V L "reg" 4 14 "int8"
V L "retval" 4 16 "int8"
T G "hmc5883l_result" 4 35 "{sint16 x,sint16 y,sint16 z}" "This global structure holds the values read"
310,7 → 310,7
D G "PI" 5 26 "3.1415926535897932"
D G "SQRT2" 5 29 "1.4142135623730950"
C L "CEIL_FLOOR" 5 2 3 "FUNCTION"
F G "CEIL_FLOOR" 5 36 "float(float x,int8 n)"
F G "CEIL_FLOOR" 5 36 "float()"
V L "x" 5 36 "float"
V L "n" 5 36 "int8"
V L "y" 5 38 "float"
318,20 → 318,20
V L "l" 5 39 "int16"
V L "s" 5 40 "int1"
C L "floor" 5 2 5 "FUNCTION"
F G "floor" 5 192 "float(float x)"
F G "floor" 5 192 "float()"
V L "x" 5 192 "float"
C L "ceil" 5 2 5 "FUNCTION"
F G "ceil" 5 218 "float(float x)"
F G "ceil" 5 218 "float()"
V L "x" 5 218 "float"
D G "fabs" 5 244 "abs"
C L "fmod" 5 2 6 "FUNCTION"
F G "fmod" 5 256 "float(float x,float y)"
F G "fmod" 5 256 "float()"
V L "x" 5 256 "float"
V L "y" 5 256 "float"
V L "i" 5 258 "float"
D G "LN2" 5 319 "0.6931471805599453"
V G "pe" 5 321 "float[6]"
F G "exp" 5 325 "float(float x)"
F G "exp" 5 325 "float()"
V L "x" 5 325 "float"
V L "y" 5 327 "float"
V L "res" 5 327 "float"
342,7 → 342,7
V G "pl" 5 496 "float[4]"
V G "ql" 5 497 "float[4]"
C L "log" 5 2 3 "FUNCTION"
F G "log" 5 505 "float(float x)"
F G "log" 5 505 "float()"
V L "x" 5 505 "float"
V L "y" 5 507 "float"
V L "res" 5 507 "float"
352,23 → 352,23
C L "log" 5 2 1 "FUNCTION"
D G "LN10" 5 729 "2.3025850929940456"
C L "log10" 5 2 3 "FUNCTION"
F G "log10" 5 737 "float(float x)"
F G "log10" 5 737 "float()"
V L "x" 5 737 "float"
V L "r" 5 739 "float"
C L "modf" 5 2 8 "FUNCTION"
F G "modf" 5 778 "float(float value,*float iptr)"
F G "modf" 5 778 "float()"
V L "value" 5 778 "float"
V L "iptr" 5 778 "*float"
C L "pwr" 5 2 6 "FUNCTION"
F G "pwr" 5 806 "float(float x,float y)"
F G "pwr" 5 806 "float()"
V L "x" 5 806 "float"
V L "y" 5 806 "float"
C L "pow" 5 2 7 "FUNCTION"
F G "pow" 5 869 "float(float x,float y)"
F G "pow" 5 869 "float()"
V L "x" 5 869 "float"
V L "y" 5 869 "float"
C L "sqrt" 5 2 5 "FUNCTION"
F G "sqrt" 5 930 "float(float x)"
F G "sqrt" 5 930 "float()"
V L "x" 5 930 "float"
V L "y" 5 932 "float"
V L "res" 5 932 "float"
375,7 → 375,7
V L "p" 5 936 "*int8"
D G "PI_DIV_BY_TWO" 5 1125 "1.5707963267948966"
C L "cos" 5 2 3 "FUNCTION"
F G "cos" 5 1136 "float(float x)"
F G "cos" 5 1136 "float()"
V L "x" 5 1136 "float"
V L "y" 5 1138 "float"
V L "t" 5 1138 "float"
393,16 → 393,16
C L "cos" 5 2 1 "FUNCTION"
C L "cos" 5 2 1 "FUNCTION"
C L "sin" 5 2 5 "FUNCTION"
F G "sin" 5 1278 "float(float x)"
F G "sin" 5 1278 "float()"
V L "x" 5 1278 "float"
C L "tan" 5 2 5 "FUNCTION"
F G "tan" 5 1304 "float(float x)"
F G "tan" 5 1304 "float()"
V L "x" 5 1304 "float"
V L "c" 5 1306 "float"
V L "s" 5 1306 "float"
V G "pas" 5 1344 "float[3]"
V G "qas" 5 1345 "float[3]"
F G "ASIN_COS" 5 1347 "float(float x,int8 n)"
F G "ASIN_COS" 5 1347 "float()"
V L "x" 5 1347 "float"
V L "n" 5 1347 "int8"
V L "y" 5 1349 "float"
413,17 → 413,17
C L "ASIN_COS" 5 2 1 "FUNCTION"
C L "ASIN_COS" 5 2 1 "FUNCTION"
C L "asin" 5 2 5 "FUNCTION"
F G "asin" 5 1493 "float(float x)"
F G "asin" 5 1493 "float()"
V L "x" 5 1493 "float"
V L "r" 5 1495 "float"
C L "acos" 5 2 5 "FUNCTION"
F G "acos" 5 1527 "float(float x)"
F G "acos" 5 1527 "float()"
V L "x" 5 1527 "float"
V L "r" 5 1529 "float"
V G "pat" 5 1555 "float[4]"
V G "qat" 5 1556 "float[4]"
C L "atan" 5 2 3 "FUNCTION"
F G "atan" 5 1564 "float(float x)"
F G "atan" 5 1564 "float()"
V L "x" 5 1564 "float"
V L "y" 5 1566 "float"
V L "res" 5 1566 "float"
432,7 → 432,7
V L "flag" 5 1567 "int1"
C L "atan" 5 2 1 "FUNCTION"
C L "atan2" 5 2 7 "FUNCTION"
F G "atan2" 5 1697 "float(float y,float x)"
F G "atan2" 5 1697 "float()"
V L "y" 5 1697 "float"
V L "x" 5 1697 "float"
V L "z" 5 1699 "float"
441,30 → 441,36
C L "atan2" 5 2 1 "FUNCTION"
C L "atan2" 5 2 1 "FUNCTION"
C L "cosh" 5 2 7 "FUNCTION"
F G "cosh" 5 1919 "float(float x)"
F G "cosh" 5 1919 "float()"
V L "x" 5 1919 "float"
C L "sinh" 5 2 6 "FUNCTION"
F G "sinh" 5 1946 "float(float x)"
F G "sinh" 5 1946 "float()"
V L "x" 5 1946 "float"
C L "tanh" 5 2 6 "FUNCTION"
F G "tanh" 5 1976 "float(float x)"
F G "tanh" 5 1976 "float()"
V L "x" 5 1976 "float"
D G "LOG2" 5 2006 ".30102999566398119521"
F G "frexp" 5 2007 "float(float x,*sint8 exp)"
F G "frexp" 5 2007 "float()"
V L "x" 5 2007 "float"
V L "exp" 5 2007 "*sint8"
V L "res" 5 2009 "float"
V L "sign" 5 2010 "int1"
C L "ldexp" 5 2 6 "FUNCTION"
F G "ldexp" 5 2152 "float(float value,sint8 exp)"
F G "ldexp" 5 2152 "float()"
V L "value" 5 2152 "float"
V L "exp" 5 2152 "sint8"
C L "MAIN" 5 2 2 "FUNCTION"
F G "MAIN" 0 5 "void()"
C L "MAIN" 0 21 2 "FUNCTION"
C L "MAIN" 0 21 1 "FUNCTION"
C L "MAIN" 0 21 1 "FUNCTION"
C L "MAIN" 0 21 2 "FUNCTION"
V L "last" 0 7 "float"
V L "b" 0 7 "float"
V L "anemo_speed" 0 7 "float"
V L "anemo_round" 0 8 "int16"
V L "i" 0 9 "int16" "signed int16 X,Y,Z;"
C L "MAIN" 0 19 1 "FUNCTION"
C L "MAIN" 0 19 2 "FUNCTION"
C L "MAIN" 0 19 1 "FUNCTION"
C L "MAIN" 0 19 1 "FUNCTION"
C L "MAIN" 0 19 2 "FUNCTION"
F B "reset_cpu" 0 0
F B "abs" 1 0
F B "sleep_ulpwu" 1 0
597,5 → 603,3
F B "getch" 0 1
F B "gets" 1 3
F B "kbhit" 0 1
F B "set_uart_speed" 1 3
F B "setup_uart" 1 3
/Modules/Sensors/MAG01A/SW/PIC16F887/main.h
17,5 → 17,5
 
#use delay(clock=8000000)
#use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) //rcv TXD xmit RXD
#use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD
 
/Modules/Sensors/MAG01A/SW/PIC16F887/main.hex
1,100 → 1,104
:1000000002308A003C2A0000CD306737653AEF366F
:1000000002308A00662A0000CD306737653AEF3645
:10001000653A721D20100D050000A831A936EC309C
:100020006217633DA035E135EC346B103218B1191D
:100030003A10A0060A005816A02C2C105A100D05D4
:100040000001831603178C170C14000000008312A4
:100050000C087F39031967280313A70003170D083D
:100060000313A80003170F080313A90027080C1E89
:1000700037289900280803178D0003132908031750
:100080008F0083168C170C140000000083120C0DD7
:100090000E0D7F39031967280313A70003170D08F6
:1000A0000313A80003170F080313A90027080C1E49
:1000B00057289900280803178D00031329080317F0
:1000C0008F008D0A03198F0A0313212803170313C6
:1000D00008000830F80000008711A01120088316DE
:1000E000870000008312AD0D0712031C7D28201627
:1000F0002008831687008128831220122008831687
:10010000870000008312A015200883168700831241
:10011000871D8828F80B6B2800008711A011200884
:10012000831687000000831220162008831687009C
:10013000000000008312A015200883168700831298
:10014000871DA028F8010000071A78148711A01154
:1001500020088316870083120712201220088316B6
:1001600087008312080020162008831687000000ED
:100170008312A0152008831687000000831207123F
:100180002012200883168700000083128711A01117
:100190002008831687003C308312AD0069202708B1
:1001A000AD0069202808AD006920201220088316C0
:1001B000870000008312A015200883168700831291
:1001C000871DE0280000E428000020162008831680
:1001D00087000000831208000830AE007708AF00E7
:1001E000201620088316870000008312A01520081F
:1001F000831687008312871DFB28071A0314071E26
:100200000310F80D0000A011200883168700831248
:100210008711AE0BF02820162008831687000000F7
:10022000831207122F0803191A2920122008831697
:10023000870083120000A015200883168700831210
:10024000871D202900008711A01120088316870030
:1002500000008312071220122008831687008312E1
:100260000800201620088316870000008312A015BE
:10027000200883168700000083120712201220082E
:1002800083168700000083128711A01120088316AF
:1002900087003C308312AD0069200330AD00692037
:1002A000201620088316870000008312A01520085E
:1002B0008316870000008312871D5C290712201215
:1002C000200883168700000083128711A0112008E0
:1002D000831687003D308312AD0069200130F7009E
:1002E000EC207808A8000130F700EC207808A7007F
:1002F0000130F700EC207808AC000130F700EC206A
:100300007808AB000130F700EC207808AA00F7016C
:10031000EC207808A900201220088316870000002E
:100320008312A0152008831687008312871D962943
:1003300000009A290000201620088316870000007C
:1003400083122808A2002708A1002A08A40029086F
:10035000A3002C08A6002B08A5008A110A12CC2A9B
:10036000AF010408AE002F10831B2F14A81FC02953
:10037000AE172E1EAE0AA709A809A70A0319A80AD4
:10038000280EF038AA00AA07E23EAB00323EAD00CC
:1003900028080F39AB07AB07AD07E93EAC00AC0747
:1003A000AC07270E0F39AC07AD07AC0DAD0DAD098D
:1003B000AD0D27080F39AD07AA0D0730A9000A3087
:1003C000AD07AC03031CE029AC07AB03031CE42915
:1003D000AB07AA03031CE829AA07A903031CEC29FD
:1003E00029308400831307302E052E1384032E0535
:1003F000031D012A2E1A840A2E1A012A2030F70022
:100400001E2A84072D30040203192E170008F70056
:10041000031D122A2E1B122A2E1A222AAE19122A64
:1004200020301D2AAE1F1A2A2D30F70084032E1308
:10043000AE131E2AAE152E123030F70777080C1EA9
:100440001F2A9900840A2E1F022A080027308400E0
:10045000831300080319392A0230F800F701F70B5B
:100460002F2AF80B2E2A9730F700F70B352A800B2E
:100470002C2A8A110A12F82A840183131F3083055B
:10048000713083168F000F08031787110C30031388
:100490009900A230980090308312980083160317B9
:1004A0000908C039890003131F129F120030031777
:1004B00088008312870188018901FF300313A0009F
:1004C000A101A201A301A401A501A601831603179E
:1004D0000908C039890003131F129F120030031747
:1004E0008800831203131F139F1383169F13831215
:1004F0001F149412A012200883168700831220165E
:100500002008831687008312A01120088316870015
:100510000130831294000030831694000108C7391B
:1005200008388100831290010030F80092000030FA
:1005300083169200831220152008831687008312E9
:10054000970183169B019C0101309D0083120317C4
:1005500087018801890104308D0000308F0003136A
:1005600021200D3003178D0000308F000313212050
:100570001B3003178D0000308F0003132120A701CB
:100580001830A800B3200130A700A801B320023022
:10059000A700A801B3203129003084002208A80058
:1005A0002108A700B02120300C1ED42A9900003069
:1005B00084002408A8002308A700B02120300C1EC6
:1005C000DF2A9900003084002608A8002508A7002B
:1005D000B02120300C1EEA2A99000A300C1EEE2AA7
:1005E00099000D300C1EF22A99006430A700262ACB
:0405F000CB2A6300AF
:100020006210CA2043244F103218B1193A10A006AA
:100030000A005816A02C2C105A100D050001A01310
:10004000200883168700831287130830F8002828B9
:100050000000F8173928F813C00C03188717031C81
:100060008713781739287813F80B2C2837280000C5
:1000700087173F308400840B3B280000F81B2B2897
:10008000781B33280800831603178C170C14000004
:10009000000083120C087F39031987280313B70067
:1000A00003170D080313B80003170F080313B90053
:1000B0003708C0001F20380803178D0003133908C4
:1000C00003178F0083168C170C1400000000831296
:1000D0000C0D0E0D7F39031987280313B700031782
:1000E0000D080313B80003170F080313B9003708EE
:1000F000C0001F20380803178D00031339080317A9
:100100008F008D0A03198F0A031343280317031363
:1001100008000830F80000008711A011200883169D
:10012000870000008312BD0D0712031C9D282016B6
:10013000200883168700A128831220122008831626
:10014000870000008312A015200883168700831201
:10015000871DA828F80B8B2800008711A011200804
:10016000831687000000831220162008831687005C
:10017000000000008312A015200883168700831258
:10018000871DC028F8010000071A78148711A011F4
:100190002008831687008312071220122008831676
:1001A00087008312080020162008831687000000AD
:1001B0008312A015200883168700000083120712FF
:1001C0002012200883168700000083128711A011D7
:1001D0002008831687003C308312BD008920370831
:1001E000BD0089203808BD00892020122008831610
:1001F000870000008312A015200883168700831251
:10020000871D0029000004290000201620088316FD
:1002100087000000831208000830BE007708BF0086
:10022000201620088316870000008312A0152008DE
:10023000831687008312871D1B29071A0314071EC4
:100240000310F80D0000A011200883168700831208
:100250008711BE0B10292016200883168700000086
:10026000831207123F0803193A2920122008831627
:10027000870083120000A0152008831687008312D0
:10028000871D402900008711A011200883168700D0
:1002900000008312071220122008831687008312A1
:1002A0000800201620088316870000008312A0157E
:1002B00020088316870000008312071220122008EE
:1002C00083168700000083128711A011200883166F
:1002D00087003C308312BD0089200330BD00892097
:1002E000201620088316870000008312A01520081E
:1002F0008316870000008312871D7C2907122012B5
:10030000200883168700000083128711A01120089F
:10031000831687003D308312BD0089200130F7002D
:100320000C217808B8000130F7000C217808B700DC
:100330000130F7000C217808BC000130F7000C21D7
:100340007808BB000130F7000C217808BA00F701EB
:100350000C217808B90020122008831687000000BD
:100360008312A0152008831687008312871DB629E3
:100370000000BA290000201620088316870000001C
:1003800083123808A2003708A1003A08A4003908EF
:10039000A3003C08A6003B08A5008A110A12F62A11
:1003A000BF010408BE003F10831B3F14B81FE029A3
:1003B000BE173E1EBE0AB709B809B70A0319B80A24
:1003C000380EF038BA00BA07E23EBB00323EBD003C
:1003D00038080F39BB07BB07BD07E93EBC00BC07A7
:1003E000BC07370E0F39BC07BD07BC0DBD0DBD09DD
:1003F000BD0D37080F39BD07BA0D0730B9000A30F7
:10040000BD07BC03031C002ABC07BB03031C042A52
:10041000BB07BA03031C082ABA07B903031C0C2A3A
:1004200039308400831307303E053E1384033E05B4
:10043000031D212A3E1A840A3E1A212A2030F70081
:100440003E2A84073D30040203193E170008F700D6
:10045000031D322A3E1B322A3E1A4C2ABE19322A6A
:1004600020303D2ABE1F3A2A2D30F70084033E1368
:10047000BE133E2ABE153E123030F707B8010408FD
:10048000B7003810831B38147708C0001F203708C6
:100490008400831338188317840A3E1F222A080019
:1004A00037308400831300080319632A0230F800F0
:1004B000F701F70B592AF80B582A9730F700F70B7A
:1004C0005F2A800B562A8A110A121D2B840183137E
:1004D0001F308305713083168F000F088312A0131D
:1004E00020088316870083128717831603170908CD
:1004F000C039890003131F129F12003003178800B0
:100500008312870188018901FF300313A000A10134
:10051000A201A301A401A501A601B401B3018316A0
:1005200003170908C039890003131F129F120030F6
:1005300003178800831203131F139F1383169F133F
:1005400083121F149412A0122008831687008312AE
:1005500020162008831687008312A0112008831616
:100560008700013083129400003083169400010844
:10057000C73908388100831290010030F8009200DA
:1005800000308316920083122015200883168700FE
:100590008312970183169B019C0101309D008312F9
:1005A000031787018801890104308D0000308F0016
:1005B000031343200D3003178D0000308F00031309
:1005C0004320193003178D0000308F0003134320A0
:1005D000B7011830B800D3200130B700E030B800C0
:1005E000D3200230B700B801D32051290030840055
:1005F0002208B8002108B700D0212030C0001F20F9
:10060000003084002408B8002308B700D02120302F
:10061000C0001F20003084002608B8002508B7005D
:10062000D0212030C0001F200A30C0001F200D3014
:0E063000C0001F206430B700502AF52A630076
:04400E00F52CFF3F4F
:00000001FF
;PIC16F887
;CRC=2B66 CREATED="25-VIII-13 18:55"
;CRC=17FE CREATED="17-V-13 12:14"
/Modules/Sensors/MAG01A/SW/PIC16F887/main.lst
1,17 → 1,17
CCS PCM C Compiler, Version 4.106, 47914 25-VIII-13 18:55
CCS PCM C Compiler, Version 4.106, 47914 17-V-13 12:14
 
Filename: Z:\home\kaklik\svnMLAB\Modules\Sensors\MAG01A\SW\PIC16F887\main.lst
 
ROM used: 762 words (9%)
ROM used: 799 words (10%)
Largest free fragment is 2048
RAM used: 12 (3%) at main() level
21 (6%) worst case
RAM used: 28 (8%) at main() level
38 (10%) worst case
Stack: 2 locations
 
*
0000: MOVLW 02
0001: MOVWF 0A
0002: GOTO 23C
0002: GOTO 266
0003: NOP
.................... #include "main.h"
.................... #include <16F887.h>
37,175 → 37,212
....................
.................... #use delay(clock=8000000)
*
0226: MOVLW 27
0227: MOVWF 04
0228: BCF 03.7
0229: MOVF 00,W
022A: BTFSC 03.2
022B: GOTO 239
022C: MOVLW 02
022D: MOVWF 78
022E: CLRF 77
022F: DECFSZ 77,F
0230: GOTO 22F
0231: DECFSZ 78,F
0232: GOTO 22E
0233: MOVLW 97
0234: MOVWF 77
0235: DECFSZ 77,F
0236: GOTO 235
0237: DECFSZ 00,F
0238: GOTO 22C
0239: BCF 0A.3
023A: BCF 0A.4
023B: GOTO 2F8 (RETURN)
0250: MOVLW 37
0251: MOVWF 04
0252: BCF 03.7
0253: MOVF 00,W
0254: BTFSC 03.2
0255: GOTO 263
0256: MOVLW 02
0257: MOVWF 78
0258: CLRF 77
0259: DECFSZ 77,F
025A: GOTO 259
025B: DECFSZ 78,F
025C: GOTO 258
025D: MOVLW 97
025E: MOVWF 77
025F: DECFSZ 77,F
0260: GOTO 25F
0261: DECFSZ 00,F
0262: GOTO 256
0263: BCF 0A.3
0264: BCF 0A.4
0265: GOTO 31D (RETURN)
.................... #use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3)
*
0069: MOVLW 08
006A: MOVWF 78
006B: NOP
006C: BCF 07.3
006D: BCF 20.3
006E: MOVF 20,W
006F: BSF 03.5
0070: MOVWF 07
0071: NOP
0072: BCF 03.5
0073: RLF 2D,F
0074: BCF 07.4
0075: BTFSS 03.0
0076: GOTO 07D
0077: BSF 20.4
0078: MOVF 20,W
0079: BSF 03.5
007A: MOVWF 07
007B: GOTO 081
007C: BCF 03.5
007D: BCF 20.4
007E: MOVF 20,W
007F: BSF 03.5
0080: MOVWF 07
0081: NOP
0082: BCF 03.5
0083: BSF 20.3
0084: MOVF 20,W
0085: BSF 03.5
0086: MOVWF 07
0087: BCF 03.5
0088: BTFSS 07.3
0089: GOTO 088
008A: DECFSZ 78,F
008B: GOTO 06B
008C: NOP
008D: BCF 07.3
008E: BCF 20.3
008F: MOVF 20,W
0090: BSF 03.5
0091: MOVWF 07
0092: NOP
0093: BCF 03.5
0094: BSF 20.4
0095: MOVF 20,W
0096: BSF 03.5
0097: MOVWF 07
0098: NOP
0099: NOP
009A: BCF 03.5
009B: BSF 20.3
009C: MOVF 20,W
009D: BSF 03.5
009E: MOVWF 07
009F: BCF 03.5
00A0: BTFSS 07.3
00A1: GOTO 0A0
00A2: CLRF 78
00A3: NOP
00A4: BTFSC 07.4
00A5: BSF 78.0
00A6: BCF 07.3
00A7: BCF 20.3
00A8: MOVF 20,W
00A9: BSF 03.5
00AA: MOVWF 07
00AB: BCF 03.5
00AC: BCF 07.4
00AD: BCF 20.4
00AE: MOVF 20,W
00AF: BSF 03.5
00B0: MOVWF 07
00B1: BCF 03.5
00B2: RETURN
0089: MOVLW 08
008A: MOVWF 78
008B: NOP
008C: BCF 07.3
008D: BCF 20.3
008E: MOVF 20,W
008F: BSF 03.5
0090: MOVWF 07
0091: NOP
0092: BCF 03.5
0093: RLF 3D,F
0094: BCF 07.4
0095: BTFSS 03.0
0096: GOTO 09D
0097: BSF 20.4
0098: MOVF 20,W
0099: BSF 03.5
009A: MOVWF 07
009B: GOTO 0A1
009C: BCF 03.5
009D: BCF 20.4
009E: MOVF 20,W
009F: BSF 03.5
00A0: MOVWF 07
00A1: NOP
00A2: BCF 03.5
00A3: BSF 20.3
00A4: MOVF 20,W
00A5: BSF 03.5
00A6: MOVWF 07
00A7: BCF 03.5
00A8: BTFSS 07.3
00A9: GOTO 0A8
00AA: DECFSZ 78,F
00AB: GOTO 08B
00AC: NOP
00AD: BCF 07.3
00AE: BCF 20.3
00AF: MOVF 20,W
00B0: BSF 03.5
00B1: MOVWF 07
00B2: NOP
00B3: BCF 03.5
00B4: BSF 20.4
00B5: MOVF 20,W
00B6: BSF 03.5
00B7: MOVWF 07
00B8: NOP
00B9: NOP
00BA: BCF 03.5
00BB: BSF 20.3
00BC: MOVF 20,W
00BD: BSF 03.5
00BE: MOVWF 07
00BF: BCF 03.5
00C0: BTFSS 07.3
00C1: GOTO 0C0
00C2: CLRF 78
00C3: NOP
00C4: BTFSC 07.4
00C5: BSF 78.0
00C6: BCF 07.3
00C7: BCF 20.3
00C8: MOVF 20,W
00C9: BSF 03.5
00CA: MOVWF 07
00CB: BCF 03.5
00CC: BCF 07.4
00CD: BCF 20.4
00CE: MOVF 20,W
00CF: BSF 03.5
00D0: MOVWF 07
00D1: BCF 03.5
00D2: RETURN
*
00EC: MOVLW 08
00ED: MOVWF 2E
00EE: MOVF 77,W
00EF: MOVWF 2F
00F0: BSF 20.4
00F1: MOVF 20,W
00F2: BSF 03.5
00F3: MOVWF 07
00F4: NOP
00F5: BCF 03.5
00F6: BSF 20.3
00F7: MOVF 20,W
00F8: BSF 03.5
00F9: MOVWF 07
00FA: BCF 03.5
00FB: BTFSS 07.3
00FC: GOTO 0FB
00FD: BTFSC 07.4
00FE: BSF 03.0
00FF: BTFSS 07.4
0100: BCF 03.0
0101: RLF 78,F
0102: NOP
0103: BCF 20.3
0104: MOVF 20,W
0105: BSF 03.5
0106: MOVWF 07
0107: BCF 03.5
0108: BCF 07.3
0109: DECFSZ 2E,F
010A: GOTO 0F0
010B: BSF 20.4
010C: MOVF 20,W
010D: BSF 03.5
010E: MOVWF 07
010F: NOP
0110: BCF 03.5
0111: BCF 07.4
0112: MOVF 2F,W
0113: BTFSC 03.2
0114: GOTO 11A
0115: BCF 20.4
0116: MOVF 20,W
0117: BSF 03.5
0118: MOVWF 07
0119: BCF 03.5
011A: NOP
011B: BSF 20.3
011C: MOVF 20,W
011D: BSF 03.5
011E: MOVWF 07
011F: BCF 03.5
0120: BTFSS 07.3
0121: GOTO 120
010C: MOVLW 08
010D: MOVWF 3E
010E: MOVF 77,W
010F: MOVWF 3F
0110: BSF 20.4
0111: MOVF 20,W
0112: BSF 03.5
0113: MOVWF 07
0114: NOP
0115: BCF 03.5
0116: BSF 20.3
0117: MOVF 20,W
0118: BSF 03.5
0119: MOVWF 07
011A: BCF 03.5
011B: BTFSS 07.3
011C: GOTO 11B
011D: BTFSC 07.4
011E: BSF 03.0
011F: BTFSS 07.4
0120: BCF 03.0
0121: RLF 78,F
0122: NOP
0123: BCF 07.3
0124: BCF 20.3
0125: MOVF 20,W
0126: BSF 03.5
0127: MOVWF 07
0128: NOP
0129: BCF 03.5
012A: BCF 07.4
012B: BCF 20.4
0123: BCF 20.3
0124: MOVF 20,W
0125: BSF 03.5
0126: MOVWF 07
0127: BCF 03.5
0128: BCF 07.3
0129: DECFSZ 3E,F
012A: GOTO 110
012B: BSF 20.4
012C: MOVF 20,W
012D: BSF 03.5
012E: MOVWF 07
012F: BCF 03.5
0130: RETURN
.................... #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) //rcv TXD xmit RXD
012F: NOP
0130: BCF 03.5
0131: BCF 07.4
0132: MOVF 3F,W
0133: BTFSC 03.2
0134: GOTO 13A
0135: BCF 20.4
0136: MOVF 20,W
0137: BSF 03.5
0138: MOVWF 07
0139: BCF 03.5
013A: NOP
013B: BSF 20.3
013C: MOVF 20,W
013D: BSF 03.5
013E: MOVWF 07
013F: BCF 03.5
0140: BTFSS 07.3
0141: GOTO 140
0142: NOP
0143: BCF 07.3
0144: BCF 20.3
0145: MOVF 20,W
0146: BSF 03.5
0147: MOVWF 07
0148: NOP
0149: BCF 03.5
014A: BCF 07.4
014B: BCF 20.4
014C: MOVF 20,W
014D: BSF 03.5
014E: MOVWF 07
014F: BCF 03.5
0150: RETURN
.................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD
*
001F: BCF 20.7
0020: MOVF 20,W
0021: BSF 03.5
0022: MOVWF 07
0023: BCF 03.5
0024: BCF 07.7
0025: MOVLW 08
0026: MOVWF 78
0027: GOTO 028
0028: NOP
0029: BSF 78.7
002A: GOTO 039
002B: BCF 78.7
002C: RRF 40,F
002D: BTFSC 03.0
002E: BSF 07.7
002F: BTFSS 03.0
0030: BCF 07.7
0031: BSF 78.6
0032: GOTO 039
0033: BCF 78.6
0034: DECFSZ 78,F
0035: GOTO 02C
0036: GOTO 037
0037: NOP
0038: BSF 07.7
0039: MOVLW 3F
003A: MOVWF 04
003B: DECFSZ 04,F
003C: GOTO 03B
003D: NOP
003E: BTFSC 78.7
003F: GOTO 02B
0040: BTFSC 78.6
0041: GOTO 033
0042: RETURN
....................
....................
.................... #include "HMC5883L.h"
239,68 → 276,68
.................... {
.................... i2c_start();
*
00B3: BSF 20.4
00B4: MOVF 20,W
00B5: BSF 03.5
00B6: MOVWF 07
00B7: NOP
00B8: BCF 03.5
00B9: BSF 20.3
00BA: MOVF 20,W
00BB: BSF 03.5
00BC: MOVWF 07
00BD: NOP
00BE: BCF 03.5
00BF: BCF 07.4
00C0: BCF 20.4
00C1: MOVF 20,W
00C2: BSF 03.5
00C3: MOVWF 07
00C4: NOP
00C5: BCF 03.5
00C6: BCF 07.3
00C7: BCF 20.3
00C8: MOVF 20,W
00C9: BSF 03.5
00CA: MOVWF 07
00D3: BSF 20.4
00D4: MOVF 20,W
00D5: BSF 03.5
00D6: MOVWF 07
00D7: NOP
00D8: BCF 03.5
00D9: BSF 20.3
00DA: MOVF 20,W
00DB: BSF 03.5
00DC: MOVWF 07
00DD: NOP
00DE: BCF 03.5
00DF: BCF 07.4
00E0: BCF 20.4
00E1: MOVF 20,W
00E2: BSF 03.5
00E3: MOVWF 07
00E4: NOP
00E5: BCF 03.5
00E6: BCF 07.3
00E7: BCF 20.3
00E8: MOVF 20,W
00E9: BSF 03.5
00EA: MOVWF 07
.................... i2c_write(HMC5883L_WRT_ADDR);
00CB: MOVLW 3C
00CC: BCF 03.5
00CD: MOVWF 2D
00CE: CALL 069
00EB: MOVLW 3C
00EC: BCF 03.5
00ED: MOVWF 3D
00EE: CALL 089
.................... i2c_write(reg);
00CF: MOVF 27,W
00D0: MOVWF 2D
00D1: CALL 069
00EF: MOVF 37,W
00F0: MOVWF 3D
00F1: CALL 089
.................... i2c_write(data);
00D2: MOVF 28,W
00D3: MOVWF 2D
00D4: CALL 069
00F2: MOVF 38,W
00F3: MOVWF 3D
00F4: CALL 089
.................... i2c_stop();
00D5: BCF 20.4
00D6: MOVF 20,W
00D7: BSF 03.5
00D8: MOVWF 07
00D9: NOP
00DA: BCF 03.5
00DB: BSF 20.3
00DC: MOVF 20,W
00DD: BSF 03.5
00DE: MOVWF 07
00DF: BCF 03.5
00E0: BTFSS 07.3
00E1: GOTO 0E0
00E2: NOP
00E3: GOTO 0E4
00E4: NOP
00E5: BSF 20.4
00E6: MOVF 20,W
00E7: BSF 03.5
00E8: MOVWF 07
00E9: NOP
00F5: BCF 20.4
00F6: MOVF 20,W
00F7: BSF 03.5
00F8: MOVWF 07
00F9: NOP
00FA: BCF 03.5
00FB: BSF 20.3
00FC: MOVF 20,W
00FD: BSF 03.5
00FE: MOVWF 07
00FF: BCF 03.5
0100: BTFSS 07.3
0101: GOTO 100
0102: NOP
0103: GOTO 104
0104: NOP
0105: BSF 20.4
0106: MOVF 20,W
0107: BSF 03.5
0108: MOVWF 07
0109: NOP
.................... }
00EA: BCF 03.5
00EB: RETURN
010A: BCF 03.5
010B: RETURN
....................
.................... //------------------------------
.................... int8 hmc5883l_read_reg(int8 reg)
330,12 → 367,12
.................... // from the HMC5883L x,y,z registers.
.................... hmc5883l_result compass = {0,0,0};
*
0260: CLRF 21
0261: CLRF 22
0262: CLRF 23
0263: CLRF 24
0264: CLRF 25
0265: CLRF 26
0287: CLRF 21
0288: CLRF 22
0289: CLRF 23
028A: CLRF 24
028B: CLRF 25
028C: CLRF 26
....................
.................... //------------------------------
.................... void hmc5883l_read_data(void)
351,154 → 388,154
....................
.................... i2c_start();
*
0131: BSF 20.4
0132: MOVF 20,W
0133: BSF 03.5
0134: MOVWF 07
0135: NOP
0136: BCF 03.5
0137: BSF 20.3
0138: MOVF 20,W
0139: BSF 03.5
013A: MOVWF 07
013B: NOP
013C: BCF 03.5
013D: BCF 07.4
013E: BCF 20.4
013F: MOVF 20,W
0140: BSF 03.5
0141: MOVWF 07
0142: NOP
0143: BCF 03.5
0144: BCF 07.3
0145: BCF 20.3
0146: MOVF 20,W
0147: BSF 03.5
0148: MOVWF 07
0151: BSF 20.4
0152: MOVF 20,W
0153: BSF 03.5
0154: MOVWF 07
0155: NOP
0156: BCF 03.5
0157: BSF 20.3
0158: MOVF 20,W
0159: BSF 03.5
015A: MOVWF 07
015B: NOP
015C: BCF 03.5
015D: BCF 07.4
015E: BCF 20.4
015F: MOVF 20,W
0160: BSF 03.5
0161: MOVWF 07
0162: NOP
0163: BCF 03.5
0164: BCF 07.3
0165: BCF 20.3
0166: MOVF 20,W
0167: BSF 03.5
0168: MOVWF 07
.................... i2c_write(HMC5883L_WRT_ADDR);
0149: MOVLW 3C
014A: BCF 03.5
014B: MOVWF 2D
014C: CALL 069
0169: MOVLW 3C
016A: BCF 03.5
016B: MOVWF 3D
016C: CALL 089
.................... i2c_write(HMC5883L_X_MSB_REG); // Point to X-msb register
014D: MOVLW 03
014E: MOVWF 2D
014F: CALL 069
016D: MOVLW 03
016E: MOVWF 3D
016F: CALL 089
.................... i2c_start();
0150: BSF 20.4
0151: MOVF 20,W
0152: BSF 03.5
0153: MOVWF 07
0154: NOP
0155: BCF 03.5
0156: BSF 20.3
0157: MOVF 20,W
0158: BSF 03.5
0159: MOVWF 07
015A: NOP
015B: BCF 03.5
015C: BTFSS 07.3
015D: GOTO 15C
015E: BCF 07.4
015F: BCF 20.4
0160: MOVF 20,W
0161: BSF 03.5
0162: MOVWF 07
0163: NOP
0164: BCF 03.5
0165: BCF 07.3
0166: BCF 20.3
0167: MOVF 20,W
0168: BSF 03.5
0169: MOVWF 07
0170: BSF 20.4
0171: MOVF 20,W
0172: BSF 03.5
0173: MOVWF 07
0174: NOP
0175: BCF 03.5
0176: BSF 20.3
0177: MOVF 20,W
0178: BSF 03.5
0179: MOVWF 07
017A: NOP
017B: BCF 03.5
017C: BTFSS 07.3
017D: GOTO 17C
017E: BCF 07.4
017F: BCF 20.4
0180: MOVF 20,W
0181: BSF 03.5
0182: MOVWF 07
0183: NOP
0184: BCF 03.5
0185: BCF 07.3
0186: BCF 20.3
0187: MOVF 20,W
0188: BSF 03.5
0189: MOVWF 07
.................... i2c_write(HMC5883L_READ_ADDR);
016A: MOVLW 3D
016B: BCF 03.5
016C: MOVWF 2D
016D: CALL 069
018A: MOVLW 3D
018B: BCF 03.5
018C: MOVWF 3D
018D: CALL 089
....................
.................... x_msb = i2c_read();
016E: MOVLW 01
016F: MOVWF 77
0170: CALL 0EC
0171: MOVF 78,W
0172: MOVWF 28
018E: MOVLW 01
018F: MOVWF 77
0190: CALL 10C
0191: MOVF 78,W
0192: MOVWF 38
.................... x_lsb = i2c_read();
0173: MOVLW 01
0174: MOVWF 77
0175: CALL 0EC
0176: MOVF 78,W
0177: MOVWF 27
0193: MOVLW 01
0194: MOVWF 77
0195: CALL 10C
0196: MOVF 78,W
0197: MOVWF 37
....................
.................... z_msb = i2c_read();
0178: MOVLW 01
0179: MOVWF 77
017A: CALL 0EC
017B: MOVF 78,W
017C: MOVWF 2C
0198: MOVLW 01
0199: MOVWF 77
019A: CALL 10C
019B: MOVF 78,W
019C: MOVWF 3C
.................... z_lsb = i2c_read();
017D: MOVLW 01
017E: MOVWF 77
017F: CALL 0EC
0180: MOVF 78,W
0181: MOVWF 2B
019D: MOVLW 01
019E: MOVWF 77
019F: CALL 10C
01A0: MOVF 78,W
01A1: MOVWF 3B
....................
.................... y_msb = i2c_read();
0182: MOVLW 01
0183: MOVWF 77
0184: CALL 0EC
0185: MOVF 78,W
0186: MOVWF 2A
01A2: MOVLW 01
01A3: MOVWF 77
01A4: CALL 10C
01A5: MOVF 78,W
01A6: MOVWF 3A
.................... y_lsb = i2c_read(0); // do a NACK on last read
0187: CLRF 77
0188: CALL 0EC
0189: MOVF 78,W
018A: MOVWF 29
01A7: CLRF 77
01A8: CALL 10C
01A9: MOVF 78,W
01AA: MOVWF 39
....................
.................... i2c_stop();
018B: BCF 20.4
018C: MOVF 20,W
018D: BSF 03.5
018E: MOVWF 07
018F: NOP
0190: BCF 03.5
0191: BSF 20.3
0192: MOVF 20,W
0193: BSF 03.5
0194: MOVWF 07
0195: BCF 03.5
0196: BTFSS 07.3
0197: GOTO 196
0198: NOP
0199: GOTO 19A
019A: NOP
019B: BSF 20.4
019C: MOVF 20,W
019D: BSF 03.5
019E: MOVWF 07
019F: NOP
01AB: BCF 20.4
01AC: MOVF 20,W
01AD: BSF 03.5
01AE: MOVWF 07
01AF: NOP
01B0: BCF 03.5
01B1: BSF 20.3
01B2: MOVF 20,W
01B3: BSF 03.5
01B4: MOVWF 07
01B5: BCF 03.5
01B6: BTFSS 07.3
01B7: GOTO 1B6
01B8: NOP
01B9: GOTO 1BA
01BA: NOP
01BB: BSF 20.4
01BC: MOVF 20,W
01BD: BSF 03.5
01BE: MOVWF 07
01BF: NOP
....................
.................... // Combine high and low bytes into 16-bit values.
.................... compass.x = make16(x_msb, x_lsb);
01A0: BCF 03.5
01A1: MOVF 28,W
01A2: MOVWF 22
01A3: MOVF 27,W
01A4: MOVWF 21
01C0: BCF 03.5
01C1: MOVF 38,W
01C2: MOVWF 22
01C3: MOVF 37,W
01C4: MOVWF 21
.................... compass.y = make16(y_msb, y_lsb);
01A5: MOVF 2A,W
01A6: MOVWF 24
01A7: MOVF 29,W
01A8: MOVWF 23
01C5: MOVF 3A,W
01C6: MOVWF 24
01C7: MOVF 39,W
01C8: MOVWF 23
.................... compass.z = make16(z_msb, z_lsb);
01A9: MOVF 2C,W
01AA: MOVWF 26
01AB: MOVF 2B,W
01AC: MOVWF 25
01C9: MOVF 3C,W
01CA: MOVWF 26
01CB: MOVF 3B,W
01CC: MOVWF 25
.................... }
01AD: BCF 0A.3
01AE: BCF 0A.4
01AF: GOTO 2CC (RETURN)
01CD: BCF 0A.3
01CE: BCF 0A.4
01CF: GOTO 2F6 (RETURN)
....................
....................
....................
2680,160 → 2717,165
.................... void main()
.................... {
*
023C: CLRF 04
023D: BCF 03.7
023E: MOVLW 1F
023F: ANDWF 03,F
0240: MOVLW 71
0241: BSF 03.5
0242: MOVWF 0F
0243: MOVF 0F,W
0244: BSF 03.6
0245: BCF 07.3
0246: MOVLW 0C
0247: BCF 03.6
0248: MOVWF 19
0249: MOVLW A2
024A: MOVWF 18
024B: MOVLW 90
024C: BCF 03.5
024D: MOVWF 18
024E: BSF 03.5
024F: BSF 03.6
0250: MOVF 09,W
0251: ANDLW C0
0252: MOVWF 09
0253: BCF 03.6
0254: BCF 1F.4
0255: BCF 1F.5
0256: MOVLW 00
0257: BSF 03.6
0258: MOVWF 08
0259: BCF 03.5
025A: CLRF 07
025B: CLRF 08
025C: CLRF 09
0266: CLRF 04
0267: BCF 03.7
0268: MOVLW 1F
0269: ANDWF 03,F
026A: MOVLW 71
026B: BSF 03.5
026C: MOVWF 0F
026D: MOVF 0F,W
026E: BCF 03.5
026F: BCF 20.7
0270: MOVF 20,W
0271: BSF 03.5
0272: MOVWF 07
0273: BCF 03.5
0274: BSF 07.7
0275: BSF 03.5
0276: BSF 03.6
0277: MOVF 09,W
0278: ANDLW C0
0279: MOVWF 09
027A: BCF 03.6
027B: BCF 1F.4
027C: BCF 1F.5
027D: MOVLW 00
027E: BSF 03.6
027F: MOVWF 08
0280: BCF 03.5
0281: CLRF 07
0282: CLRF 08
0283: CLRF 09
*
028D: CLRF 34
028E: CLRF 33
.................... float last,b,anemo_speed;
.................... unsigned int16 anemo_round=0;
.................... unsigned int16 i;
....................
.................... //signed int16 X,Y,Z;
.................... setup_adc_ports(NO_ANALOGS|VSS_VDD);
*
0266: BSF 03.5
0267: BSF 03.6
0268: MOVF 09,W
0269: ANDLW C0
026A: MOVWF 09
026B: BCF 03.6
026C: BCF 1F.4
026D: BCF 1F.5
026E: MOVLW 00
026F: BSF 03.6
0270: MOVWF 08
028F: BSF 03.5
0290: BSF 03.6
0291: MOVF 09,W
0292: ANDLW C0
0293: MOVWF 09
0294: BCF 03.6
0295: BCF 1F.4
0296: BCF 1F.5
0297: MOVLW 00
0298: BSF 03.6
0299: MOVWF 08
.................... setup_adc(ADC_CLOCK_DIV_2);
0271: BCF 03.5
0272: BCF 03.6
0273: BCF 1F.6
0274: BCF 1F.7
0275: BSF 03.5
0276: BCF 1F.7
0277: BCF 03.5
0278: BSF 1F.0
029A: BCF 03.5
029B: BCF 03.6
029C: BCF 1F.6
029D: BCF 1F.7
029E: BSF 03.5
029F: BCF 1F.7
02A0: BCF 03.5
02A1: BSF 1F.0
.................... setup_spi(SPI_SS_DISABLED);
0279: BCF 14.5
027A: BCF 20.5
027B: MOVF 20,W
027C: BSF 03.5
027D: MOVWF 07
027E: BCF 03.5
027F: BSF 20.4
0280: MOVF 20,W
0281: BSF 03.5
0282: MOVWF 07
0283: BCF 03.5
0284: BCF 20.3
0285: MOVF 20,W
0286: BSF 03.5
0287: MOVWF 07
0288: MOVLW 01
0289: BCF 03.5
028A: MOVWF 14
028B: MOVLW 00
028C: BSF 03.5
028D: MOVWF 14
02A2: BCF 14.5
02A3: BCF 20.5
02A4: MOVF 20,W
02A5: BSF 03.5
02A6: MOVWF 07
02A7: BCF 03.5
02A8: BSF 20.4
02A9: MOVF 20,W
02AA: BSF 03.5
02AB: MOVWF 07
02AC: BCF 03.5
02AD: BCF 20.3
02AE: MOVF 20,W
02AF: BSF 03.5
02B0: MOVWF 07
02B1: MOVLW 01
02B2: BCF 03.5
02B3: MOVWF 14
02B4: MOVLW 00
02B5: BSF 03.5
02B6: MOVWF 14
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
028E: MOVF 01,W
028F: ANDLW C7
0290: IORLW 08
0291: MOVWF 01
02B7: MOVF 01,W
02B8: ANDLW C7
02B9: IORLW 08
02BA: MOVWF 01
.................... setup_timer_1(T1_DISABLED);
0292: BCF 03.5
0293: CLRF 10
02BB: BCF 03.5
02BC: CLRF 10
.................... setup_timer_2(T2_DISABLED,0,1);
0294: MOVLW 00
0295: MOVWF 78
0296: MOVWF 12
0297: MOVLW 00
0298: BSF 03.5
0299: MOVWF 12
02BD: MOVLW 00
02BE: MOVWF 78
02BF: MOVWF 12
02C0: MOVLW 00
02C1: BSF 03.5
02C2: MOVWF 12
.................... setup_ccp1(CCP_OFF);
029A: BCF 03.5
029B: BSF 20.2
029C: MOVF 20,W
029D: BSF 03.5
029E: MOVWF 07
029F: BCF 03.5
02A0: CLRF 17
02A1: BSF 03.5
02A2: CLRF 1B
02A3: CLRF 1C
02A4: MOVLW 01
02A5: MOVWF 1D
.................... setup_comparator(NC_NC_NC_NC);
02A6: BCF 03.5
02A7: BSF 03.6
02A8: CLRF 07
02A9: CLRF 08
02AA: CLRF 09
02C3: BCF 03.5
02C4: BSF 20.2
02C5: MOVF 20,W
02C6: BSF 03.5
02C7: MOVWF 07
02C8: BCF 03.5
02C9: CLRF 17
02CA: BSF 03.5
02CB: CLRF 1B
02CC: CLRF 1C
02CD: MOVLW 01
02CE: MOVWF 1D
.................... setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
02CF: BCF 03.5
02D0: BSF 03.6
02D1: CLRF 07
02D2: CLRF 08
02D3: CLRF 09
....................
.................... printf("Magnetometr: \r\n",);
02AB: MOVLW 04
02AC: MOVWF 0D
02AD: MOVLW 00
02AE: MOVWF 0F
02AF: BCF 03.6
02B0: CALL 021
.................... printf("(c)mlab.cz kaklik 2013: \r\n",);
02B1: MOVLW 0D
02B2: BSF 03.6
02B3: MOVWF 0D
02B4: MOVLW 00
02B5: MOVWF 0F
02B6: BCF 03.6
02B7: CALL 021
02D4: MOVLW 04
02D5: MOVWF 0D
02D6: MOVLW 00
02D7: MOVWF 0F
02D8: BCF 03.6
02D9: CALL 043
.................... printf("(c)mlab JACHO 2013: \r\n",);
02DA: MOVLW 0D
02DB: BSF 03.6
02DC: MOVWF 0D
02DD: MOVLW 00
02DE: MOVWF 0F
02DF: BCF 03.6
02E0: CALL 043
.................... printf("X, Y, Z \r\n",);
02B8: MOVLW 1B
02B9: BSF 03.6
02BA: MOVWF 0D
02BB: MOVLW 00
02BC: MOVWF 0F
02BD: BCF 03.6
02BE: CALL 021
02E1: MOVLW 19
02E2: BSF 03.6
02E3: MOVWF 0D
02E4: MOVLW 00
02E5: MOVWF 0F
02E6: BCF 03.6
02E7: CALL 043
....................
....................
.................... // Init the HMC5883L. Set Mode register for
.................... // continuous measurements.
.................... hmc5883l_write_reg(HMC5883L_CFG_A_REG, 0x18); // no average, maximal update range
02BF: CLRF 27
02C0: MOVLW 18
02C1: MOVWF 28
02C2: CALL 0B3
.................... hmc5883l_write_reg(HMC5883L_CFG_B_REG, 0x00); // minimal range
02C3: MOVLW 01
02C4: MOVWF 27
02C5: CLRF 28
02C6: CALL 0B3
02E8: CLRF 37
02E9: MOVLW 18
02EA: MOVWF 38
02EB: CALL 0D3
.................... hmc5883l_write_reg(HMC5883L_CFG_B_REG, 0xE0); // maximal range
02EC: MOVLW 01
02ED: MOVWF 37
02EE: MOVLW E0
02EF: MOVWF 38
02F0: CALL 0D3
.................... hmc5883l_write_reg(HMC5883L_MODE_REG, 0x00);
02C7: MOVLW 02
02C8: MOVWF 27
02C9: CLRF 28
02CA: CALL 0B3
02F1: MOVLW 02
02F2: MOVWF 37
02F3: CLRF 38
02F4: CALL 0D3
....................
.................... // Continuously read and display the x,y,z results.
.................... // Wait at least 67 ms between reads, re the HMC5883L data sheet.
2843,61 → 2885,56
.................... {
....................
.................... hmc5883l_read_data();
02CB: GOTO 131
02F5: GOTO 151
.................... printf("%6Ld %6Ld %6Ld \n\r", compass.x, compass.y, compass.z);
02CC: MOVLW 00
02CD: MOVWF 04
02CE: MOVF 22,W
02CF: MOVWF 28
02D0: MOVF 21,W
02D1: MOVWF 27
02D2: CALL 1B0
02D3: MOVLW 20
02D4: BTFSS 0C.4
02D5: GOTO 2D4
02D6: MOVWF 19
02D7: MOVLW 00
02D8: MOVWF 04
02D9: MOVF 24,W
02DA: MOVWF 28
02DB: MOVF 23,W
02DC: MOVWF 27
02DD: CALL 1B0
02DE: MOVLW 20
02DF: BTFSS 0C.4
02E0: GOTO 2DF
02E1: MOVWF 19
02E2: MOVLW 00
02E3: MOVWF 04
02E4: MOVF 26,W
02E5: MOVWF 28
02E6: MOVF 25,W
02E7: MOVWF 27
02E8: CALL 1B0
02E9: MOVLW 20
02EA: BTFSS 0C.4
02EB: GOTO 2EA
02EC: MOVWF 19
02ED: MOVLW 0A
02EE: BTFSS 0C.4
02EF: GOTO 2EE
02F0: MOVWF 19
02F1: MOVLW 0D
02F2: BTFSS 0C.4
02F3: GOTO 2F2
02F4: MOVWF 19
02F6: MOVLW 00
02F7: MOVWF 04
02F8: MOVF 22,W
02F9: MOVWF 38
02FA: MOVF 21,W
02FB: MOVWF 37
02FC: CALL 1D0
02FD: MOVLW 20
02FE: MOVWF 40
02FF: CALL 01F
0300: MOVLW 00
0301: MOVWF 04
0302: MOVF 24,W
0303: MOVWF 38
0304: MOVF 23,W
0305: MOVWF 37
0306: CALL 1D0
0307: MOVLW 20
0308: MOVWF 40
0309: CALL 01F
030A: MOVLW 00
030B: MOVWF 04
030C: MOVF 26,W
030D: MOVWF 38
030E: MOVF 25,W
030F: MOVWF 37
0310: CALL 1D0
0311: MOVLW 20
0312: MOVWF 40
0313: CALL 01F
0314: MOVLW 0A
0315: MOVWF 40
0316: CALL 01F
0317: MOVLW 0D
0318: MOVWF 40
0319: CALL 01F
.................... delay_ms(100);
02F5: MOVLW 64
02F6: MOVWF 27
02F7: GOTO 226
031A: MOVLW 64
031B: MOVWF 37
031C: GOTO 250
.................... }
02F8: GOTO 2CB
031D: GOTO 2F5
....................
.................... }
....................
....................
....................
02F9: SLEEP
031E: SLEEP
 
Configuration Fuses:
Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUG
/Modules/Sensors/MAG01A/SW/PIC16F887/main.pjt
17,7 → 17,7
0=0000 %S 0 0 796 451 3 0
[Opened Files]
1=main.c
2=main.h
2=
3=C:\Program Files (x86)\PICC\devices\16F887.h
4=HMC5883L.h
5=HMC5883L.c
/Modules/Sensors/MAG01A/SW/PIC16F887/main.sta
1,18 → 1,18
 
ROM used: 762 (9%)
762 (9%) including unused fragments
ROM used: 799 (10%)
799 (10%) including unused fragments
 
0 Average locations per line
2 Average locations per statement
3 Average locations per statement
 
RAM used: 12 (3%) at main() level
21 (6%) worst case
RAM used: 28 (8%) at main() level
38 (10%) worst case
 
Stack used: 2 worst case (out of 8 total available)
 
Lines Stmts % Files
----- ----- --- -----
43 19 6 main.c
48 19 6 main.c
22 0 0 main.h
423 0 0 C:\Program Files (x86)\PICC\devices\16F887.h
25 0 0 HMC5883L.h
19,38 → 19,39
76 28 9 HMC5883L.c
2172 260 85 C:\Program Files (x86)\PICC\drivers\math.h
----- -----
2761 307 Total
2766 307 Total
 
Page ROM % RAM Vol Diff Functions:
---- --- --- --- --- ---- ----------
0 22 3 1 @delay_ms1
0 69 9 3 @I2C_READ_1
0 74 10 1 @I2C_WRITE_1
0 74 9 1 @I2C_WRITE_1
0 36 5 1 @PUTCHAR_1_
0 57 7 2 102 1.8 hmc5883l_write_reg
0 127 17 6 636 3.3 hmc5883l_read_data
0 190 25 0 595 3.3 MAIN
0 9 1 0 78 2.7 @const229
0 72 9 3 722 3.9 @PSTRINGC7_9600_62_63
0 14 2 0 @const231
0 6 1 0 @const232
0 118 15 9 @PRINTF_LD_9600_62_63
0 127 16 6 636 3.3 hmc5883l_read_data
0 185 23 16 722 3.9 MAIN
0 9 1 0 @const237
0 70 9 3 @PSTRINGC7_69
0 12 2 0 @const239
0 6 1 0 @const240
0 128 16 9 @PRINTF_LD_69
 
Program metrics:
Functions 5
Functions 3
Statements 307
Comments 356
Volume (V) 2913
Difficilty (D) 14.9
Effort to implement (E) 43483
Time to implement (T) 40 minutes
Comments 358
Volume (V) 1829
Difficilty (D) 8.6
Effort to implement (E) 15712
Time to implement (T) 15 minutes
Est Delivered Bugs (B) 0
Cyclomatic Complexity 1
Maintainability (MI) 95
Maintainability (MI) 16
 
Segment Used Free
----------- ---- ----
00000-00003 4 0
00004-007FF 758 1286
00004-007FF 795 1249
00800-00FFF 0 2048
01000-017FF 0 2048
01800-01FFF 0 2048
/Modules/Sensors/MAG01A/SW/PIC16F887/main.sym
1,7 → 1,7
004-005 @READ_PROGRAM_MEMORY8.P1
004 @WRITE_PROGRAM_MEMORY8.P2
015 CCP_1_LOW
015 CCP_1
015 CCP_1_LOW
016 CCP_1_HIGH
01B CCP_2_LOW
01B CCP_2
8,30 → 8,36
01C CCP_2_HIGH
020 @TRIS_C
021-026 compass
027 hmc5883l_write_reg.reg
027 @delay_ms1.P1
027 hmc5883l_read_data.x_lsb
027-028 @PRINTF_LD_9600_62_63.P1
027 @PSTRINGC7_9600_62_63.@SCRATCH1
028 hmc5883l_write_reg.data
028 hmc5883l_read_data.x_msb
028 @PSTRINGC7_9600_62_63.@SCRATCH2
029 hmc5883l_read_data.y_lsb
029 @PSTRINGC7_9600_62_63.@SCRATCH3
029 @PRINTF_LD_9600_62_63.@SCRATCH1
02A hmc5883l_read_data.y_msb
02A @PRINTF_LD_9600_62_63.@SCRATCH2
02B hmc5883l_read_data.z_lsb
02B @PRINTF_LD_9600_62_63.@SCRATCH3
02C hmc5883l_read_data.z_msb
02C @PRINTF_LD_9600_62_63.@SCRATCH4
02D @I2C_READ_1.P1
02D @I2C_WRITE_1.P2
02D @PRINTF_LD_9600_62_63.@SCRATCH5
02E @I2C_READ_1.@SCRATCH1
02E @PRINTF_LD_9600_62_63.@SCRATCH6
02F @I2C_READ_1.@SCRATCH2
02F @PRINTF_LD_9600_62_63.@SCRATCH7
027-02A MAIN.last
02B-02E MAIN.b
02F-032 MAIN.anemo_speed
033-034 MAIN.anemo_round
035-036 MAIN.i
037-038 @PRINTF_LD_69.P1
037 hmc5883l_write_reg.reg
037 @delay_ms1.P1
037 hmc5883l_read_data.x_lsb
037 @PSTRINGC7_69.@SCRATCH1
038 hmc5883l_read_data.x_msb
038 hmc5883l_write_reg.data
038 @PSTRINGC7_69.@SCRATCH2
039 hmc5883l_read_data.y_lsb
039 @PSTRINGC7_69.@SCRATCH3
039 @PRINTF_LD_69.@SCRATCH1
03A hmc5883l_read_data.y_msb
03A @PRINTF_LD_69.@SCRATCH2
03B hmc5883l_read_data.z_lsb
03B @PRINTF_LD_69.@SCRATCH3
03C hmc5883l_read_data.z_msb
03C @PRINTF_LD_69.@SCRATCH4
03D @I2C_READ_1.P1
03D @I2C_WRITE_1.P2
03D @PRINTF_LD_69.@SCRATCH5
03E @I2C_READ_1.@SCRATCH1
03E @PRINTF_LD_69.@SCRATCH6
03F @I2C_READ_1.@SCRATCH2
03F @PRINTF_LD_69.@SCRATCH7
040 @PUTCHAR_1_.P1
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
43,18 → 49,19
10D-10E @READ_PROGRAM_MEMORY8.P2
 
ROM Allocation:
0226 @delay_ms1
00EC @I2C_READ_1
0069 @I2C_WRITE_1
00B3 hmc5883l_write_reg
0131 hmc5883l_read_data
023C MAIN
0004 @const229
0021 @PSTRINGC7_9600_62_63
000D @const231
001B @const232
01B0 @PRINTF_LD_9600_62_63
023C @cinit
0250 @delay_ms1
010C @I2C_READ_1
0089 @I2C_WRITE_1
001F @PUTCHAR_1_
00D3 hmc5883l_write_reg
0151 hmc5883l_read_data
0266 MAIN
0004 @const237
0043 @PSTRINGC7_69
000D @const239
0019 @const240
01D0 @PRINTF_LD_69
0266 @cinit
 
 
User Memory space:
/Modules/Sensors/MAG01A/SW/PIC16F887/main.tre
1,9 → 1,15
ÀÄmain
ÀÄMAIN 0/190 Ram=0
ÀÄMAIN 0/185 Ram=16
ÃÄ??0??
ÃÄ@PSTRINGC7_9600_62_63 0/72 Ram=3
ÃÄ@PSTRINGC7_9600_62_63 0/72 Ram=3
ÃÄ@PSTRINGC7_9600_62_63 0/72 Ram=3
ÃÄ@PSTRINGC7_69 0/70 Ram=3
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PSTRINGC7_69 0/70 Ram=3
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PSTRINGC7_69 0/70 Ram=3
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄhmc5883l_write_reg 0/57 Ram=2
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1
26,7 → 32,15
³ ÃÄ@I2C_READ_1 0/69 Ram=3
³ ÃÄ@I2C_READ_1 0/69 Ram=3
³ ÀÄ@I2C_READ_1 0/69 Ram=3
ÃÄ@PRINTF_LD_9600_62_63 0/118 Ram=9
ÃÄ@PRINTF_LD_9600_62_63 0/118 Ram=9
ÃÄ@PRINTF_LD_9600_62_63 0/118 Ram=9
ÃÄ@PRINTF_LD_69 0/128 Ram=9
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PRINTF_LD_69 0/128 Ram=9
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PRINTF_LD_69 0/128 Ram=9
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PUTCHAR_1_ 0/36 Ram=1
ÃÄ@PUTCHAR_1_ 0/36 Ram=1
ÀÄ@delay_ms1 0/22 Ram=1
/Modules/Sensors/MAG01A/TODO.txt
1,3 → 1,3
 
Neni vyvedeny DRDY pin, takze maximalni rychrlost cteni vzorku je: 75 Hz.