Subversion Repositories svnkaklik

Compare Revisions

Problem with comparison.

Ignore whitespace Rev HEAD → Rev 1

/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.BAK
0,0 → 1,357
#include ".\main.h"
 
#define KOLMO1 225 // predni kolecko sroubem dopredu
#define KOLMO2 30 // predni kolecko je hlavou sroubu dozadu
#define STRED 128 // sredni poloha zataceciho kolecka
#define BEAR1 12 // 3 stupne zataceni
#define BEAR2 34
#define BEAR3 55
#define SPEEDMAX 140 // maximalni rychlost
 
#define L 1 // cara vlevo
#define S 2 // casa mezi sensory
#define R 0 // cara vpravo
 
// servo
#define SERVO PIN_A2
 
// IR
#define IRTX PIN_B2
#define CIHLA PIN_A3
 
//motory
#define FR output_low(PIN_A7); output_high(PIN_A6) // Vpred
#define FL output_low(PIN_A1); output_high(PIN_A0)
#define BR output_low(PIN_A6); output_high(PIN_A7) // Vzad
#define BL output_low(PIN_A0); output_high(PIN_A1)
#define STOPR output_low(PIN_A6);output_low(PIN_A7)
#define STOPL output_low(PIN_A0);output_low(PIN_A1)
 
//HID
#define LED1 PIN_B1 //oranzova
#define LED2 PIN_B2 //zluta
 
#define STROBE PIN_B0
//#define SW1 PIN_A2 // Motory On/off
 
unsigned int8 sensors; // pomocna promenna pro cteni cidel na caru
unsigned int8 line; // na ktere strane byla detekovana cara
//unsigned int8 dira; // pocita dobu po kterou je ztracena cara
unsigned int8 uhel; // urcuje aktualni uhel zataceni
//unsigned int8 speed; // maximalni povolena rychlost
unsigned int8 rovinka; // pocitadlo na zjisteni rovinky
 
signed int16 Lmotor; // promene, ktere urcuji velikost vykonu na levem
signed int16 Rmotor; // a pravem motoru
 
// makro pro PWM pro motory
#define GO(motor, direction, power) if(get_timer0()<=power) \
{direction##motor;} else {stop##motor;}
 
////////////////////////////////////////////////////////////////////////////////
/*
void diagnostika()
{
if(input(SW1))STOPR;STOPL;While(TRUE);
// if(LSENSOR==true) output_high(LED2); else output_low(LED2);
// if(RSENSOR==true) output_high(LED1); else output_low(LED1);
}
*/
////////////////////////////////////////////////////////////////////////////////
#int_TIMER2
TIMER2_isr() // ovladani serva
{
unsigned int8 n;
 
output_high(SERVO);
delay_us(1000);
for(n=uhel; n>0; n--) Delay_us(2);
output_low(SERVO);
}
 
////////////////////////////////////////////////////////////////////////////////
short int IRcheck() // potvrdi detekci cihly
{
output_high(IRTX); // vypne vysilac IR
delay_ms(100);
 
output_low(STROBE);
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE);
 
if(true==bit_test(sensors,7)) // otestuje, jestli je stale detekovan IR signal
{
output_low(IRTX); // zapne vysilac IR
delay_ms(100);
 
output_low(STROBE);
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE);
 
if(false==bit_test(sensors,7)) // otestuje, jestli je detekovana cihla
{
output_high(IRTX); // vypne vysilac IR
delay_ms(100);
 
output_low(STROBE);
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE);
 
output_low(IRTX); // zapne vysilac IR
if(bit_test(sensors,7)) return 1; // vrat 1, kdyz je stale cihla
}
};
output_low(IRTX); // zapne vysilac IR
return 0; // vrat 0, kdyz je detekovano ruseni
}
////////////////////////////////////////////////////////////////////////////////
void cikcak()
{
short int movement;
 
if(uhel>STRED)
{
movement = R;
uhel=KOLMO1;
Delay_ms(60);
}
 
if(uhel<STRED)
{
movement = L;
uhel=KOLMO2;
Delay_ms(60);
}
 
sem:
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(5); // cekani na SLAVE nez pripravi data od cidel
if(!bit_test(sensors,3) == sensors)
{
if(R == movement)
{
FR;BL;
movement=L;
While(bit_test(sensors,3) == sensors)
{
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(5);
}
STOPL;STOPR;
GoTo sem;
}
 
if(L == movement)
{
FL;BR;
movement=R;
While(bit_test(sensors,3) == sensors)
{
sensors = spi_read(0);
sensors =~ sensors;
Delay_ms(5); // cekani na SLAVE nez pripravi data od cidel
}
 
STOPL;STOPR;
GoTo sem;
}
}
}
////////////////////////////////////////////////////////////////////////////////
void objizdka()
{
int8 shure=0;
unsigned int16 n;
BR;BL;
Delay_ms(400);
STOPR;STOPL;
 
uhel=KOLMO1;
Delay_ms(100);
BL;FR;
Delay_ms(200); // minimalni toceni, kdyby se zastavilo sikmo k cihle
 
While(bit_test(sensors,7)) // toc, dokud neni cihla z primeho senzoru
{
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel
}
STOPL; STOPR;
 
for (n=0;n<1500;n++) // vystred se na hranu cihly
{
if(!input(CIHLA)) {BL; FR;} else {FL; BR;};
delay_ms(1);
}
STOPR;STOPL;
 
uhel=STRED; // dopredu
delay_ms(100);
FR; FL;
delay_ms(500);
BL;BR;
delay_ms(200);
STOPL;STOPR;
 
uhel=STRED+BEAR3; // doprava
delay_ms(100);
FL;
delay_ms(200);
uhel=STRED+BEAR2; // min doprava
FL;FR;
delay_ms(200);
uhel=STRED+BEAR1; // jeste min doprava
FL;FR;
delay_ms(200);
uhel=STRED; // rovne
FL;FR;
delay_ms(100);
While((sensors & 0b01111111)!=0) //dokud neni cara
{
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel
}
BL; BR;
delay_ms(400);
uhel=STRED-BEAR3; // doleva
}
 
////////////////////////////////////////////////////////////////////////////////
void main()
{
 
unsigned int16 n;
unsigned int8 i;
 
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_4);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_16,140,16);
setup_oscillator(OSC_8MHZ|OSC_INTRC);
 
STOPR; STOPL; // zastav motory
Lmotor=0;Rmotor=0;
 
uhel=STRED; // nastav zadni kolecko na stred
rovinka=0;
 
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
 
output_low(IRTX); // zapni IR vysilac
 
delay_ms(1000);
 
while(true)
{
 
GO(L,F,Lmotor);GO(R,F,Rmotor); // zapni motory
 
delay_us(1500);
 
output_low(STROBE);
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE);
 
i=0; // havarijni kod
for (n=0; n<=6; n++)
{
if(bit_test(sensors,n)) i++;
}
if (i>3) While(true){STOPR; STOPL;}; // zastavi, kdyz je cerno pod vice nez tremi cidly
 
if(bit_test(sensors,7)) // detekce dihly
{
objizdka();
}
 
if(bit_test(sensors,3)) //...|...//
{
uhel=STRED;
Lmotor=SPEEDMAX;
Rmotor=SPEEDMAX;
line=S;
if (rovinka<255) rovinka++;
continue;
}
 
if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu
{
uhel=STRED-BEAR3;
Lmotor=0;
Rmotor=SPEEDMAX;
line=L;
continue;
}
 
if(bit_test(sensors,6)) //......|//
{
uhel=STRED+BEAR3;
Rmotor=0;
Lmotor=SPEEDMAX;
line=R;
continue;
}
 
if(bit_test(sensors,1)) //.|.....//
{
uhel=STRED-BEAR2;
Lmotor=SPEEDMAX-50;
Rmotor=SPEEDMAX;
line=S;
continue;
}
 
if(bit_test(sensors,5)) //.....|.//
{
uhel=STRED+BEAR2;
Rmotor=SPEEDMAX-50;
Lmotor=SPEEDMAX;
line=S;
continue;
}
 
if (bit_test(sensors,2)) //..|....//
{
uhel=STRED-BEAR1;
Lmotor=SPEEDMAX;
Rmotor=SPEEDMAX;
line=S;
if (rovinka<255) rovinka++;
continue;
}
 
if (bit_test(sensors,4)) //....|..//
{
uhel=STRED+BEAR1;
Rmotor=SPEEDMAX;
Lmotor=SPEEDMAX;
line=S;
if (rovinka<255) rovinka++;
continue;
}
 
if ((L==line) || (R==line)) // Brzdeni pri vyjeti z trate
{
if (rovinka>250)
{
BL; BR;
Delay_ms(100);
};
rovinka=0;
};
 
}
}
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.HEX
0,0 → 1,110
:1000000000308A00E3290000FF00030E8301A100F5
:100010007F08A0000A08A8008A01A00E0408A20018
:100020007708A3007808A4007908A5007A08A6003C
:100030007B08A700831383128C308400801C222845
:100040008C183528220884002308F7002408F800BB
:100050002508F9002608FA002708FB0028088A006E
:10006000210E8300FF0E7F0E09008A1147280830F9
:10007000BC02031C46283C3084000310800C00089E
:100080000319462844286400800B43280034831653
:1000900005118312051564000930BB006D30BC00EA
:1000A0003720BB0B4E282C08BA00BA0803195E286B
:1000B0006400000000000000BA03552883160511F3
:1000C000831205118C108A1122283930840000080F
:1000D00003197C280230F800BF30F7006400F70BEA
:1000E0006E28F80B6C289630F700F70B7528000087
:1000F00000006400800B6A280034B50183160513E4
:100100008312051383168513831285178316051032
:100110008312051083168510831285140230B800EF
:10012000C830B9006520B80B9028831605138312D8
:100130000513831685138312851383160510831206
:1001400005108316851083128510E130AC006430F1
:10015000B9006520831605108312051083168510DB
:100160008312851483168513831285138316051352
:1001700083120517C830B9006520AA1FCE281308BE
:10018000930183161418C6288312C12883121308FA
:10019000AA00AA090430B9006520BD2883160510FD
:1001A000831205108316851083128510831605139C
:1001B000831205138316851383128513B701B601C5
:1001C0003708053C031C1729031DEA283608DB3CC9
:1001D000031C172983168515831285190029831698
:1001E000051083120510831685108312851483165B
:1001F000851383128513831605138312051710299F
:10020000831685108312851083160510831205143A
:10021000831605138312051383168513831285171E
:100220000130B9006520B60A0319B70AE028831621
:100230000513831205138316851383128513831602
:1002400005108312051083168510831285108030E7
:10025000AC006430B90065208316851383128513C2
:1002600083160513831205178316851083128510D4
:1002700083160510831205140230B800FA30B90055
:100280006520B80B3E2983160510831205108316CE
:1002900085108312851483160513831205138316A4
:1002A000851383128517C830B900652083160510A1
:1002B000831205108316851083128510831605138B
:1002C000831205138316851383128513B730AC0090
:1002D0006430B9006520831685108312851083165B
:1002E000051083120514C830B9006520A230AC0097
:1002F000831685108312851083160510831205144A
:10030000831685138312851383160513831205172D
:10031000C830B90065208C30AC008316851083127C
:100320008510831605108312051483168513831216
:1003300085138316051383120517C830B90065208D
:100340008030AC008316851083128510831605104B
:1003500083120514831685138312851383160513E0
:10036000831205176430B90065202A087F39031904
:10037000C8291308930183161418C0298312BB29B6
:1003800083121308AA00AA090430B9006520B52910
:1003900083160510831205108316851083128514A9
:1003A000831605138312051383168513831285178D
:1003B0000230B800C830B9006520B80BDA294930DE
:1003C000AC008A11D12A84011F3083057030831656
:1003D0008F001F129F121B0880399B0007309C0062
:1003E0001F129F121B0880399B001F1383121F17B7
:1003F0009F1783169F1383121F14941283160611DE
:100400008614061230308312940000308316940054
:100410000108C73908388100831290017830F8004C
:10042000063892008C308316920072308F000513CC
:100430008312051383168513831285138316051003
:10044000831205108316851083128510AF01AE014B
:10045000B101B0018030AC00AD0183168C14C03006
:1004600083128B0483160611831206110430B50023
:10047000FA30B9006520B50B382A0108801F432ADD
:10048000AF1F4B2A452AAF1B542AAF08031D4B2A26
:100490002E02031C542A831685108312851083169E
:1004A0000510831205145C2A8316051083120510AB
:1004B00083168510831285100108801F622AB11FE0
:1004C0006A2A642AB11B732AB108031D6A2A300202
:1004D000031C732A83168513831285138316051351
:1004E000831205177B2A83160513831205138316BF
:1004F00085138312851364000130B9006520023032
:10050000B500A9018B1BA9178B13F730BC0037204E
:10051000A91B8B17B50B812A8316061083120610B0
:100520001308930183161418972A8312922A8312B0
:100530001308AA00AA098316061083120614B40130
:10054000B301B201B308031DB92A3208063C031CEB
:10055000B92A2A08F7003208F8000319B32A031051
:10056000F70CF80BAF2A7718B40AB20A0319B30ACA
:10057000A22A3408033C0318CE2A831605138312DB
:1005800005138316851383128513831605108312B2
:1005900005108316851083128510BD2AAA1FD12A43
:1005A0007D28AA1DE12A8030AC00AF018C30AE005E
:1005B000B101B0000230AB002D0FDF2AE02AAD0AF6
:1005C0003D2A2A1CED2A4930AC00AF01AE01B10131
:1005D0008C30B0000130AB003D2A2A1FF82AB7301A
:1005E000AC00B101B001AF018C30AE00AB013D2ACF
:1005F000AA1C052B5E30AC00AF015A30AE00B10131
:100600008C30B0000230AB003D2AAA1E122BA23063
:10061000AC00B1015A30B000AF018C30AE000230F6
:10062000AB003D2A2A1D222B7430AC00AF018C3068
:10063000AE00B101B0000230AB002D0F202B212BFA
:10064000AD0A3D2A2A1E312B8C30AC00B101B0001E
:10065000AF01AE000230AB002D0F2F2B302BAD0AB7
:100660003D2A2B0B342B372BAB08031D4F2B2D08AA
:10067000FA3C03184E2B83160510831205108316BF
:1006800085108312851483160513831205138316B0
:100690008513831285176430B9006520AD013D2AAA
:0206A0006300F5
:04400E00383FFC3FFC
:00000001FF
;PIC16F88
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.LST
0,0 → 1,1192
CCS PCM C Compiler, Version 3.245, 27853 17-IV-06 12:46
 
Filename: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.lst
 
ROM used: 849 words (21%)
Largest free fragment is 2048
RAM used: 27 (15%) at main() level
34 (19%) worst case
Stack: 4 worst case (2 in main + 2 for interrupts)
 
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 1E3
0003: NOP
0004: MOVWF 7F
0005: SWAPF 03,W
0006: CLRF 03
0007: MOVWF 21
0008: MOVF 7F,W
0009: MOVWF 20
000A: MOVF 0A,W
000B: MOVWF 28
000C: CLRF 0A
000D: SWAPF 20,F
000E: MOVF 04,W
000F: MOVWF 22
0010: MOVF 77,W
0011: MOVWF 23
0012: MOVF 78,W
0013: MOVWF 24
0014: MOVF 79,W
0015: MOVWF 25
0016: MOVF 7A,W
0017: MOVWF 26
0018: MOVF 7B,W
0019: MOVWF 27
001A: BCF 03.7
001B: BCF 03.5
001C: MOVLW 8C
001D: MOVWF 04
001E: BTFSS 00.1
001F: GOTO 022
0020: BTFSC 0C.1
0021: GOTO 035
0022: MOVF 22,W
0023: MOVWF 04
0024: MOVF 23,W
0025: MOVWF 77
0026: MOVF 24,W
0027: MOVWF 78
0028: MOVF 25,W
0029: MOVWF 79
002A: MOVF 26,W
002B: MOVWF 7A
002C: MOVF 27,W
002D: MOVWF 7B
002E: MOVF 28,W
002F: MOVWF 0A
0030: SWAPF 21,W
0031: MOVWF 03
0032: SWAPF 7F,F
0033: SWAPF 7F,W
0034: RETFIE
0035: BCF 0A.3
0036: GOTO 047
.................... #include ".\main.h"
.................... #include <16F88.h>
.................... //////// Standard Header file for the PIC16F88 device ////////////////
.................... #device PIC16F88
.................... #list
....................
.................... #device adc=8
....................
.................... #FUSES NOWDT //No Watch Dog Timer
.................... #FUSES INTRC_IO
.................... #FUSES NOPUT //No Power Up Timer
.................... #FUSES MCLR //Master Clear pin enabled
.................... #FUSES NOBROWNOUT //Reset when brownout detected
.................... #FUSES NOLVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
.................... #FUSES NOCPD //No EE protection
.................... #FUSES NOWRT //Program memory not write protected
.................... #FUSES NODEBUG //No Debug mode for ICD
.................... #FUSES NOPROTECT //Code not protected from reading
.................... #FUSES NOFCMEN //Fail-safe clock monitor enabled
.................... #FUSES NOIESO //Internal External Switch Over mode enabled
....................
.................... #use delay(clock=8000000,RESTART_WDT)
0037: MOVLW 08
0038: SUBWF 3C,F
0039: BTFSS 03.0
003A: GOTO 046
003B: MOVLW 3C
003C: MOVWF 04
003D: BCF 03.0
003E: RRF 00,F
003F: MOVF 00,W
0040: BTFSC 03.2
0041: GOTO 046
0042: GOTO 044
0043: CLRWDT
0044: DECFSZ 00,F
0045: GOTO 043
0046: RETLW 00
*
0065: MOVLW 39
0066: MOVWF 04
0067: MOVF 00,W
0068: BTFSC 03.2
0069: GOTO 07C
006A: MOVLW 02
006B: MOVWF 78
006C: MOVLW BF
006D: MOVWF 77
006E: CLRWDT
006F: DECFSZ 77,F
0070: GOTO 06E
0071: DECFSZ 78,F
0072: GOTO 06C
0073: MOVLW 96
0074: MOVWF 77
0075: DECFSZ 77,F
0076: GOTO 075
0077: NOP
0078: NOP
0079: CLRWDT
007A: DECFSZ 00,F
007B: GOTO 06A
007C: RETLW 00
....................
....................
....................
.................... #define KOLMO1 225 // predni kolecko sroubem dopredu
.................... #define KOLMO2 30 // predni kolecko je hlavou sroubu dozadu
.................... #define STRED 128 // sredni poloha zataceciho kolecka
.................... #define BEAR1 12 // 3 stupne zataceni
.................... #define BEAR2 34
.................... #define BEAR3 55
.................... #define SPEEDMAX 140 // maximalni rychlost
....................
.................... #define L 1 // cara vlevo
.................... #define S 2 // casa mezi sensory
.................... #define R 0 // cara vpravo
....................
.................... // servo
.................... #define SERVO PIN_A2
....................
.................... // IR
.................... #define IRTX PIN_B2
.................... #define CIHLA PIN_A3
....................
.................... //motory
.................... #define FR output_low(PIN_A7); output_high(PIN_A6) // Vpred
.................... #define FL output_low(PIN_A1); output_high(PIN_A0)
.................... #define BR output_low(PIN_A6); output_high(PIN_A7) // Vzad
.................... #define BL output_low(PIN_A0); output_high(PIN_A1)
.................... #define STOPR output_low(PIN_A6);output_low(PIN_A7)
.................... #define STOPL output_low(PIN_A0);output_low(PIN_A1)
....................
.................... //HID
.................... #define LED1 PIN_B1 //oranzova
.................... #define LED2 PIN_B2 //zluta
....................
.................... #define STROBE PIN_B0
.................... //#define SW1 PIN_A2 // Motory On/off
....................
.................... unsigned int8 sensors; // pomocna promenna pro cteni cidel na caru
.................... unsigned int8 line; // na ktere strane byla detekovana cara
.................... //unsigned int8 dira; // pocita dobu po kterou je ztracena cara
.................... unsigned int8 uhel; // urcuje aktualni uhel zataceni
.................... //unsigned int8 speed; // maximalni povolena rychlost
.................... unsigned int8 rovinka; // pocitadlo na zjisteni rovinky
....................
.................... signed int16 Lmotor; // promene, ktere urcuji velikost vykonu na levem
.................... signed int16 Rmotor; // a pravem motoru
....................
.................... // makro pro PWM pro motory
.................... #define GO(motor, direction, power) if(get_timer0()<=power) \
.................... {direction##motor;} else {stop##motor;}
....................
.................... ////////////////////////////////////////////////////////////////////////////////
.................... /*
.................... void diagnostika()
.................... {
.................... if(input(SW1))STOPR;STOPL;While(TRUE);
.................... // if(LSENSOR==true) output_high(LED2); else output_low(LED2);
.................... // if(RSENSOR==true) output_high(LED1); else output_low(LED1);
.................... }
.................... */
.................... ////////////////////////////////////////////////////////////////////////////////
.................... #int_TIMER2
.................... TIMER2_isr() // ovladani serva
.................... {
.................... unsigned int8 n;
....................
.................... output_high(SERVO);
*
0047: BSF 03.5
0048: BCF 05.2
0049: BCF 03.5
004A: BSF 05.2
.................... delay_us(1000);
004B: CLRWDT
004C: MOVLW 09
004D: MOVWF 3B
004E: MOVLW 6D
004F: MOVWF 3C
0050: CALL 037
0051: DECFSZ 3B,F
0052: GOTO 04E
.................... for(n=uhel; n>0; n--) Delay_us(2);
0053: MOVF 2C,W
0054: MOVWF 3A
0055: MOVF 3A,F
0056: BTFSC 03.2
0057: GOTO 05E
0058: CLRWDT
0059: NOP
005A: NOP
005B: NOP
005C: DECF 3A,F
005D: GOTO 055
.................... output_low(SERVO);
005E: BSF 03.5
005F: BCF 05.2
0060: BCF 03.5
0061: BCF 05.2
.................... }
....................
.................... ////////////////////////////////////////////////////////////////////////////////
0062: BCF 0C.1
0063: BCF 0A.3
0064: GOTO 022
.................... short int IRcheck() // potvrdi detekci cihly
.................... {
.................... output_high(IRTX); // vypne vysilac IR
.................... delay_ms(100);
....................
.................... output_low(STROBE);
.................... sensors = spi_read(0); // cteni senzoru
.................... sensors=~sensors;
.................... output_high(STROBE);
....................
.................... if(true==bit_test(sensors,7)) // otestuje, jestli je stale detekovan IR signal
.................... {
.................... output_low(IRTX); // zapne vysilac IR
.................... delay_ms(100);
....................
.................... output_low(STROBE);
.................... sensors = spi_read(0); // cteni senzoru
.................... sensors=~sensors;
.................... output_high(STROBE);
....................
.................... if(false==bit_test(sensors,7)) // otestuje, jestli je detekovana cihla
.................... {
.................... output_high(IRTX); // vypne vysilac IR
.................... delay_ms(100);
....................
.................... output_low(STROBE);
.................... sensors = spi_read(0); // cteni senzoru
.................... sensors=~sensors;
.................... output_high(STROBE);
....................
.................... output_low(IRTX); // zapne vysilac IR
.................... if(bit_test(sensors,7)) return 1; // vrat 1, kdyz je stale cihla
.................... }
.................... };
.................... output_low(IRTX); // zapne vysilac IR
.................... return 0; // vrat 0, kdyz je detekovano ruseni
.................... }
.................... ////////////////////////////////////////////////////////////////////////////////
.................... void objizdka()
.................... {
.................... int8 shure=0;
*
007D: CLRF 35
.................... unsigned int16 n;
....................
.................... BR;BL;
007E: BSF 03.5
007F: BCF 05.6
0080: BCF 03.5
0081: BCF 05.6
0082: BSF 03.5
0083: BCF 05.7
0084: BCF 03.5
0085: BSF 05.7
0086: BSF 03.5
0087: BCF 05.0
0088: BCF 03.5
0089: BCF 05.0
008A: BSF 03.5
008B: BCF 05.1
008C: BCF 03.5
008D: BSF 05.1
.................... Delay_ms(400);
008E: MOVLW 02
008F: MOVWF 38
0090: MOVLW C8
0091: MOVWF 39
0092: CALL 065
0093: DECFSZ 38,F
0094: GOTO 090
.................... STOPR;STOPL;
0095: BSF 03.5
0096: BCF 05.6
0097: BCF 03.5
0098: BCF 05.6
0099: BSF 03.5
009A: BCF 05.7
009B: BCF 03.5
009C: BCF 05.7
009D: BSF 03.5
009E: BCF 05.0
009F: BCF 03.5
00A0: BCF 05.0
00A1: BSF 03.5
00A2: BCF 05.1
00A3: BCF 03.5
00A4: BCF 05.1
....................
.................... uhel=KOLMO1; // nastav zataceci kolecko kolmo na osu robota
00A5: MOVLW E1
00A6: MOVWF 2C
.................... Delay_ms(100);
00A7: MOVLW 64
00A8: MOVWF 39
00A9: CALL 065
.................... BL;FR;
00AA: BSF 03.5
00AB: BCF 05.0
00AC: BCF 03.5
00AD: BCF 05.0
00AE: BSF 03.5
00AF: BCF 05.1
00B0: BCF 03.5
00B1: BSF 05.1
00B2: BSF 03.5
00B3: BCF 05.7
00B4: BCF 03.5
00B5: BCF 05.7
00B6: BSF 03.5
00B7: BCF 05.6
00B8: BCF 03.5
00B9: BSF 05.6
.................... Delay_ms(200); // minimalni toceni, kdyby se zastavilo sikmo k cihle
00BA: MOVLW C8
00BB: MOVWF 39
00BC: CALL 065
....................
.................... While(bit_test(sensors,7)) // toc, dokud neni cihla z primeho senzoru
.................... {
00BD: BTFSS 2A.7
00BE: GOTO 0CE
.................... sensors = spi_read(0); // cteni senzoru
00BF: MOVF 13,W
00C0: CLRF 13
00C1: BSF 03.5
00C2: BTFSC 14.0
00C3: GOTO 0C6
00C4: BCF 03.5
00C5: GOTO 0C1
00C6: BCF 03.5
00C7: MOVF 13,W
00C8: MOVWF 2A
.................... sensors=~sensors;
00C9: COMF 2A,F
.................... Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel
00CA: MOVLW 04
00CB: MOVWF 39
00CC: CALL 065
.................... }
00CD: GOTO 0BD
.................... STOPL; STOPR;
00CE: BSF 03.5
00CF: BCF 05.0
00D0: BCF 03.5
00D1: BCF 05.0
00D2: BSF 03.5
00D3: BCF 05.1
00D4: BCF 03.5
00D5: BCF 05.1
00D6: BSF 03.5
00D7: BCF 05.6
00D8: BCF 03.5
00D9: BCF 05.6
00DA: BSF 03.5
00DB: BCF 05.7
00DC: BCF 03.5
00DD: BCF 05.7
....................
.................... for (n=0;n<1500;n++) // vystred se na hranu cihly
00DE: CLRF 37
00DF: CLRF 36
00E0: MOVF 37,W
00E1: SUBLW 05
00E2: BTFSS 03.0
00E3: GOTO 117
00E4: BTFSS 03.2
00E5: GOTO 0EA
00E6: MOVF 36,W
00E7: SUBLW DB
00E8: BTFSS 03.0
00E9: GOTO 117
.................... {
.................... if(!input(CIHLA)) {BL; FR;} else {FL; BR;};
00EA: BSF 03.5
00EB: BSF 05.3
00EC: BCF 03.5
00ED: BTFSC 05.3
00EE: GOTO 100
00EF: BSF 03.5
00F0: BCF 05.0
00F1: BCF 03.5
00F2: BCF 05.0
00F3: BSF 03.5
00F4: BCF 05.1
00F5: BCF 03.5
00F6: BSF 05.1
00F7: BSF 03.5
00F8: BCF 05.7
00F9: BCF 03.5
00FA: BCF 05.7
00FB: BSF 03.5
00FC: BCF 05.6
00FD: BCF 03.5
00FE: BSF 05.6
00FF: GOTO 110
0100: BSF 03.5
0101: BCF 05.1
0102: BCF 03.5
0103: BCF 05.1
0104: BSF 03.5
0105: BCF 05.0
0106: BCF 03.5
0107: BSF 05.0
0108: BSF 03.5
0109: BCF 05.6
010A: BCF 03.5
010B: BCF 05.6
010C: BSF 03.5
010D: BCF 05.7
010E: BCF 03.5
010F: BSF 05.7
.................... delay_ms(1);
0110: MOVLW 01
0111: MOVWF 39
0112: CALL 065
.................... }
0113: INCF 36,F
0114: BTFSC 03.2
0115: INCF 37,F
0116: GOTO 0E0
.................... STOPR;STOPL;
0117: BSF 03.5
0118: BCF 05.6
0119: BCF 03.5
011A: BCF 05.6
011B: BSF 03.5
011C: BCF 05.7
011D: BCF 03.5
011E: BCF 05.7
011F: BSF 03.5
0120: BCF 05.0
0121: BCF 03.5
0122: BCF 05.0
0123: BSF 03.5
0124: BCF 05.1
0125: BCF 03.5
0126: BCF 05.1
....................
.................... uhel=STRED; // dopredu
0127: MOVLW 80
0128: MOVWF 2C
.................... delay_ms(100);
0129: MOVLW 64
012A: MOVWF 39
012B: CALL 065
.................... FR; FL;
012C: BSF 03.5
012D: BCF 05.7
012E: BCF 03.5
012F: BCF 05.7
0130: BSF 03.5
0131: BCF 05.6
0132: BCF 03.5
0133: BSF 05.6
0134: BSF 03.5
0135: BCF 05.1
0136: BCF 03.5
0137: BCF 05.1
0138: BSF 03.5
0139: BCF 05.0
013A: BCF 03.5
013B: BSF 05.0
.................... delay_ms(500);
013C: MOVLW 02
013D: MOVWF 38
013E: MOVLW FA
013F: MOVWF 39
0140: CALL 065
0141: DECFSZ 38,F
0142: GOTO 13E
.................... BL;BR;
0143: BSF 03.5
0144: BCF 05.0
0145: BCF 03.5
0146: BCF 05.0
0147: BSF 03.5
0148: BCF 05.1
0149: BCF 03.5
014A: BSF 05.1
014B: BSF 03.5
014C: BCF 05.6
014D: BCF 03.5
014E: BCF 05.6
014F: BSF 03.5
0150: BCF 05.7
0151: BCF 03.5
0152: BSF 05.7
.................... delay_ms(200);
0153: MOVLW C8
0154: MOVWF 39
0155: CALL 065
.................... STOPL;STOPR;
0156: BSF 03.5
0157: BCF 05.0
0158: BCF 03.5
0159: BCF 05.0
015A: BSF 03.5
015B: BCF 05.1
015C: BCF 03.5
015D: BCF 05.1
015E: BSF 03.5
015F: BCF 05.6
0160: BCF 03.5
0161: BCF 05.6
0162: BSF 03.5
0163: BCF 05.7
0164: BCF 03.5
0165: BCF 05.7
....................
.................... uhel=STRED+BEAR3; // doprava
0166: MOVLW B7
0167: MOVWF 2C
.................... delay_ms(100);
0168: MOVLW 64
0169: MOVWF 39
016A: CALL 065
.................... FL;
016B: BSF 03.5
016C: BCF 05.1
016D: BCF 03.5
016E: BCF 05.1
016F: BSF 03.5
0170: BCF 05.0
0171: BCF 03.5
0172: BSF 05.0
.................... delay_ms(200);
0173: MOVLW C8
0174: MOVWF 39
0175: CALL 065
.................... uhel=STRED+BEAR2; // min doprava
0176: MOVLW A2
0177: MOVWF 2C
.................... FL;FR;
0178: BSF 03.5
0179: BCF 05.1
017A: BCF 03.5
017B: BCF 05.1
017C: BSF 03.5
017D: BCF 05.0
017E: BCF 03.5
017F: BSF 05.0
0180: BSF 03.5
0181: BCF 05.7
0182: BCF 03.5
0183: BCF 05.7
0184: BSF 03.5
0185: BCF 05.6
0186: BCF 03.5
0187: BSF 05.6
.................... delay_ms(200);
0188: MOVLW C8
0189: MOVWF 39
018A: CALL 065
.................... uhel=STRED+BEAR1; // jeste min doprava
018B: MOVLW 8C
018C: MOVWF 2C
.................... FL;FR;
018D: BSF 03.5
018E: BCF 05.1
018F: BCF 03.5
0190: BCF 05.1
0191: BSF 03.5
0192: BCF 05.0
0193: BCF 03.5
0194: BSF 05.0
0195: BSF 03.5
0196: BCF 05.7
0197: BCF 03.5
0198: BCF 05.7
0199: BSF 03.5
019A: BCF 05.6
019B: BCF 03.5
019C: BSF 05.6
.................... delay_ms(200);
019D: MOVLW C8
019E: MOVWF 39
019F: CALL 065
.................... uhel=STRED; // rovne
01A0: MOVLW 80
01A1: MOVWF 2C
.................... FL;FR;
01A2: BSF 03.5
01A3: BCF 05.1
01A4: BCF 03.5
01A5: BCF 05.1
01A6: BSF 03.5
01A7: BCF 05.0
01A8: BCF 03.5
01A9: BSF 05.0
01AA: BSF 03.5
01AB: BCF 05.7
01AC: BCF 03.5
01AD: BCF 05.7
01AE: BSF 03.5
01AF: BCF 05.6
01B0: BCF 03.5
01B1: BSF 05.6
.................... delay_ms(100);
01B2: MOVLW 64
01B3: MOVWF 39
01B4: CALL 065
.................... While((sensors & 0b01111111)!=0) //dokud neni cara
.................... {
01B5: MOVF 2A,W
01B6: ANDLW 7F
01B7: BTFSC 03.2
01B8: GOTO 1C8
.................... sensors = spi_read(0); // cteni senzoru
01B9: MOVF 13,W
01BA: CLRF 13
01BB: BSF 03.5
01BC: BTFSC 14.0
01BD: GOTO 1C0
01BE: BCF 03.5
01BF: GOTO 1BB
01C0: BCF 03.5
01C1: MOVF 13,W
01C2: MOVWF 2A
.................... sensors=~sensors;
01C3: COMF 2A,F
.................... Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel
01C4: MOVLW 04
01C5: MOVWF 39
01C6: CALL 065
.................... }
01C7: GOTO 1B5
.................... BL; BR;
01C8: BSF 03.5
01C9: BCF 05.0
01CA: BCF 03.5
01CB: BCF 05.0
01CC: BSF 03.5
01CD: BCF 05.1
01CE: BCF 03.5
01CF: BSF 05.1
01D0: BSF 03.5
01D1: BCF 05.6
01D2: BCF 03.5
01D3: BCF 05.6
01D4: BSF 03.5
01D5: BCF 05.7
01D6: BCF 03.5
01D7: BSF 05.7
.................... delay_ms(400);
01D8: MOVLW 02
01D9: MOVWF 38
01DA: MOVLW C8
01DB: MOVWF 39
01DC: CALL 065
01DD: DECFSZ 38,F
01DE: GOTO 1DA
....................
.................... uhel=STRED-BEAR3; // doleva
01DF: MOVLW 49
01E0: MOVWF 2C
.................... }
01E1: BCF 0A.3
01E2: GOTO 2D1 (RETURN)
....................
.................... ////////////////////////////////////////////////////////////////////////////////
.................... void main()
.................... {
01E3: CLRF 04
01E4: MOVLW 1F
01E5: ANDWF 03,F
01E6: MOVLW 70
01E7: BSF 03.5
01E8: MOVWF 0F
01E9: BCF 1F.4
01EA: BCF 1F.5
01EB: MOVF 1B,W
01EC: ANDLW 80
01ED: MOVWF 1B
01EE: MOVLW 07
01EF: MOVWF 1C
....................
.................... unsigned int16 n;
.................... unsigned int8 i;
....................
.................... setup_adc_ports(NO_ANALOGS);
01F0: BCF 1F.4
01F1: BCF 1F.5
01F2: MOVF 1B,W
01F3: ANDLW 80
01F4: MOVWF 1B
.................... setup_adc(ADC_CLOCK_INTERNAL);
01F5: BCF 1F.6
01F6: BCF 03.5
01F7: BSF 1F.6
01F8: BSF 1F.7
01F9: BSF 03.5
01FA: BCF 1F.7
01FB: BCF 03.5
01FC: BSF 1F.0
.................... setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_4);
01FD: BCF 14.5
01FE: BSF 03.5
01FF: BCF 06.2
0200: BSF 06.1
0201: BCF 06.4
0202: MOVLW 30
0203: BCF 03.5
0204: MOVWF 14
0205: MOVLW 00
0206: BSF 03.5
0207: MOVWF 14
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
0208: MOVF 01,W
0209: ANDLW C7
020A: IORLW 08
020B: MOVWF 01
.................... setup_timer_1(T1_DISABLED);
020C: BCF 03.5
020D: CLRF 10
.................... setup_timer_2(T2_DIV_BY_16,140,16);
020E: MOVLW 78
020F: MOVWF 78
0210: IORLW 06
0211: MOVWF 12
0212: MOVLW 8C
0213: BSF 03.5
0214: MOVWF 12
.................... setup_oscillator(OSC_8MHZ|OSC_INTRC);
0215: MOVLW 72
0216: MOVWF 0F
....................
.................... STOPR; STOPL; // zastav motory
0217: BCF 05.6
0218: BCF 03.5
0219: BCF 05.6
021A: BSF 03.5
021B: BCF 05.7
021C: BCF 03.5
021D: BCF 05.7
021E: BSF 03.5
021F: BCF 05.0
0220: BCF 03.5
0221: BCF 05.0
0222: BSF 03.5
0223: BCF 05.1
0224: BCF 03.5
0225: BCF 05.1
.................... Lmotor=0;Rmotor=0;
0226: CLRF 2F
0227: CLRF 2E
0228: CLRF 31
0229: CLRF 30
....................
.................... uhel=STRED; // nastav zadni kolecko na stred
022A: MOVLW 80
022B: MOVWF 2C
.................... rovinka=0;
022C: CLRF 2D
....................
.................... enable_interrupts(INT_TIMER2);
022D: BSF 03.5
022E: BSF 0C.1
.................... enable_interrupts(GLOBAL);
022F: MOVLW C0
0230: BCF 03.5
0231: IORWF 0B,F
....................
.................... output_low(IRTX); // zapni IR vysilac
0232: BSF 03.5
0233: BCF 06.2
0234: BCF 03.5
0235: BCF 06.2
....................
.................... delay_ms(1000);
0236: MOVLW 04
0237: MOVWF 35
0238: MOVLW FA
0239: MOVWF 39
023A: CALL 065
023B: DECFSZ 35,F
023C: GOTO 238
....................
.................... while(true)
.................... {
....................
.................... GO(L,F,Lmotor);GO(R,F,Rmotor); // zapni motory
023D: MOVF 01,W
023E: BTFSS 00.7
023F: GOTO 243
0240: BTFSS 2F.7
0241: GOTO 24B
0242: GOTO 245
0243: BTFSC 2F.7
0244: GOTO 254
0245: MOVF 2F,F
0246: BTFSS 03.2
0247: GOTO 24B
0248: SUBWF 2E,W
0249: BTFSS 03.0
024A: GOTO 254
024B: BSF 03.5
024C: BCF 05.1
024D: BCF 03.5
024E: BCF 05.1
024F: BSF 03.5
0250: BCF 05.0
0251: BCF 03.5
0252: BSF 05.0
0253: GOTO 25C
0254: BSF 03.5
0255: BCF 05.0
0256: BCF 03.5
0257: BCF 05.0
0258: BSF 03.5
0259: BCF 05.1
025A: BCF 03.5
025B: BCF 05.1
025C: MOVF 01,W
025D: BTFSS 00.7
025E: GOTO 262
025F: BTFSS 31.7
0260: GOTO 26A
0261: GOTO 264
0262: BTFSC 31.7
0263: GOTO 273
0264: MOVF 31,F
0265: BTFSS 03.2
0266: GOTO 26A
0267: SUBWF 30,W
0268: BTFSS 03.0
0269: GOTO 273
026A: BSF 03.5
026B: BCF 05.7
026C: BCF 03.5
026D: BCF 05.7
026E: BSF 03.5
026F: BCF 05.6
0270: BCF 03.5
0271: BSF 05.6
0272: GOTO 27B
0273: BSF 03.5
0274: BCF 05.6
0275: BCF 03.5
0276: BCF 05.6
0277: BSF 03.5
0278: BCF 05.7
0279: BCF 03.5
027A: BCF 05.7
....................
.................... delay_us(1500);
027B: CLRWDT
027C: MOVLW 01
027D: MOVWF 39
027E: CALL 065
027F: MOVLW 02
0280: MOVWF 35
0281: CLRF 29
0282: BTFSC 0B.7
0283: BSF 29.7
0284: BCF 0B.7
0285: MOVLW F7
0286: MOVWF 3C
0287: CALL 037
0288: BTFSC 29.7
0289: BSF 0B.7
028A: DECFSZ 35,F
028B: GOTO 281
....................
.................... output_low(STROBE);
028C: BSF 03.5
028D: BCF 06.0
028E: BCF 03.5
028F: BCF 06.0
.................... sensors = spi_read(0); // cteni senzoru
0290: MOVF 13,W
0291: CLRF 13
0292: BSF 03.5
0293: BTFSC 14.0
0294: GOTO 297
0295: BCF 03.5
0296: GOTO 292
0297: BCF 03.5
0298: MOVF 13,W
0299: MOVWF 2A
.................... sensors=~sensors;
029A: COMF 2A,F
.................... output_high(STROBE);
029B: BSF 03.5
029C: BCF 06.0
029D: BCF 03.5
029E: BSF 06.0
....................
.................... i=0; // havarijni kod
029F: CLRF 34
.................... for (n=0; n<=6; n++)
02A0: CLRF 33
02A1: CLRF 32
02A2: MOVF 33,F
02A3: BTFSS 03.2
02A4: GOTO 2B9
02A5: MOVF 32,W
02A6: SUBLW 06
02A7: BTFSS 03.0
02A8: GOTO 2B9
.................... {
.................... if(bit_test(sensors,n)) i++;
02A9: MOVF 2A,W
02AA: MOVWF 77
02AB: MOVF 32,W
02AC: MOVWF 78
02AD: BTFSC 03.2
02AE: GOTO 2B3
02AF: BCF 03.0
02B0: RRF 77,F
02B1: DECFSZ 78,F
02B2: GOTO 2AF
02B3: BTFSC 77.0
02B4: INCF 34,F
.................... }
02B5: INCF 32,F
02B6: BTFSC 03.2
02B7: INCF 33,F
02B8: GOTO 2A2
.................... if (i>3) While(true){STOPR; STOPL;}; // zastavi, kdyz je cerno pod vice nez tremi cidly
02B9: MOVF 34,W
02BA: SUBLW 03
02BB: BTFSC 03.0
02BC: GOTO 2CE
02BD: BSF 03.5
02BE: BCF 05.6
02BF: BCF 03.5
02C0: BCF 05.6
02C1: BSF 03.5
02C2: BCF 05.7
02C3: BCF 03.5
02C4: BCF 05.7
02C5: BSF 03.5
02C6: BCF 05.0
02C7: BCF 03.5
02C8: BCF 05.0
02C9: BSF 03.5
02CA: BCF 05.1
02CB: BCF 03.5
02CC: BCF 05.1
02CD: GOTO 2BD
....................
.................... if(bit_test(sensors,7)) // detekce dihly
02CE: BTFSS 2A.7
02CF: GOTO 2D1
.................... {
.................... objizdka();
02D0: GOTO 07D
.................... }
....................
.................... if(bit_test(sensors,3)) //...|...//
02D1: BTFSS 2A.3
02D2: GOTO 2E1
.................... {
.................... uhel=STRED;
02D3: MOVLW 80
02D4: MOVWF 2C
.................... Lmotor=SPEEDMAX;
02D5: CLRF 2F
02D6: MOVLW 8C
02D7: MOVWF 2E
.................... Rmotor=SPEEDMAX;
02D8: CLRF 31
02D9: MOVWF 30
.................... line=S;
02DA: MOVLW 02
02DB: MOVWF 2B
.................... if (rovinka<255) rovinka++;
02DC: INCFSZ 2D,W
02DD: GOTO 2DF
02DE: GOTO 2E0
02DF: INCF 2D,F
.................... continue;
02E0: GOTO 23D
.................... }
....................
.................... if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu
02E1: BTFSS 2A.0
02E2: GOTO 2ED
.................... {
.................... uhel=STRED-BEAR3;
02E3: MOVLW 49
02E4: MOVWF 2C
.................... Lmotor=0;
02E5: CLRF 2F
02E6: CLRF 2E
.................... Rmotor=SPEEDMAX;
02E7: CLRF 31
02E8: MOVLW 8C
02E9: MOVWF 30
.................... line=L;
02EA: MOVLW 01
02EB: MOVWF 2B
.................... continue;
02EC: GOTO 23D
.................... }
....................
.................... if(bit_test(sensors,6)) //......|//
02ED: BTFSS 2A.6
02EE: GOTO 2F8
.................... {
.................... uhel=STRED+BEAR3;
02EF: MOVLW B7
02F0: MOVWF 2C
.................... Rmotor=0;
02F1: CLRF 31
02F2: CLRF 30
.................... Lmotor=SPEEDMAX;
02F3: CLRF 2F
02F4: MOVLW 8C
02F5: MOVWF 2E
.................... line=R;
02F6: CLRF 2B
.................... continue;
02F7: GOTO 23D
.................... }
....................
.................... if(bit_test(sensors,1)) //.|.....//
02F8: BTFSS 2A.1
02F9: GOTO 305
.................... {
.................... uhel=STRED-BEAR2;
02FA: MOVLW 5E
02FB: MOVWF 2C
.................... Lmotor=SPEEDMAX-50;
02FC: CLRF 2F
02FD: MOVLW 5A
02FE: MOVWF 2E
.................... Rmotor=SPEEDMAX;
02FF: CLRF 31
0300: MOVLW 8C
0301: MOVWF 30
.................... line=S;
0302: MOVLW 02
0303: MOVWF 2B
.................... continue;
0304: GOTO 23D
.................... }
....................
.................... if(bit_test(sensors,5)) //.....|.//
0305: BTFSS 2A.5
0306: GOTO 312
.................... {
.................... uhel=STRED+BEAR2;
0307: MOVLW A2
0308: MOVWF 2C
.................... Rmotor=SPEEDMAX-50;
0309: CLRF 31
030A: MOVLW 5A
030B: MOVWF 30
.................... Lmotor=SPEEDMAX;
030C: CLRF 2F
030D: MOVLW 8C
030E: MOVWF 2E
.................... line=S;
030F: MOVLW 02
0310: MOVWF 2B
.................... continue;
0311: GOTO 23D
.................... }
....................
.................... if (bit_test(sensors,2)) //..|....//
0312: BTFSS 2A.2
0313: GOTO 322
.................... {
.................... uhel=STRED-BEAR1;
0314: MOVLW 74
0315: MOVWF 2C
.................... Lmotor=SPEEDMAX;
0316: CLRF 2F
0317: MOVLW 8C
0318: MOVWF 2E
.................... Rmotor=SPEEDMAX;
0319: CLRF 31
031A: MOVWF 30
.................... line=S;
031B: MOVLW 02
031C: MOVWF 2B
.................... if (rovinka<255) rovinka++;
031D: INCFSZ 2D,W
031E: GOTO 320
031F: GOTO 321
0320: INCF 2D,F
.................... continue;
0321: GOTO 23D
.................... }
....................
.................... if (bit_test(sensors,4)) //....|..//
0322: BTFSS 2A.4
0323: GOTO 331
.................... {
.................... uhel=STRED+BEAR1;
0324: MOVLW 8C
0325: MOVWF 2C
.................... Rmotor=SPEEDMAX;
0326: CLRF 31
0327: MOVWF 30
.................... Lmotor=SPEEDMAX;
0328: CLRF 2F
0329: MOVWF 2E
.................... line=S;
032A: MOVLW 02
032B: MOVWF 2B
.................... if (rovinka<255) rovinka++;
032C: INCFSZ 2D,W
032D: GOTO 32F
032E: GOTO 330
032F: INCF 2D,F
.................... continue;
0330: GOTO 23D
.................... }
....................
.................... if ((L==line) || (R==line)) // Brzdeni pri vyjeti z trate
0331: DECFSZ 2B,W
0332: GOTO 334
0333: GOTO 337
0334: MOVF 2B,F
0335: BTFSS 03.2
0336: GOTO 34F
.................... {
.................... if (rovinka>250)
0337: MOVF 2D,W
0338: SUBLW FA
0339: BTFSC 03.0
033A: GOTO 34E
.................... {
.................... BL; BR;
033B: BSF 03.5
033C: BCF 05.0
033D: BCF 03.5
033E: BCF 05.0
033F: BSF 03.5
0340: BCF 05.1
0341: BCF 03.5
0342: BSF 05.1
0343: BSF 03.5
0344: BCF 05.6
0345: BCF 03.5
0346: BCF 05.6
0347: BSF 03.5
0348: BCF 05.7
0349: BCF 03.5
034A: BSF 05.7
.................... Delay_ms(100);
034B: MOVLW 64
034C: MOVWF 39
034D: CALL 065
.................... };
.................... rovinka=0;
034E: CLRF 2D
.................... };
....................
.................... }
034F: GOTO 23D
.................... }
0350: SLEEP
 
Configuration Fuses:
Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IO
Word 2: 3FFC NOFCMEN NOIESO
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.PJT
0,0 → 1,41
[PROJECT]
Target=main.HEX
Development_Mode=
Processor=0x688F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\dr
Library=
LinkerScript=
 
[Target Data]
FileList=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[main.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=main.c
 
[Windows]
0=0000 main.c 0 0 796 451 3 0
 
[Opened Files]
1=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.c
2=C:\Program Files\PICC\devices\16F88.h
3=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.h
4=
5=
[Units]
Count=1
1=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.c (main)
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.SYM
0,0 → 1,70
015-016 CCP_1
015 CCP_1_LOW
016 CCP_1_HIGH
020 @INTERRUPT_AREA
021 @INTERRUPT_AREA
022 @INTERRUPT_AREA
023 @INTERRUPT_AREA
024 @INTERRUPT_AREA
025 @INTERRUPT_AREA
026 @INTERRUPT_AREA
027 @INTERRUPT_AREA
028 @INTERRUPT_AREA
029 @INTERRUPT_AREA
02A sensors
02B line
02C uhel
02D rovinka
02E-02F Lmotor
030-031 Rmotor
032-033 main.n
034 main.i
035 objizdka.shure
035 main.@SCRATCH
036-037 objizdka.n
038 objizdka.@SCRATCH
039 @delay_ms1.P1
03A TIMER2_isr.n
03B TIMER2_isr.@SCRATCH
03C @delay_us1.P1
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
079 @SCRATCH
07A @SCRATCH
07B @SCRATCH
09C.6 C1OUT
09C.7 C2OUT
09C.6 C1OUT
09C.7 C2OUT
 
0065 @delay_ms1
0037 @delay_us1
0047 TIMER2_isr
007D objizdka
01E3 main
01E3 @cinit
 
Project Files:
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.c
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.h
C:\Program Files\PICC\devices\16F88.h
 
Units:
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.c (main)
 
Compiler Settings:
Processor: PIC16F88
Pointer Size: 8
ADC Range: 0-255
Opt Level: 9
Short,Int,Long: 1,8,16
 
Output Files:
Errors: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.err
INHX8: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.hex
Symbols: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.sym
List: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.lst
Debug/COFF: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.cof
Call Tree: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.tre
Statistics: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.sta
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.c
0,0 → 1,302
#include ".\main.h"
 
#define KOLMO1 225 // predni kolecko sroubem dopredu
#define KOLMO2 30 // predni kolecko je hlavou sroubu dozadu
#define STRED 128 // sredni poloha zataceciho kolecka
#define BEAR1 12 // 3 stupne zataceni
#define BEAR2 34
#define BEAR3 55
#define SPEEDMAX 140 // maximalni rychlost
 
#define L 1 // cara vlevo
#define S 2 // casa mezi sensory
#define R 0 // cara vpravo
 
// servo
#define SERVO PIN_A2
 
// IR
#define IRTX PIN_B2
#define CIHLA PIN_A3
 
//motory
#define FR output_low(PIN_A7); output_high(PIN_A6) // Vpred
#define FL output_low(PIN_A1); output_high(PIN_A0)
#define BR output_low(PIN_A6); output_high(PIN_A7) // Vzad
#define BL output_low(PIN_A0); output_high(PIN_A1)
#define STOPR output_low(PIN_A6);output_low(PIN_A7)
#define STOPL output_low(PIN_A0);output_low(PIN_A1)
 
//HID
#define LED1 PIN_B1 //oranzova
#define LED2 PIN_B2 //zluta
 
#define STROBE PIN_B0
//#define SW1 PIN_A2 // Motory On/off
 
unsigned int8 sensors; // pomocna promenna pro cteni cidel na caru
unsigned int8 line; // na ktere strane byla detekovana cara
//unsigned int8 dira; // pocita dobu po kterou je ztracena cara
unsigned int8 uhel; // urcuje aktualni uhel zataceni
//unsigned int8 speed; // maximalni povolena rychlost
unsigned int8 rovinka; // pocitadlo na zjisteni rovinky
 
signed int16 Lmotor; // promene, ktere urcuji velikost vykonu na levem
signed int16 Rmotor; // a pravem motoru
 
// makro pro PWM pro motory
#define GO(motor, direction, power) if(get_timer0()<=power) \
{direction##motor;} else {stop##motor;}
 
////////////////////////////////////////////////////////////////////////////////
/*
void diagnostika()
{
if(input(SW1))STOPR;STOPL;While(TRUE);
// if(LSENSOR==true) output_high(LED2); else output_low(LED2);
// if(RSENSOR==true) output_high(LED1); else output_low(LED1);
}
*/
////////////////////////////////////////////////////////////////////////////////
#int_TIMER2
TIMER2_isr() // ovladani serva
{
unsigned int8 n;
 
output_high(SERVO);
delay_us(1000);
for(n=uhel; n>0; n--) Delay_us(2);
output_low(SERVO);
}
 
////////////////////////////////////////////////////////////////////////////////
short int IRcheck() // potvrdi detekci cihly
{
output_high(IRTX); // vypne vysilac IR
delay_ms(100);
 
output_low(STROBE);
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE);
 
if(true==bit_test(sensors,7)) // otestuje, jestli je stale detekovan IR signal
{
output_low(IRTX); // zapne vysilac IR
delay_ms(100);
 
output_low(STROBE);
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE);
 
if(false==bit_test(sensors,7)) // otestuje, jestli je detekovana cihla
{
output_high(IRTX); // vypne vysilac IR
delay_ms(100);
 
output_low(STROBE);
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE);
 
output_low(IRTX); // zapne vysilac IR
if(bit_test(sensors,7)) return 1; // vrat 1, kdyz je stale cihla
}
};
output_low(IRTX); // zapne vysilac IR
return 0; // vrat 0, kdyz je detekovano ruseni
}
////////////////////////////////////////////////////////////////////////////////
void objizdka()
{
int8 shure=0;
unsigned int16 n;
BR;BL;
Delay_ms(400);
STOPR;STOPL;
 
uhel=KOLMO1; // nastav zataceci kolecko kolmo na osu robota
Delay_ms(100);
BL;FR;
Delay_ms(200); // minimalni toceni, kdyby se zastavilo sikmo k cihle
 
While(bit_test(sensors,7)) // toc, dokud neni cihla z primeho senzoru
{
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel
}
STOPL; STOPR;
 
for (n=0;n<1500;n++) // vystred se na hranu cihly
{
if(!input(CIHLA)) {BL; FR;} else {FL; BR;};
delay_ms(1);
}
STOPR;STOPL;
 
uhel=STRED; // dopredu
delay_ms(100);
FR; FL;
delay_ms(500);
BL;BR;
delay_ms(200);
STOPL;STOPR;
 
uhel=STRED+BEAR3; // doprava
delay_ms(100);
FL;
delay_ms(200);
uhel=STRED+BEAR2; // min doprava
FL;FR;
delay_ms(200);
uhel=STRED+BEAR1; // jeste min doprava
FL;FR;
delay_ms(200);
uhel=STRED; // rovne
FL;FR;
delay_ms(100);
While((sensors & 0b01111111)!=0) //dokud neni cara
{
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel
}
BL; BR;
delay_ms(400);
uhel=STRED-BEAR3; // doleva
}
 
////////////////////////////////////////////////////////////////////////////////
void main()
{
 
unsigned int16 n;
unsigned int8 i;
 
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_4);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_16,140,16);
setup_oscillator(OSC_8MHZ|OSC_INTRC);
 
STOPR; STOPL; // zastav motory
Lmotor=0;Rmotor=0;
 
uhel=STRED; // nastav zadni kolecko na stred
rovinka=0;
 
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
 
output_low(IRTX); // zapni IR vysilac
 
delay_ms(1000);
 
while(true)
{
 
GO(L,F,Lmotor);GO(R,F,Rmotor); // zapni motory
 
delay_us(1500);
 
output_low(STROBE);
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE);
 
i=0; // havarijni kod
for (n=0; n<=6; n++)
{
if(bit_test(sensors,n)) i++;
}
if (i>3) While(true){STOPR; STOPL;}; // zastavi, kdyz je cerno pod vice nez tremi cidly
 
if(bit_test(sensors,7)) // detekce dihly
{
objizdka();
}
 
if(bit_test(sensors,3)) //...|...//
{
uhel=STRED;
Lmotor=SPEEDMAX;
Rmotor=SPEEDMAX;
line=S;
if (rovinka<255) rovinka++;
continue;
}
 
if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu
{
uhel=STRED-BEAR3;
Lmotor=0;
Rmotor=SPEEDMAX;
line=L;
continue;
}
 
if(bit_test(sensors,6)) //......|//
{
uhel=STRED+BEAR3;
Rmotor=0;
Lmotor=SPEEDMAX;
line=R;
continue;
}
 
if(bit_test(sensors,1)) //.|.....//
{
uhel=STRED-BEAR2;
Lmotor=SPEEDMAX-50;
Rmotor=SPEEDMAX;
line=S;
continue;
}
 
if(bit_test(sensors,5)) //.....|.//
{
uhel=STRED+BEAR2;
Rmotor=SPEEDMAX-50;
Lmotor=SPEEDMAX;
line=S;
continue;
}
 
if (bit_test(sensors,2)) //..|....//
{
uhel=STRED-BEAR1;
Lmotor=SPEEDMAX;
Rmotor=SPEEDMAX;
line=S;
if (rovinka<255) rovinka++;
continue;
}
 
if (bit_test(sensors,4)) //....|..//
{
uhel=STRED+BEAR1;
Rmotor=SPEEDMAX;
Lmotor=SPEEDMAX;
line=S;
if (rovinka<255) rovinka++;
continue;
}
 
if ((L==line) || (R==line)) // Brzdeni pri vyjeti z trate
{
if (rovinka>250)
{
BL; BR;
Delay_ms(100);
};
rovinka=0;
};
 
}
}
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.cof
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.err
0,0 → 1,2
No Errors
0 Errors, 0 Warnings.
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.h
0,0 → 1,18
#include <16F88.h>
#device adc=8
 
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO
#FUSES NOPUT //No Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOBROWNOUT //Reset when brownout detected
#FUSES NOLVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOFCMEN //Fail-safe clock monitor enabled
#FUSES NOIESO //Internal External Switch Over mode enabled
 
#use delay(clock=8000000,RESTART_WDT)
 
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.sta
0,0 → 1,33
 
ROM used: 849 (21%)
849 (21%) including unused fragments
 
1 Average locations per line
3 Average locations per statement
 
RAM used: 27 (15%) at main() level
34 (19%) worst case
 
Lines Stmts % Files
----- ----- --- -----
303 252 100 D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.c
19 0 0 D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.h
279 0 0 C:\Program Files\PICC\devices\16F88.h
----- -----
1202 504 Total
 
Page ROM % RAM Functions:
---- --- --- --- ----------
0 24 3 1 @delay_ms1
0 16 2 1 @delay_us1
0 30 4 2 TIMER2_isr
0 358 42 4 objizdka
0 366 43 4 main
 
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-00036 51 0
00037-007FF 794 1199
00800-00FFF 0 2048
 
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/master/main.tre
0,0 → 1,25
ÀÄmain
ÃÄmain 0/366 Ram=4
³ ÃÄ??0??
³ ÃÄ@delay_ms1 0/24 Ram=1
³ ÃÄ@delay_ms1 0/24 Ram=1
³ ÃÄ@delay_us1 0/16 Ram=1
³ ÃÄobjizdka 0/358 Ram=4
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÃÄ@delay_ms1 0/24 Ram=1
³ ³ ÀÄ@delay_ms1 0/24 Ram=1
³ ÀÄ@delay_ms1 0/24 Ram=1
ÀÄTIMER2_isr 0/30 Ram=2
ÀÄ@delay_us1 0/16 Ram=1
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.BAK
0,0 → 1,147
#include ".\cidla.h"
//#include <stdlib.h>
 
#use rs232(baud=110,parity=N,xmit=PIN_B1,rcv=PIN_B0,bits=8,restart_wdt)
 
#define IRRX PIN_B0
 
#define TRESHOLD_MAX 60 // rozhodovaci uroven pro cidla cerna/bila
#define TRESHOLD_MIN 40
#define CIHLA 10 // doba, po kterou musi byt detekovana cihla
 
unsigned int8 radius; // co cidla vidi
unsigned int8 last_radius; // rozsah
unsigned int8 last_cidla; // co cidla videla minule
unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla
 
//tuning
/*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM
 
//Vystup PWM je na PIN_B3
////////////////////////////////////////////////////////////////////////////////
void pulzovani() // postupne rozsvecuje a zhasina podsvetleni
{
unsigned int8 i,n;
for(n=0;n<=3;n++)
{
for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani
for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani
}
}
*/
////////////////////////////////////////////////////////////////////////////////
void main()
{
int8 cidla;
unsigned int8 a;
unsigned int8 n;
 
setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
last_radius=0b00001000; // minimalni rozsah snimani od stredu
last_cidla=0b00001000;
 
shure=0;
while(true)
{
set_adc_channel(0);
cidla=0;
Delay_us(10);
a=read_adc();
 
set_adc_channel(1);
if(a<TRESHOLD_MAX) //hystereze cidel
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000001);
}
else cidla |= 0b00000001;
}
 
a=read_adc();
 
set_adc_channel(2);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000010);
}
else cidla |= 0b00000010;
}
 
a=read_adc();
 
set_adc_channel(3);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000100);
}
else cidla |= 0b00000100;
}
 
a=read_adc();
 
set_adc_channel(4);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00001000);
}
else cidla |= 0b00001000;
}
a=read_adc();
 
set_adc_channel(5);
 
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00010000);
}
else cidla |= 0b00010000;
}
a=read_adc();
 
set_adc_channel(6);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00100000);
}
else cidla |= 0b00100000;
}
a=read_adc();
 
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |=(last_cidla & 0b01000000);
}
else cidla |= 0b01000000;
}
 
last_cidla=cidla;
 
if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;};
if (shure>CIHLA) cidla|=0b10000000;
 
cidla=~cidla;
spi_write(cidla);
}
}
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.HEX
0,0 → 1,39
:1000000000308A000428000084011F30830560301E
:1000100083168F0086108312861483161F129F1278
:100020001B0880399B0007309C001F129F121B0881
:1000300080397F389B001F1383121F179F17831669
:100040009F1383121F14941283160611861406162A
:100050003530831294004030831694000108C7396C
:1000600008388100831290010030F80092000030BF
:100070008316920007309C00050864000230F700E8
:10008000F70B4028000000001C0883120D13831694
:100090009D0108308312A100A200A3010030F800E6
:1000A0001F08C73978049F00A40164000230F700DC
:1000B000F70B5828000000001F151F195D281E08A7
:1000C000A5000830F8001F08C73978049F002508EC
:1000D0003B3C031C74282508283C0318732822087D
:1000E0000139A404742824141F151F1975281E082B
:1000F000A5001030F8001F08C73978049F002508B4
:100100003B3C031C8C282508283C03188B2822081C
:100110000239A4048C28A4141F151F198D281E0849
:10012000A5001830F8001F08C73978049F0025087B
:100130003B3C031CA4282508283C0318A3282208BC
:100140000439A404A42824151F151F19A5281E0866
:10015000A5002030F8001F08C73978049F00250843
:100160003B3C031CBC282508283C0318BB2822085C
:100170000839A404BC28A4151F151F19BD281E0882
:10018000A5002830F8001F08C73978049F0025080B
:100190003B3C031CD4282508283C0318D3282208FC
:1001A0001039A404D42824161F151F19D5281E0899
:1001B000A5003030F8001F08C73978049F002508D3
:1001C0003B3C031CEC282508283C0318EB2822089C
:1001D0002039A404EC28A4161F151F19ED281E08A9
:1001E000A50025083B3C031CFE282508283C0318D5
:1001F000FD2822084039A404FE2824172408A20060
:1002000083160614831206180A29230F08290929C0
:10021000A30A0B29A3012308323C031CA417A40939
:1002200024089300831614181729831212298312A5
:040230004E286300F1
:04400E00383FFC3FFC
:00000001FF
;PIC16F88
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.LST
0,0 → 1,454
CCS PCM C Compiler, Version 3.245, 27853 16-IV-06 23:31
 
Filename: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.lst
 
ROM used: 282 words (7%)
Largest free fragment is 2048
RAM used: 12 (7%) at main() level
12 (7%) worst case
Stack: 0 locations
 
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 004
0003: NOP
.................... #include ".\cidla.h"
.................... #include <16F88.h>
.................... //////// Standard Header file for the PIC16F88 device ////////////////
.................... #device PIC16F88
.................... #list
....................
.................... #device adc=8
.................... #fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO
.................... #use delay(clock=4000000,RESTART_WDT)
....................
....................
.................... //#include <stdlib.h>
....................
.................... #use rs232(baud=110,parity=N,xmit=PIN_B1,rcv=PIN_B0,bits=8,restart_wdt)
....................
.................... #define IRRX PIN_B0
....................
.................... #define TRESHOLD_MAX 60 // rozhodovaci uroven pro cidla cerna/bila
.................... #define TRESHOLD_MIN 40
.................... #define CIHLA 50 // doba, po kterou musi byt detekovana cihla
....................
.................... unsigned int8 radius; // co cidla vidi
.................... unsigned int8 last_radius; // rozsah
.................... unsigned int8 last_cidla; // co cidla videla minule
.................... unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla
....................
.................... //tuning
.................... /*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM
....................
.................... //Vystup PWM je na PIN_B3
.................... ////////////////////////////////////////////////////////////////////////////////
.................... void pulzovani() // postupne rozsvecuje a zhasina podsvetleni
.................... {
.................... unsigned int8 i,n;
.................... for(n=0;n<=3;n++)
.................... {
.................... for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani
.................... for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani
.................... }
.................... }
.................... */
.................... ////////////////////////////////////////////////////////////////////////////////
.................... void main()
.................... {
0004: CLRF 04
0005: MOVLW 1F
0006: ANDWF 03,F
0007: MOVLW 60
0008: BSF 03.5
0009: MOVWF 0F
000A: BCF 06.1
000B: BCF 03.5
000C: BSF 06.1
000D: BSF 03.5
000E: BCF 1F.4
000F: BCF 1F.5
0010: MOVF 1B,W
0011: ANDLW 80
0012: MOVWF 1B
0013: MOVLW 07
0014: MOVWF 1C
.................... int8 cidla;
.................... unsigned int8 a;
.................... unsigned int8 n;
....................
.................... setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD);
0015: BCF 1F.4
0016: BCF 1F.5
0017: MOVF 1B,W
0018: ANDLW 80
0019: IORLW 7F
001A: MOVWF 1B
.................... setup_adc(ADC_CLOCK_INTERNAL);
001B: BCF 1F.6
001C: BCF 03.5
001D: BSF 1F.6
001E: BSF 1F.7
001F: BSF 03.5
0020: BCF 1F.7
0021: BCF 03.5
0022: BSF 1F.0
.................... setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED);
0023: BCF 14.5
0024: BSF 03.5
0025: BCF 06.2
0026: BSF 06.1
0027: BSF 06.4
0028: MOVLW 35
0029: BCF 03.5
002A: MOVWF 14
002B: MOVLW 40
002C: BSF 03.5
002D: MOVWF 14
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
002E: MOVF 01,W
002F: ANDLW C7
0030: IORLW 08
0031: MOVWF 01
.................... setup_timer_1(T1_DISABLED);
0032: BCF 03.5
0033: CLRF 10
.................... setup_timer_2(T2_DISABLED,0,1);
0034: MOVLW 00
0035: MOVWF 78
0036: MOVWF 12
0037: MOVLW 00
0038: BSF 03.5
0039: MOVWF 12
.................... setup_comparator(NC_NC_NC_NC);
003A: MOVLW 07
003B: MOVWF 1C
003C: MOVF 05,W
003D: CLRWDT
003E: MOVLW 02
003F: MOVWF 77
0040: DECFSZ 77,F
0041: GOTO 040
0042: NOP
0043: NOP
0044: MOVF 1C,W
0045: BCF 03.5
0046: BCF 0D.6
.................... setup_vref(FALSE);
0047: BSF 03.5
0048: CLRF 1D
....................
.................... last_radius=0b00001000; // minimalni rozsah snimani od stredu
0049: MOVLW 08
004A: BCF 03.5
004B: MOVWF 21
.................... last_cidla=0b00001000;
004C: MOVWF 22
....................
.................... shure=0;
004D: CLRF 23
....................
.................... while(true)
.................... {
.................... set_adc_channel(0);
004E: MOVLW 00
004F: MOVWF 78
0050: MOVF 1F,W
0051: ANDLW C7
0052: IORWF 78,W
0053: MOVWF 1F
.................... cidla=0;
0054: CLRF 24
.................... Delay_us(10);
0055: CLRWDT
0056: MOVLW 02
0057: MOVWF 77
0058: DECFSZ 77,F
0059: GOTO 058
005A: NOP
005B: NOP
.................... a=read_adc();
005C: BSF 1F.2
005D: BTFSC 1F.2
005E: GOTO 05D
005F: MOVF 1E,W
0060: MOVWF 25
....................
.................... set_adc_channel(1);
0061: MOVLW 08
0062: MOVWF 78
0063: MOVF 1F,W
0064: ANDLW C7
0065: IORWF 78,W
0066: MOVWF 1F
.................... if(a<TRESHOLD_MAX) //hystereze cidel
0067: MOVF 25,W
0068: SUBLW 3B
0069: BTFSS 03.0
006A: GOTO 074
.................... {
.................... if(a>TRESHOLD_MIN)
006B: MOVF 25,W
006C: SUBLW 28
006D: BTFSC 03.0
006E: GOTO 073
.................... {
.................... cidla |= (last_cidla & 0b00000001);
006F: MOVF 22,W
0070: ANDLW 01
0071: IORWF 24,F
.................... }
.................... else cidla |= 0b00000001;
0072: GOTO 074
0073: BSF 24.0
.................... }
....................
.................... a=read_adc();
0074: BSF 1F.2
0075: BTFSC 1F.2
0076: GOTO 075
0077: MOVF 1E,W
0078: MOVWF 25
....................
.................... set_adc_channel(2);
0079: MOVLW 10
007A: MOVWF 78
007B: MOVF 1F,W
007C: ANDLW C7
007D: IORWF 78,W
007E: MOVWF 1F
.................... if(a<TRESHOLD_MAX)
007F: MOVF 25,W
0080: SUBLW 3B
0081: BTFSS 03.0
0082: GOTO 08C
.................... {
.................... if(a>TRESHOLD_MIN)
0083: MOVF 25,W
0084: SUBLW 28
0085: BTFSC 03.0
0086: GOTO 08B
.................... {
.................... cidla |= (last_cidla & 0b00000010);
0087: MOVF 22,W
0088: ANDLW 02
0089: IORWF 24,F
.................... }
.................... else cidla |= 0b00000010;
008A: GOTO 08C
008B: BSF 24.1
.................... }
....................
.................... a=read_adc();
008C: BSF 1F.2
008D: BTFSC 1F.2
008E: GOTO 08D
008F: MOVF 1E,W
0090: MOVWF 25
....................
.................... set_adc_channel(3);
0091: MOVLW 18
0092: MOVWF 78
0093: MOVF 1F,W
0094: ANDLW C7
0095: IORWF 78,W
0096: MOVWF 1F
.................... if(a<TRESHOLD_MAX)
0097: MOVF 25,W
0098: SUBLW 3B
0099: BTFSS 03.0
009A: GOTO 0A4
.................... {
.................... if(a>TRESHOLD_MIN)
009B: MOVF 25,W
009C: SUBLW 28
009D: BTFSC 03.0
009E: GOTO 0A3
.................... {
.................... cidla |= (last_cidla & 0b00000100);
009F: MOVF 22,W
00A0: ANDLW 04
00A1: IORWF 24,F
.................... }
.................... else cidla |= 0b00000100;
00A2: GOTO 0A4
00A3: BSF 24.2
.................... }
....................
.................... a=read_adc();
00A4: BSF 1F.2
00A5: BTFSC 1F.2
00A6: GOTO 0A5
00A7: MOVF 1E,W
00A8: MOVWF 25
....................
.................... set_adc_channel(4);
00A9: MOVLW 20
00AA: MOVWF 78
00AB: MOVF 1F,W
00AC: ANDLW C7
00AD: IORWF 78,W
00AE: MOVWF 1F
.................... if(a<TRESHOLD_MAX)
00AF: MOVF 25,W
00B0: SUBLW 3B
00B1: BTFSS 03.0
00B2: GOTO 0BC
.................... {
.................... if(a>TRESHOLD_MIN)
00B3: MOVF 25,W
00B4: SUBLW 28
00B5: BTFSC 03.0
00B6: GOTO 0BB
.................... {
.................... cidla |= (last_cidla & 0b00001000);
00B7: MOVF 22,W
00B8: ANDLW 08
00B9: IORWF 24,F
.................... }
.................... else cidla |= 0b00001000;
00BA: GOTO 0BC
00BB: BSF 24.3
.................... }
.................... a=read_adc();
00BC: BSF 1F.2
00BD: BTFSC 1F.2
00BE: GOTO 0BD
00BF: MOVF 1E,W
00C0: MOVWF 25
....................
.................... set_adc_channel(5);
00C1: MOVLW 28
00C2: MOVWF 78
00C3: MOVF 1F,W
00C4: ANDLW C7
00C5: IORWF 78,W
00C6: MOVWF 1F
....................
.................... if(a<TRESHOLD_MAX)
00C7: MOVF 25,W
00C8: SUBLW 3B
00C9: BTFSS 03.0
00CA: GOTO 0D4
.................... {
.................... if(a>TRESHOLD_MIN)
00CB: MOVF 25,W
00CC: SUBLW 28
00CD: BTFSC 03.0
00CE: GOTO 0D3
.................... {
.................... cidla |= (last_cidla & 0b00010000);
00CF: MOVF 22,W
00D0: ANDLW 10
00D1: IORWF 24,F
.................... }
.................... else cidla |= 0b00010000;
00D2: GOTO 0D4
00D3: BSF 24.4
.................... }
.................... a=read_adc();
00D4: BSF 1F.2
00D5: BTFSC 1F.2
00D6: GOTO 0D5
00D7: MOVF 1E,W
00D8: MOVWF 25
....................
.................... set_adc_channel(6);
00D9: MOVLW 30
00DA: MOVWF 78
00DB: MOVF 1F,W
00DC: ANDLW C7
00DD: IORWF 78,W
00DE: MOVWF 1F
.................... if(a<TRESHOLD_MAX)
00DF: MOVF 25,W
00E0: SUBLW 3B
00E1: BTFSS 03.0
00E2: GOTO 0EC
.................... {
.................... if(a>TRESHOLD_MIN)
00E3: MOVF 25,W
00E4: SUBLW 28
00E5: BTFSC 03.0
00E6: GOTO 0EB
.................... {
.................... cidla |= (last_cidla & 0b00100000);
00E7: MOVF 22,W
00E8: ANDLW 20
00E9: IORWF 24,F
.................... }
.................... else cidla |= 0b00100000;
00EA: GOTO 0EC
00EB: BSF 24.5
.................... }
.................... a=read_adc();
00EC: BSF 1F.2
00ED: BTFSC 1F.2
00EE: GOTO 0ED
00EF: MOVF 1E,W
00F0: MOVWF 25
....................
.................... if(a<TRESHOLD_MAX)
00F1: MOVF 25,W
00F2: SUBLW 3B
00F3: BTFSS 03.0
00F4: GOTO 0FE
.................... {
.................... if(a>TRESHOLD_MIN)
00F5: MOVF 25,W
00F6: SUBLW 28
00F7: BTFSC 03.0
00F8: GOTO 0FD
.................... {
.................... cidla |=(last_cidla & 0b01000000);
00F9: MOVF 22,W
00FA: ANDLW 40
00FB: IORWF 24,F
.................... }
.................... else cidla |= 0b01000000;
00FC: GOTO 0FE
00FD: BSF 24.6
.................... }
....................
.................... last_cidla=cidla;
00FE: MOVF 24,W
00FF: MOVWF 22
....................
.................... if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;};
0100: BSF 03.5
0101: BSF 06.0
0102: BCF 03.5
0103: BTFSC 06.0
0104: GOTO 10A
0105: INCFSZ 23,W
0106: GOTO 108
0107: GOTO 109
0108: INCF 23,F
0109: GOTO 10B
010A: CLRF 23
.................... if (shure>CIHLA) cidla|=0b10000000;
010B: MOVF 23,W
010C: SUBLW 32
010D: BTFSS 03.0
010E: BSF 24.7
....................
.................... cidla=~cidla;
010F: COMF 24,F
.................... spi_write(cidla);
0110: MOVF 24,W
0111: MOVWF 13
0112: BSF 03.5
0113: BTFSC 14.0
0114: GOTO 117
0115: BCF 03.5
0116: GOTO 112
.................... }
0117: BCF 03.5
0118: GOTO 04E
.................... }
0119: SLEEP
 
Configuration Fuses:
Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IO
Word 2: 3FFC NOFCMEN NOIESO
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.PJT
0,0 → 1,44
[PROJECT]
Target=cidla.HEX
Development_Mode=
Processor=0x688F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\dr
Library=
LinkerScript=
 
[Target Data]
FileList=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[cidla.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=cidla.c
 
[Windows]
0=0000 cidla.c 0 0 796 451 3 0
 
[Opened Files]
1=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c
2=C:\Program Files\PICC\devices\16F88.h
3=C:\Program Files\PICC\drivers\stdlib.h
4=C:\Program Files\PICC\drivers\stddef.h
5=C:\Program Files\PICC\drivers\string.h
6=C:\Program Files\PICC\drivers\ctype.h
7=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.h
8=
[Units]
Count=1
1=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c (main)
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.SYM
0,0 → 1,45
015-016 CCP_1
015 CCP_1_LOW
016 CCP_1_HIGH
020 radius
021 last_radius
022 last_cidla
023 shure
024 main.cidla
025 main.a
026 main.n
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
079 @SCRATCH
07A @SCRATCH
07B @SCRATCH
09C.6 C1OUT
09C.7 C2OUT
 
0004 main
0004 @cinit
 
Project Files:
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.h
C:\Program Files\PICC\devices\16F88.h
 
Units:
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c (main)
 
Compiler Settings:
Processor: PIC16F88
Pointer Size: 8
ADC Range: 0-255
Opt Level: 9
Short,Int,Long: 1,8,16
 
Output Files:
Errors: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.err
INHX8: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.hex
Symbols: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.sym
List: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.lst
Debug/COFF: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.cof
Call Tree: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.tre
Statistics: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.sta
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.c
0,0 → 1,147
#include ".\cidla.h"
//#include <stdlib.h>
 
#use rs232(baud=110,parity=N,xmit=PIN_B1,rcv=PIN_B0,bits=8,restart_wdt)
 
#define IRRX PIN_B0
 
#define TRESHOLD_MAX 60 // rozhodovaci uroven pro cidla cerna/bila
#define TRESHOLD_MIN 40
#define CIHLA 50 // doba, po kterou musi byt detekovana cihla
 
unsigned int8 radius; // co cidla vidi
unsigned int8 last_radius; // rozsah
unsigned int8 last_cidla; // co cidla videla minule
unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla
 
//tuning
/*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM
 
//Vystup PWM je na PIN_B3
////////////////////////////////////////////////////////////////////////////////
void pulzovani() // postupne rozsvecuje a zhasina podsvetleni
{
unsigned int8 i,n;
for(n=0;n<=3;n++)
{
for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani
for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani
}
}
*/
////////////////////////////////////////////////////////////////////////////////
void main()
{
int8 cidla;
unsigned int8 a;
unsigned int8 n;
 
setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
last_radius=0b00001000; // minimalni rozsah snimani od stredu
last_cidla=0b00001000;
 
shure=0;
 
while(true)
{
set_adc_channel(0);
cidla=0;
Delay_us(10);
a=read_adc();
 
set_adc_channel(1);
if(a<TRESHOLD_MAX) //hystereze cidel
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000001);
}
else cidla |= 0b00000001;
}
 
a=read_adc();
 
set_adc_channel(2);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000010);
}
else cidla |= 0b00000010;
}
 
a=read_adc();
 
set_adc_channel(3);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000100);
}
else cidla |= 0b00000100;
}
 
a=read_adc();
 
set_adc_channel(4);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00001000);
}
else cidla |= 0b00001000;
}
a=read_adc();
 
set_adc_channel(5);
 
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00010000);
}
else cidla |= 0b00010000;
}
a=read_adc();
 
set_adc_channel(6);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00100000);
}
else cidla |= 0b00100000;
}
a=read_adc();
 
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |=(last_cidla & 0b01000000);
}
else cidla |= 0b01000000;
}
 
last_cidla=cidla;
 
if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;};
if (shure>CIHLA) cidla|=0b10000000;
 
cidla=~cidla;
spi_write(cidla);
}
}
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.cof
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.err
0,0 → 1,2
No Errors
0 Errors, 0 Warnings.
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.h
0,0 → 1,5
#include <16F88.h>
#device adc=8
#fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO
#use delay(clock=4000000,RESTART_WDT)
 
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.sta
0,0 → 1,28
 
ROM used: 282 (7%)
282 (7%) including unused fragments
 
1 Average locations per line
3 Average locations per statement
 
RAM used: 12 (7%) at main() level
12 (7%) worst case
 
Lines Stmts % Files
----- ----- --- -----
148 83 100 D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c
6 0 0 D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.h
279 0 0 C:\Program Files\PICC\devices\16F88.h
----- -----
866 166 Total
 
Page ROM % RAM Functions:
---- --- --- --- ----------
0 278 99 3 main
 
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-007FF 278 1766
00800-00FFF 0 2048
 
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/cidla.tre
0,0 → 1,3
ÀÄcidla
ÀÄmain 0/278 Ram=3
ÀÄ??0??
/roboti/3Orbis/bak/05 bez RTOS -dacela funkcni objizdka/slave/macro.ini