o: ActiveSupport::Cache::Entry :@compressedF: @value"ξ‡"η‡
Designs/ROBOTS/Merkur/SW/turn_L/tank.BAK
1
#include "tank.h"
2

  
3
#define DEBUG
4

  
5
#define  TXo PIN_A3           // To the transmitter modulator
6
#include "AX25.c"             // podprogram pro prenos telemetrie
7

  
8
unsigned int8 sensors;        // pomocna promenna pro cteni cidel na caru
9
unsigned int8 line;           // na ktere strane byla detekovana cara
10
unsigned int8 speed;          // rychlost zataceni
11
unsigned int8 rovinka;        // pocitadlo pro zjisteni rovneho useku
12
unsigned int8 last;           // kde byla cara, kdyz byly minule cidla mimo
13
unsigned int8 movement;       // obsahuje aktualni smer zataceni
14
unsigned int8 dira;           // pocita dobu po kterou je ztracena cara
15

  
16
// Konstanty pro dynamiku pohybu
17
#define T_DIRA       87      // po jakem case zataceni se detekuje dira
18
#define INC_SPEED    1        // prirustek rychlosti v jednom kroku
19
#define FW_POMALU    230      // trochu mimo caru vnitrni pas
20
#define FW_ZATACKA   200      // rychlost vnejsiho kola pri zataceni
21
#define FW_STREDNE   240      // trochu mimo caru vnejsi pas
22
#define COUVANI      600      // couvnuti zpet na caru, po detekci diry
23
#define PRES_DIRU    250
24
#define MAX_ROVINKA  (255-FW_STREDNE)
25
#define TRESHOLD     10        // rozhodovaci uroven komparatoru, 0xF = 0.75*Vdd
26
#define BUMPER_TRESHOLD 128
27
#define CIK_CAK      30000
28
#define T_CIHLA      50      // perioda detekce cihly
29

  
30
//motory            //Napred vypnout potom zapnout!
31
#define FR         output_low(PIN_B5); output_high(PIN_B4)  // Vpred
32
#define FL         output_low(PIN_B7); output_high(PIN_B6)
33
#define BR         output_low(PIN_B4); output_high(PIN_B5)  // Vzad
34
#define BL         output_low(PIN_B6); output_high(PIN_B7)
35
#define STOPR      output_low(PIN_B4);output_low(PIN_B5)    // Zastav
36
#define STOPL      output_low(PIN_B6);output_low(PIN_B7)
37

  
38
#define L 0b10  // left
39
#define R 0b01  // right
40
#define S 0b11  // straight
41

  
42
//cidla
43
#define RSENSOR    C2OUT      // Senzory na caru
44
#define LSENSOR    C1OUT
45
#define BUMPER     PIN_A4     // Senzor na cihlu
46

  
47
#define DIAG_SERVO      PIN_B3   // Propojka pro diagnosticky mod
48
#define DIAG_SENSORS    PIN_B2   // Propojka pro diagnosticky mod
49

  
50
#DEFINE SOUND_HI   PIN_A6     // komplementarni vystupy pro piezo pipak
51
#DEFINE SOUND_LO   PIN_A7
52

  
53
char AXstring[40];   // Buffer pro prenos telemetrie
54

  
55
// makro pro PWM
56
#define GO(motor, direction, power) if(get_timer0()<=power) \
57
{direction##motor;} else {stop##motor;}
58

  
59
#int_TIMER2
60
void TIMER2_isr()
61
{
62
   if (speed<255) speed+=INC_SPEED;
63
   if (rovinka<MAX_ROVINKA) rovinka++;
64
   if (dira<=T_DIRA) dira++;
65
}
66
// Primitivni Pipani
67
void beep(unsigned int16 period, unsigned int16 length)
68
{
69
   unsigned int16 nn;
70

  
71
   for(nn=length; nn>0; nn--)
72
   {
73
     output_high(SOUND_HI);output_low(SOUND_LO);
74
     delay_us(period);
75
     output_high(SOUND_LO);output_low(SOUND_HI);
76
     delay_us(period);
77
   }
78
}
79
/******************************************************************************/
80
void diagnostika()
81
{
82
   unsigned int16 n;
83

  
84
   while (input(DIAG_SERVO))   // Propojka, ktera spousti diagnostiku
85
   {
86
      for (n=500; n<800; n+=100)
87
      {
88
         beep(n,n); //beep UP
89
      };
90
      Delay_ms(1000);
91
      //zastav vse
92
      STOPL; STOPR;
93
      //pravy pas
94
      FR; Delay_ms(1000); STOPR; Delay_ms(1000);
95
      BR; Delay_ms(1000); STOPR; Delay_ms(1000);
96
      Beep(880,100); Delay_ms(1000);
97
      //levy pas
98
      FL; Delay_ms(1000); STOPL; Delay_ms(1000);
99
      BL; Delay_ms(1000); STOPL; Delay_ms(1000);
100
      Beep(880,100); Delay_ms(1000);
101
      //oba pasy
102
      FL; FR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);
103
      BL; BR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);
104
   };
105
   while (input(DIAG_SENSORS))
106
   {
107
      if (RSENSOR) beep(900,500);
108
      if (LSENSOR) beep(800,500);
109
      if ((read_adc(ADC_READ_ONLY)<BUMPER_TRESHOLD)) beep(1000,500);
110
   };
111
}
112
///////////////////////////////////////////////////////////////////////////////
113
void cikcak()
114
{
115
unsigned int16 n;
116
sem1:
117
   n=CIK_CAK;
118
	while (0==RSENSOR||LSENSOR)       // zkontroluj caru
119
	{
120
		if (n==CIK_CAK)							// zmen smer zataceni
121
		{
122
			n=0;
123
			switch(movement)
124
			{
125
			case L:
126
						FL;BR;
127
						movement=R;
128
					break;
129
			case R:
130
						FR;BL;
131
						movement=L;
132
					break;
133
         case S:
134
				     FL;BR;
135
				     movement=R;
136
                 n=CIK_CAK/2;
137
			      break;
138
			}
139
		}
140
		n++;
141
	}
142
	STOPL;STOPR;
143
   line = RSENSOR;         // cteni senzoru na caru
144
   line |= LSENSOR << 1;
145
   if (line==0) goto sem1;
146
   												// nasli jsme caru
147
	line=S;
148
}
149
///////////////////////////////////////////////////////////////////////////////
150
void objizdka()                     // objede cihlu
151
{
152
unsigned int16 n;
153

  
154
	BL;BR;Delay_ms(200);
155
	STOPR;STOPL;
156
	beep(900,1000);
157
  // movement=S;
158
   //cikcak();
159

  
160
   BL; FR; Delay_ms(215);           // otoc se 70? do leva
161

  
162
   FR; FL; Delay_ms(600);           // popojed rovne
163

  
164
   BR; Delay_ms(50);               // otoc se 90? do prava
165
   STOPR; FL; Delay_ms(700);
166

  
167
   FR; FL; Delay_ms(100);           // popojed rovne na slepo
168
   for(n=600;n>0;n--)               // popojed rovne ale kontroluj caru
169
   {
170
      line = RSENSOR;         // cteni senzoru na caru
171
      line |= LSENSOR << 1;
172
      if (line!=0) {Delay_ms(50); break;}       // kdyz narazis na caru, za chvili zastav
173
      Delay_ms(1);
174
   }
175

  
176
   BL;                              // otoc se 60? do leva
177
   for(n=600;n>0;n--)
178
   {
179
      line = RSENSOR;         // cteni senzoru na caru
180
      line |= LSENSOR << 1;
181
      if (line!=0) break;
182
      Delay_ms(1);
183
   }
184
   STOPR; STOPL;
185

  
186
   movement=R;
187
   cikcak();
188
   dira=0;
189
}
190
///////////////////////////////////////////////////////////////////////////////
191
void prejeddiru()                    // vyresi diru
192
{
193
unsigned int16 n;
194
unsigned int8 speed_dira;
195

  
196
   STOPL;STOPR;
197
   speed_dira=speed;
198
   beep(1000,500);
199
   switch (movement)                            //vrat se zpet na caru
200
   {
201
   case L:
202
         for (n=COUVANI;n>0;n--) {GO(R,B,speed_dira); Delay_ms(1);}
203
         STOPL;STOPR;
204
      break;
205
   case R:
206
         for (n=COUVANI;n>0;n--) {GO(L,B,speed_dira); Delay_ms(1);}
207
         STOPL;STOPR;
208
      break;
209
   case S:
210
         goto sem;
211
      break;
212
   }
213
   beep(800,500);
214

  
215
   line=0;
216
   FR; BL; Delay_ms(300);                 // otoc se na caru
217
   while(line==0)
218
   {
219
      line = RSENSOR;         // cteni senzoru na caru
220
      line |= LSENSOR << 1;
221
   }
222
   FL;BR; Delay_ms(60);
223
   STOPL; STOPR;
224

  
225
   FL; BR; Delay_ms(500);
226
   STOPL; STOPR;
227

  
228
   Delay_ms(1000);
229

  
230
   FR;FL;                     //popojed rovne
231
   for(n=PRES_DIRU;n>0;n--)
232
   {
233
      line = RSENSOR;         // cteni senzoru na caru
234
      line |= LSENSOR << 1;
235
      if (line!=0) break;
236
      Delay_ms(1);
237
   }
238
sem:
239
   STOPL; STOPR;
240
   movement=S;
241
   cikcak();                                    // najdi caru
242
   dira=0;
243
}
244
///////////////////////////////////////////////////////////////////////////////
245
void main()
246
{
247
   unsigned int16 n; // pro FOR
248

  
249
   STOPL; STOPR;     // prepne vystupy na ovladani motoru na output a zastavi
250

  
251
   setup_oscillator(OSC_4MHZ|OSC_INTRC);     // 4 MHz interni RC oscilator
252

  
253
   port_b_pullups(TRUE);      // pullups pro piano na diagnostiku
254
   setup_spi(FALSE);
255
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);  // Casovac pro PWM
256

  
257
   setup_timer_2(T2_DIV_BY_4,255,10);    // Casovac pro regulaci
258
                                         // preruseni kazdych 10ms
259
   setup_adc_ports(sAN2|VSS_VDD);      // nastaveni A/D prevodniku pro naraznik
260
   setup_adc(ADC_CLOCK_INTERNAL);
261
   set_adc_channel(2);
262
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);   // Casovac pro naraznik
263
   setup_ccp1(CCP_COMPARE_RESET_TIMER);
264
   CCP_1=(2^10)-1;                        // prevod kazdou 1ms
265

  
266
   setup_comparator(A0_VR_A1_VR);   // inicializace komparatoru pro cidla cary
267
   setup_vref(VREF_HIGH|TRESHOLD);        // 32 kroku od 0.25 do 0.75 Vdd
268

  
269
   Beep(1000,200);     //double beep
270
   Delay_ms(50);
271
   Beep(1000,200);
272
   Delay_ms(1000);      // 1s
273

  
274
         // povoleni rizeni rychlosti zataceni pres preruseni
275
   enable_interrupts(INT_TIMER2);
276
   enable_interrupts(GLOBAL);
277

  
278
/*---------------------------------------------------------------------------*/
279
   sensors=S;
280
   line=S;
281
   last=S;
282
   movement=S;
283
   speed=FW_POMALU;
284

  
285
   diagnostika();
286
 //  cikcak();     // toc se, abys nasel caru
287
   Delay_ms(500);
288
   Beep(1000,200);
289
   Delay_ms(500);
290

  
291
   while(true)       // hlavni smycka (jizda podle cary)
292
   {
293
      sensors = RSENSOR;         // cteni senzoru na caru
294
      sensors |= LSENSOR << 1;
295

  
296
      if ((read_adc(ADC_READ_ONLY)<BUMPER_TRESHOLD) && (dira<=T_CIHLA)) objizdka();
297

  
298
      switch (sensors)  // zatacej podle toho, kde vidis caru
299
      {
300
         case S:                          // rovne
301
            FL; FR;  // pokud se jede dlouho rovne, tak pridej
302
            dira=0;
303
            movement=S;
304
            continue;
305
         case L:                          // trochu vlevo
306
            GO(L, F, FW_POMALU+rovinka); GO(R, F, FW_STREDNE+rovinka);
307
            line=L;
308
            dira=0;
309
            movement=L;
310
            continue;
311
         case R:                          // trochu vpravo
312
            GO(R, F, FW_POMALU+rovinka); GO(L, F, FW_STREDNE+rovinka);
313
            line=R;
314
            dira=0;
315
            movement=R;
316
            continue;
317
         default:       // kdyz jsou obe cidla mimo caru, tak pokracuj dal
318
      }
319
   rovinka=0;
320
      if (dira>=T_DIRA) prejeddiru();
321
      if (last!=line)     // pokud si prejel caru z jedne strany na druhou stranu, tak zabrzdi
322
      {
323
         last=line;
324
         speed=FW_ZATACKA;
325
      }
326
      if (L==line)  // kdyz jsou obe cidla mimo caru, zatoc na caru
327
      {
328
         STOPL;
329
         GO(R, F, speed);
330
         movement=L;
331
      }
332
      else
333
      {
334
         STOPR;
335
         GO(L, F, speed);
336
         movement=R;
337
      }
338
   } // while(true)
339
}
340

  
Designs/ROBOTS/Merkur/SW/turn_L/tank.PJT
1
[PROJECT]
2
Target=tank.HEX
3
Development_Mode=
4
Processor=0x688F
5
ToolSuite=CCS
6

  
7
[Directories]
8
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\drivers\;C:\library\CCS;
9
Library=
10
LinkerScript=
11

  
12
[Target Data]
13
FileList=tank.c;
14
BuildTool=C-COMPILER
15
OptionString=+FM
16
AdditionalOptionString=
17
BuildRequired=1
18

  
19
[tank.c]
20
Type=4
21
Path=
22
FileList=
23
BuildTool=
24
OptionString=
25
AdditionalOptionString=
26

  
27
[mru-list]
28
1=tank.c
29

  
30
[Windows]
31
0=0000 tank.c 0 0 796 451 3 0
32

  
33
[Opened Files]
34
1=D:\KAKLIK\programy\PIC_C\roboti\merkur\PIC16F88\turn_L\tank.c
35
2=C:\Program Files\PICC\devices\16F88.h
36
3=
37
4=C:\Program Files\PICC\devices\16F88.h
38
5=
39
6=
40
7=
Designs/ROBOTS/Merkur/SW/turn_L/tank.LST
1
CCS PCM C Compiler, Version 3.221, 27853               26-IV-05 21:32
2

  
3
               Filename: D:\KAKLIK\programy\PIC_C\roboti\merkur\PIC16F88\turn_L\tank.LST
4

  
5
               ROM used: 1705 words (42%)
6
                         Largest free fragment is 2048
7
               RAM used: 87 (50%) at main() level
8
                         98 (56%) worst case
9
               Stack:    4 worst case (3 in main + 1 for interrupts)
10

  
11
*
12
0000:  MOVLW  00
13
0001:  MOVWF  0A
14
0002:  GOTO   4E8
15
0003:  NOP
16
0004:  MOVWF  7F
17
0005:  SWAPF  03,W
18
0006:  CLRF   03
19
0007:  MOVWF  21
20
0008:  MOVF   7F,W
21
0009:  MOVWF  20
22
000A:  MOVF   0A,W
23
000B:  MOVWF  28
24
000C:  CLRF   0A
25
000D:  SWAPF  20,F
26
000E:  MOVF   04,W
27
000F:  MOVWF  22
28
0010:  MOVF   77,W
29
0011:  MOVWF  23
30
0012:  MOVF   78,W
31
0013:  MOVWF  24
32
0014:  MOVF   79,W
33
0015:  MOVWF  25
34
0016:  MOVF   7A,W
35
0017:  MOVWF  26
36
0018:  MOVF   7B,W
37
0019:  MOVWF  27
38
001A:  BCF    03.7
39
001B:  BCF    03.5
40
001C:  MOVLW  8C
41
001D:  MOVWF  04
42
001E:  BTFSS  00.1
43
001F:  GOTO   022
44
0020:  BTFSC  0C.1
45
0021:  GOTO   035
46
0022:  MOVF   22,W
47
0023:  MOVWF  04
48
0024:  MOVF   23,W
49
0025:  MOVWF  77
50
0026:  MOVF   24,W
51
0027:  MOVWF  78
52
0028:  MOVF   25,W
53
0029:  MOVWF  79
54
002A:  MOVF   26,W
55
002B:  MOVWF  7A
56
002C:  MOVF   27,W
57
002D:  MOVWF  7B
58
002E:  MOVF   28,W
59
002F:  MOVWF  0A
60
0030:  SWAPF  21,W
61
0031:  MOVWF  03
62
0032:  SWAPF  7F,F
63
0033:  SWAPF  7F,W
64
0034:  RETFIE
65
0035:  BCF    0A.3
66
0036:  GOTO   037
67
....................  #include "tank.h" 
68
....................  #include <16F88.h> 
69
....................  //////// Standard Header file for the PIC16F88 device ////////////////  
70
.................... #device PIC16F88  
71
.................... #list  
72
....................  
73
.................... #device adc=8  
74
.................... #fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO  
75
.................... #use delay(clock=4000000)  
76
*
77
0047:  MOVLW  12
78
0048:  BSF    03.5
79
0049:  SUBWF  22,F
80
004A:  BTFSS  03.0
81
004B:  GOTO   05A
82
004C:  MOVLW  A2
83
004D:  MOVWF  04
84
004E:  MOVLW  FC
85
004F:  ANDWF  00,F
86
0050:  BCF    03.0
87
0051:  RRF    00,F
88
0052:  RRF    00,F
89
0053:  MOVF   00,W
90
0054:  BTFSC  03.2
91
0055:  GOTO   05A
92
0056:  GOTO   058
93
0057:  NOP
94
0058:  DECFSZ 00,F
95
0059:  GOTO   057
96
005A:  BCF    03.5
97
005B:  RETLW  00
98
*
99
0088:  MOVLW  75
100
0089:  MOVWF  04
101
008A:  MOVF   00,W
102
008B:  BTFSC  03.2
103
008C:  GOTO   09C
104
008D:  MOVLW  01
105
008E:  MOVWF  78
106
008F:  CLRF   77
107
0090:  DECFSZ 77,F
108
0091:  GOTO   090
109
0092:  DECFSZ 78,F
110
0093:  GOTO   08F
111
0094:  MOVLW  4A
112
0095:  MOVWF  77
113
0096:  DECFSZ 77,F
114
0097:  GOTO   096
115
0098:  NOP
116
0099:  NOP
117
009A:  DECFSZ 00,F
118
009B:  GOTO   08D
119
009C:  RETLW  00
120
....................   
121
....................  
122
....................   
123
.................... #define DEBUG  
124
....................   
125
.................... #define  TXo PIN_A3           // To the transmitter modulator  
126
.................... #include "AX25.c"             // podprogram pro prenos telemetrie 
127
.................... #list  
128
....................  
129
....................   
130
.................... unsigned int8 sensors;        // pomocna promenna pro cteni cidel na caru  
131
.................... unsigned int8 line;           // na ktere strane byla detekovana cara  
132
.................... unsigned int8 speed;          // rychlost zataceni  
133
.................... unsigned int8 rovinka;        // pocitadlo pro zjisteni rovneho useku  
134
.................... unsigned int8 last;           // kde byla cara, kdyz byly minule cidla mimo  
135
.................... unsigned int8 movement;       // obsahuje aktualni smer zataceni  
136
.................... unsigned int8 dira;           // pocita dobu po kterou je ztracena cara  
137
....................   
138
.................... // Konstanty pro dynamiku pohybu  
139
.................... #define T_DIRA       87      // po jakem case zataceni se detekuje dira  
140
.................... #define INC_SPEED    1        // prirustek rychlosti v jednom kroku  
141
.................... #define FW_POMALU    230      // trochu mimo caru vnitrni pas  
142
.................... #define FW_ZATACKA   200      // rychlost vnejsiho kola pri zataceni  
143
.................... #define FW_STREDNE   240      // trochu mimo caru vnejsi pas  
144
.................... #define COUVANI      600      // couvnuti zpet na caru, po detekci diry  
145
.................... #define PRES_DIRU    250  
146
.................... #define MAX_ROVINKA  (255-FW_STREDNE)  
147
.................... #define TRESHOLD     10        // rozhodovaci uroven komparatoru, 0xF = 0.75*Vdd  
148
.................... #define BUMPER_TRESHOLD 128  
149
.................... #define CIK_CAK      30000  
150
.................... #define T_CIHLA      50      // perioda detekce cihly  
151
....................   
152
.................... //motory            //Napred vypnout potom zapnout!  
153
.................... #define FR         output_low(PIN_B5); output_high(PIN_B4)  // Vpred  
154
.................... #define FL         output_low(PIN_B7); output_high(PIN_B6)  
155
.................... #define BR         output_low(PIN_B4); output_high(PIN_B5)  // Vzad  
156
.................... #define BL         output_low(PIN_B6); output_high(PIN_B7)  
157
.................... #define STOPR      output_low(PIN_B4);output_low(PIN_B5)    // Zastav  
158
.................... #define STOPL      output_low(PIN_B6);output_low(PIN_B7)  
159
....................   
160
.................... #define L 0b10  // left  
161
.................... #define R 0b01  // right  
162
.................... #define S 0b11  // straight  
163
....................   
164
.................... //cidla  
165
.................... #define RSENSOR    C2OUT      // Senzory na caru  
166
.................... #define LSENSOR    C1OUT  
167
.................... #define BUMPER     PIN_A4     // Senzor na cihlu  
168
....................   
169
.................... #define DIAG_SERVO      PIN_B3   // Propojka pro diagnosticky mod  
170
.................... #define DIAG_SENSORS    PIN_B2   // Propojka pro diagnosticky mod  
171
....................   
172
.................... #DEFINE SOUND_HI   PIN_A6     // komplementarni vystupy pro piezo pipak  
173
.................... #DEFINE SOUND_LO   PIN_A7  
174
....................   
175
.................... char AXstring[40];   // Buffer pro prenos telemetrie  
176
....................   
177
.................... // makro pro PWM  
178
.................... #define GO(motor, direction, power) if(get_timer0()<=power) \  
179
.................... {direction##motor;} else {stop##motor;}  
180
....................   
181
.................... #int_TIMER2  
182
.................... void TIMER2_isr()  
183
.................... {  
184
....................    if (speed<255) speed+=INC_SPEED;  
185
*
186
0037:  INCFSZ 42,W
187
0038:  GOTO   03A
188
0039:  GOTO   03C
189
003A:  MOVLW  01
190
003B:  ADDWF  42,F
191
....................    if (rovinka<MAX_ROVINKA) rovinka++;  
192
003C:  MOVF   43,W
193
003D:  SUBLW  0E
194
003E:  BTFSC  03.0
195
003F:  INCF   43,F
196
....................    if (dira<=T_DIRA) dira++;  
197
0040:  MOVF   46,W
198
0041:  SUBLW  57
199
0042:  BTFSC  03.0
200
0043:  INCF   46,F
201
.................... }  
202
.................... // Primitivni Pipani  
203
0044:  BCF    0C.1
204
0045:  BCF    0A.3
205
0046:  GOTO   022
206
.................... void beep(unsigned int16 period, unsigned int16 length)  
207
.................... {  
208
....................    unsigned int16 nn;  
209
....................   
210
....................    for(nn=length; nn>0; nn--)  
211
*
212
005C:  MOVF   7D,W
213
005D:  BSF    03.5
214
005E:  MOVWF  21
215
005F:  MOVF   7C,W
216
0060:  MOVWF  20
217
0061:  MOVF   20,F
218
0062:  BTFSS  03.2
219
0063:  GOTO   067
220
0064:  MOVF   21,F
221
0065:  BTFSC  03.2
222
0066:  GOTO   086
223
....................    {  
224
....................      output_high(SOUND_HI);output_low(SOUND_LO);  
225
0067:  BCF    05.6
226
0068:  BCF    03.5
227
0069:  BSF    05.6
228
006A:  BSF    03.5
229
006B:  BCF    05.7
230
006C:  BCF    03.5
231
006D:  BCF    05.7
232
....................      delay_us(period);  
233
006E:  MOVF   74,W
234
006F:  BSF    03.5
235
0070:  MOVWF  22
236
0071:  BCF    03.5
237
0072:  CALL   047
238
....................      output_high(SOUND_LO);output_low(SOUND_HI);  
239
0073:  BSF    03.5
240
0074:  BCF    05.7
241
0075:  BCF    03.5
242
0076:  BSF    05.7
243
0077:  BSF    03.5
244
0078:  BCF    05.6
245
0079:  BCF    03.5
246
007A:  BCF    05.6
247
....................      delay_us(period);  
248
007B:  MOVF   74,W
249
007C:  BSF    03.5
250
007D:  MOVWF  22
251
007E:  BCF    03.5
252
007F:  CALL   047
253
....................    }  
254
0080:  BSF    03.5
255
0081:  MOVF   20,W
256
0082:  BTFSC  03.2
257
0083:  DECF   21,F
258
0084:  DECF   20,F
259
0085:  GOTO   061
260
.................... }  
261
0086:  BCF    03.5
262
0087:  RETLW  00
263
.................... /******************************************************************************/  
264
.................... void diagnostika()  
265
.................... {  
266
....................    unsigned int16 n;  
267
....................   
268
....................    while (input(DIAG_SERVO))   // Propojka, ktera spousti diagnostiku  
269
....................    {  
270
*
271
009D:  BSF    03.5
272
009E:  BSF    06.3
273
009F:  BCF    03.5
274
00A0:  BTFSS  06.3
275
00A1:  GOTO   1C8
276
....................       for (n=500; n<800; n+=100)  
277
00A2:  MOVLW  01
278
00A3:  MOVWF  72
279
00A4:  MOVLW  F4
280
00A5:  MOVWF  71
281
00A6:  MOVF   72,W
282
00A7:  SUBLW  03
283
00A8:  BTFSS  03.0
284
00A9:  GOTO   0BE
285
00AA:  BTFSS  03.2
286
00AB:  GOTO   0B0
287
00AC:  MOVF   71,W
288
00AD:  SUBLW  1F
289
00AE:  BTFSS  03.0
290
00AF:  GOTO   0BE
291
....................       {  
292
....................          beep(n,n); //beep UP  
293
00B0:  MOVF   72,W
294
00B1:  MOVWF  75
295
00B2:  MOVF   71,W
296
00B3:  MOVWF  74
297
00B4:  MOVF   72,W
298
00B5:  MOVWF  7D
299
00B6:  MOVF   71,W
300
00B7:  MOVWF  7C
301
00B8:  CALL   05C
302
....................       };  
303
00B9:  MOVLW  64
304
00BA:  ADDWF  71,F
305
00BB:  BTFSC  03.0
306
00BC:  INCF   72,F
307
00BD:  GOTO   0A6
308
....................       Delay_ms(1000);  
309
00BE:  MOVLW  04
310
00BF:  MOVWF  73
311
00C0:  MOVLW  FA
312
00C1:  MOVWF  75
313
00C2:  CALL   088
314
00C3:  DECFSZ 73,F
315
00C4:  GOTO   0C0
316
....................       //zastav vse  
317
....................       STOPL; STOPR;  
318
00C5:  BSF    03.5
319
00C6:  BCF    06.6
320
00C7:  BCF    03.5
321
00C8:  BCF    06.6
322
00C9:  BSF    03.5
323
00CA:  BCF    06.7
324
00CB:  BCF    03.5
325
00CC:  BCF    06.7
326
00CD:  BSF    03.5
327
00CE:  BCF    06.4
328
00CF:  BCF    03.5
329
00D0:  BCF    06.4
330
00D1:  BSF    03.5
331
00D2:  BCF    06.5
332
00D3:  BCF    03.5
333
00D4:  BCF    06.5
334
....................       //pravy pas  
335
....................       FR; Delay_ms(1000); STOPR; Delay_ms(1000);  
336
00D5:  BSF    03.5
337
00D6:  BCF    06.5
338
00D7:  BCF    03.5
339
00D8:  BCF    06.5
340
00D9:  BSF    03.5
341
00DA:  BCF    06.4
342
00DB:  BCF    03.5
343
00DC:  BSF    06.4
344
00DD:  MOVLW  04
345
00DE:  MOVWF  73
346
00DF:  MOVLW  FA
347
00E0:  MOVWF  75
348
00E1:  CALL   088
349
00E2:  DECFSZ 73,F
350
00E3:  GOTO   0DF
351
00E4:  BSF    03.5
352
00E5:  BCF    06.4
353
00E6:  BCF    03.5
354
00E7:  BCF    06.4
355
00E8:  BSF    03.5
356
00E9:  BCF    06.5
357
00EA:  BCF    03.5
358
00EB:  BCF    06.5
359
00EC:  MOVLW  04
360
00ED:  MOVWF  73
361
00EE:  MOVLW  FA
362
00EF:  MOVWF  75
363
00F0:  CALL   088
364
00F1:  DECFSZ 73,F
365
00F2:  GOTO   0EE
366
....................       BR; Delay_ms(1000); STOPR; Delay_ms(1000);  
367
00F3:  BSF    03.5
368
00F4:  BCF    06.4
369
00F5:  BCF    03.5
370
00F6:  BCF    06.4
371
00F7:  BSF    03.5
372
00F8:  BCF    06.5
373
00F9:  BCF    03.5
374
00FA:  BSF    06.5
375
00FB:  MOVLW  04
376
00FC:  MOVWF  73
377
00FD:  MOVLW  FA
378
00FE:  MOVWF  75
379
00FF:  CALL   088
380
0100:  DECFSZ 73,F
381
0101:  GOTO   0FD
382
0102:  BSF    03.5
383
0103:  BCF    06.4
384
0104:  BCF    03.5
385
0105:  BCF    06.4
386
0106:  BSF    03.5
387
0107:  BCF    06.5
388
0108:  BCF    03.5
389
0109:  BCF    06.5
390
010A:  MOVLW  04
391
010B:  MOVWF  73
392
010C:  MOVLW  FA
393
010D:  MOVWF  75
394
010E:  CALL   088
395
010F:  DECFSZ 73,F
396
0110:  GOTO   10C
397
....................       Beep(880,100); Delay_ms(1000);  
398
0111:  MOVLW  03
399
0112:  MOVWF  75
400
0113:  MOVLW  70
401
0114:  MOVWF  74
402
0115:  CLRF   7D
403
0116:  MOVLW  64
404
0117:  MOVWF  7C
405
0118:  CALL   05C
406
0119:  MOVLW  04
407
011A:  MOVWF  73
408
011B:  MOVLW  FA
409
011C:  MOVWF  75
410
011D:  CALL   088
411
011E:  DECFSZ 73,F
412
011F:  GOTO   11B
413
....................       //levy pas  
414
....................       FL; Delay_ms(1000); STOPL; Delay_ms(1000);  
415
0120:  BSF    03.5
416
0121:  BCF    06.7
417
0122:  BCF    03.5
418
0123:  BCF    06.7
419
0124:  BSF    03.5
420
0125:  BCF    06.6
421
0126:  BCF    03.5
422
0127:  BSF    06.6
423
0128:  MOVLW  04
424
0129:  MOVWF  73
425
012A:  MOVLW  FA
426
012B:  MOVWF  75
427
012C:  CALL   088
428
012D:  DECFSZ 73,F
429
012E:  GOTO   12A
430
012F:  BSF    03.5
431
0130:  BCF    06.6
432
0131:  BCF    03.5
433
0132:  BCF    06.6
434
0133:  BSF    03.5
435
0134:  BCF    06.7
436
0135:  BCF    03.5
437
0136:  BCF    06.7
438
0137:  MOVLW  04
439
0138:  MOVWF  73
440
0139:  MOVLW  FA
441
013A:  MOVWF  75
442
013B:  CALL   088
443
013C:  DECFSZ 73,F
444
013D:  GOTO   139
445
....................       BL; Delay_ms(1000); STOPL; Delay_ms(1000);  
446
013E:  BSF    03.5
447
013F:  BCF    06.6
448
0140:  BCF    03.5
449
0141:  BCF    06.6
450
0142:  BSF    03.5
451
0143:  BCF    06.7
452
0144:  BCF    03.5
453
0145:  BSF    06.7
454
0146:  MOVLW  04
455
0147:  MOVWF  73
456
0148:  MOVLW  FA
457
0149:  MOVWF  75
458
014A:  CALL   088
459
014B:  DECFSZ 73,F
460
014C:  GOTO   148
461
014D:  BSF    03.5
462
014E:  BCF    06.6
463
014F:  BCF    03.5
464
0150:  BCF    06.6
465
0151:  BSF    03.5
466
0152:  BCF    06.7
467
0153:  BCF    03.5
468
0154:  BCF    06.7
469
0155:  MOVLW  04
470
0156:  MOVWF  73
471
0157:  MOVLW  FA
472
0158:  MOVWF  75
473
0159:  CALL   088
474
015A:  DECFSZ 73,F
475
015B:  GOTO   157
476
....................       Beep(880,100); Delay_ms(1000);  
477
015C:  MOVLW  03
478
015D:  MOVWF  75
479
015E:  MOVLW  70
480
015F:  MOVWF  74
481
0160:  CLRF   7D
482
0161:  MOVLW  64
483
0162:  MOVWF  7C
484
0163:  CALL   05C
485
0164:  MOVLW  04
486
0165:  MOVWF  73
487
0166:  MOVLW  FA
488
0167:  MOVWF  75
489
0168:  CALL   088
490
0169:  DECFSZ 73,F
491
016A:  GOTO   166
492
....................       //oba pasy  
493
....................       FL; FR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);  
494
016B:  BSF    03.5
495
016C:  BCF    06.7
496
016D:  BCF    03.5
497
016E:  BCF    06.7
498
016F:  BSF    03.5
499
0170:  BCF    06.6
500
0171:  BCF    03.5
501
0172:  BSF    06.6
502
0173:  BSF    03.5
503
0174:  BCF    06.5
504
0175:  BCF    03.5
505
0176:  BCF    06.5
506
0177:  BSF    03.5
507
0178:  BCF    06.4
508
0179:  BCF    03.5
509
017A:  BSF    06.4
510
017B:  MOVLW  04
511
017C:  MOVWF  73
512
017D:  MOVLW  FA
513
017E:  MOVWF  75
514
017F:  CALL   088
515
0180:  DECFSZ 73,F
516
0181:  GOTO   17D
517
0182:  BSF    03.5
518
0183:  BCF    06.6
519
0184:  BCF    03.5
520
0185:  BCF    06.6
521
0186:  BSF    03.5
522
0187:  BCF    06.7
523
0188:  BCF    03.5
524
0189:  BCF    06.7
525
018A:  BSF    03.5
526
018B:  BCF    06.4
527
018C:  BCF    03.5
528
018D:  BCF    06.4
529
018E:  BSF    03.5
530
018F:  BCF    06.5
531
0190:  BCF    03.5
532
0191:  BCF    06.5
533
0192:  MOVLW  04
534
0193:  MOVWF  73
535
0194:  MOVLW  FA
536
0195:  MOVWF  75
537
0196:  CALL   088
538
0197:  DECFSZ 73,F
539
0198:  GOTO   194
540
....................       BL; BR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);  
541
0199:  BSF    03.5
542
019A:  BCF    06.6
543
019B:  BCF    03.5
544
019C:  BCF    06.6
545
019D:  BSF    03.5
546
019E:  BCF    06.7
547
019F:  BCF    03.5
548
01A0:  BSF    06.7
549
01A1:  BSF    03.5
550
01A2:  BCF    06.4
551
01A3:  BCF    03.5
552
01A4:  BCF    06.4
553
01A5:  BSF    03.5
554
01A6:  BCF    06.5
555
01A7:  BCF    03.5
556
01A8:  BSF    06.5
557
01A9:  MOVLW  04
558
01AA:  MOVWF  73
559
01AB:  MOVLW  FA
560
01AC:  MOVWF  75
561
01AD:  CALL   088
562
01AE:  DECFSZ 73,F
563
01AF:  GOTO   1AB
564
01B0:  BSF    03.5
565
01B1:  BCF    06.6
566
01B2:  BCF    03.5
567
01B3:  BCF    06.6
568
01B4:  BSF    03.5
569
01B5:  BCF    06.7
570
01B6:  BCF    03.5
571
01B7:  BCF    06.7
572
01B8:  BSF    03.5
573
01B9:  BCF    06.4
574
01BA:  BCF    03.5
575
01BB:  BCF    06.4
576
01BC:  BSF    03.5
577
01BD:  BCF    06.5
578
01BE:  BCF    03.5
579
01BF:  BCF    06.5
580
01C0:  MOVLW  04
581
01C1:  MOVWF  73
582
01C2:  MOVLW  FA
583
01C3:  MOVWF  75
584
01C4:  CALL   088
585
01C5:  DECFSZ 73,F
586
01C6:  GOTO   1C2
587
....................    };  
588
01C7:  GOTO   09D
589
....................    while (input(DIAG_SENSORS))  
590
....................    {  
591
01C8:  BSF    03.5
592
01C9:  BSF    06.2
593
01CA:  BCF    03.5
594
01CB:  BTFSS  06.2
595
01CC:  GOTO   1FB
596
....................       if (RSENSOR) beep(900,500);  
597
01CD:  BSF    03.5
598
01CE:  BTFSS  1C.7
599
01CF:  GOTO   1DB
600
01D0:  MOVLW  03
601
01D1:  MOVWF  75
602
01D2:  MOVLW  84
603
01D3:  MOVWF  74
604
01D4:  MOVLW  01
605
01D5:  MOVWF  7D
606
01D6:  MOVLW  F4
607
01D7:  MOVWF  7C
608
01D8:  BCF    03.5
609
01D9:  CALL   05C
610
01DA:  BSF    03.5
611
....................       if (LSENSOR) beep(800,500);  
612
01DB:  BTFSS  1C.6
613
01DC:  GOTO   1E8
614
01DD:  MOVLW  03
615
01DE:  MOVWF  75
616
01DF:  MOVLW  20
617
01E0:  MOVWF  74
618
01E1:  MOVLW  01
619
01E2:  MOVWF  7D
620
01E3:  MOVLW  F4
621
01E4:  MOVWF  7C
622
01E5:  BCF    03.5
623
01E6:  CALL   05C
624
01E7:  BSF    03.5
625
....................       if ((read_adc(ADC_READ_ONLY)<BUMPER_TRESHOLD)) beep(1000,500);  
626
01E8:  BCF    03.5
627
01E9:  BTFSS  1F.2
628
01EA:  GOTO   1ED
629
01EB:  BSF    03.5
630
01EC:  GOTO   1E8
631
01ED:  MOVF   1E,W
632
01EE:  SUBLW  7F
633
01EF:  BTFSS  03.0
634
01F0:  GOTO   1FA
635
01F1:  MOVLW  03
636
01F2:  MOVWF  75
637
01F3:  MOVLW  E8
638
01F4:  MOVWF  74
639
01F5:  MOVLW  01
640
01F6:  MOVWF  7D
641
01F7:  MOVLW  F4
642
01F8:  MOVWF  7C
643
01F9:  CALL   05C
644
....................    };  
645
01FA:  GOTO   1C8
646
.................... }  
647
01FB:  BCF    0A.3
648
01FC:  GOTO   596 (RETURN)
649
.................... ///////////////////////////////////////////////////////////////////////////////  
650
.................... void cikcak()  
651
.................... {  
652
.................... unsigned int16 n;  
653
.................... sem1:  
654
....................    n=CIK_CAK;  
655
01FD:  MOVLW  75
656
01FE:  MOVWF  75
657
01FF:  MOVLW  30
658
0200:  MOVWF  74
659
.................... 	while (0==RSENSOR||LSENSOR)       // zkontroluj caru  
660
.................... 	{  
661
0201:  MOVLW  00
662
0202:  BSF    03.5
663
0203:  BTFSC  1C.7
664
0204:  MOVLW  01
665
0205:  XORLW  00
666
0206:  BTFSC  03.2
667
0207:  GOTO   20A
668
0208:  BTFSS  1C.6
669
0209:  GOTO   264
670
.................... 		if (n==CIK_CAK)							// zmen smer zataceni  
671
020A:  MOVF   74,W
672
020B:  SUBLW  30
673
020C:  BTFSS  03.2
674
020D:  GOTO   25E
675
020E:  MOVF   75,W
676
020F:  SUBLW  75
677
0210:  BTFSS  03.2
678
0211:  GOTO   25E
679
.................... 		{  
680
.................... 			n=0;  
681
0212:  CLRF   75
682
0213:  CLRF   74
683
.................... 			switch(movement)  
684
.................... 			{  
685
0214:  BCF    03.5
686
0215:  MOVF   45,W
687
0216:  XORLW  02
688
0217:  BTFSC  03.2
689
0218:  GOTO   220
690
0219:  XORLW  03
691
021A:  BTFSC  03.2
692
021B:  GOTO   233
693
021C:  XORLW  02
694
021D:  BTFSC  03.2
695
021E:  GOTO   246
696
021F:  GOTO   25D
697
.................... 			case L:  
698
.................... 						FL;BR;  
699
0220:  BSF    03.5
700
0221:  BCF    06.7
701
0222:  BCF    03.5
702
0223:  BCF    06.7
703
0224:  BSF    03.5
704
0225:  BCF    06.6
705
0226:  BCF    03.5
706
0227:  BSF    06.6
707
0228:  BSF    03.5
708
0229:  BCF    06.4
709
022A:  BCF    03.5
710
022B:  BCF    06.4
711
022C:  BSF    03.5
712
022D:  BCF    06.5
713
022E:  BCF    03.5
714
022F:  BSF    06.5
715
.................... 						movement=R;  
716
0230:  MOVLW  01
717
0231:  MOVWF  45
718
.................... 					break;  
719
0232:  GOTO   25D
720
.................... 			case R:  
721
.................... 						FR;BL;  
722
0233:  BSF    03.5
723
0234:  BCF    06.5
724
0235:  BCF    03.5
725
0236:  BCF    06.5
726
0237:  BSF    03.5
727
0238:  BCF    06.4
728
0239:  BCF    03.5
729
023A:  BSF    06.4
730
023B:  BSF    03.5
731
023C:  BCF    06.6
732
023D:  BCF    03.5
733
023E:  BCF    06.6
734
023F:  BSF    03.5
735
0240:  BCF    06.7
736
0241:  BCF    03.5
737
0242:  BSF    06.7
738
.................... 						movement=L;  
739
0243:  MOVLW  02
740
0244:  MOVWF  45
741
.................... 					break;  
742
0245:  GOTO   25D
743
....................          case S:  
744
.................... 				     FL;BR;  
745
0246:  BSF    03.5
746
0247:  BCF    06.7
747
0248:  BCF    03.5
748
0249:  BCF    06.7
749
024A:  BSF    03.5
750
024B:  BCF    06.6
751
024C:  BCF    03.5
752
024D:  BSF    06.6
753
024E:  BSF    03.5
754
024F:  BCF    06.4
755
0250:  BCF    03.5
756
0251:  BCF    06.4
757
0252:  BSF    03.5
758
0253:  BCF    06.5
759
0254:  BCF    03.5
760
0255:  BSF    06.5
761
.................... 				     movement=R;  
762
0256:  MOVLW  01
763
0257:  MOVWF  45
764
....................                  n=CIK_CAK/2;  
765
0258:  MOVLW  3A
766
0259:  MOVWF  75
767
025A:  MOVLW  98
768
025B:  MOVWF  74
769
.................... 			      break;  
770
025C:  GOTO   25D
771
025D:  BSF    03.5
772
.................... 			}  
773
.................... 		}  
774
.................... 		n++;  
775
025E:  INCF   74,F
776
025F:  BTFSC  03.2
777
0260:  INCF   75,F
778
.................... 	}  
779
0261:  BCF    03.5
780
0262:  GOTO   201
781
0263:  BSF    03.5
782
.................... 	STOPL;STOPR;  
783
0264:  BCF    06.6
784
0265:  BCF    03.5
785
0266:  BCF    06.6
786
0267:  BSF    03.5
787
0268:  BCF    06.7
788
0269:  BCF    03.5
789
026A:  BCF    06.7
790
026B:  BSF    03.5
791
026C:  BCF    06.4
792
026D:  BCF    03.5
793
026E:  BCF    06.4
794
026F:  BSF    03.5
795
0270:  BCF    06.5
796
0271:  BCF    03.5
797
0272:  BCF    06.5
798
....................    line = RSENSOR;         // cteni senzoru na caru  
799
0273:  CLRF   41
800
0274:  BSF    03.5
801
0275:  BTFSS  1C.7
802
0276:  GOTO   27A
803
0277:  BCF    03.5
804
0278:  INCF   41,F
805
0279:  BSF    03.5
806
....................    line |= LSENSOR << 1;  
807
027A:  MOVLW  00
808
027B:  BTFSC  1C.6
809
027C:  MOVLW  01
810
027D:  MOVWF  77
811
027E:  BCF    03.0
812
027F:  RLF    77,F
813
0280:  MOVF   77,W
814
0281:  BCF    03.5
815
0282:  IORWF  41,F
816
....................    if (line==0) goto sem1;  
817
0283:  MOVF   41,F
818
0284:  BTFSC  03.2
819
0285:  GOTO   1FD
820
....................    												// nasli jsme caru  
821
.................... 	line=S;  
822
0286:  MOVLW  03
823
0287:  MOVWF  41
824
.................... }  
825
0288:  RETLW  00
826
.................... ///////////////////////////////////////////////////////////////////////////////  
827
.................... void objizdka()                     // objede cihlu  
828
.................... {  
829
.................... unsigned int16 n;  
830
....................   
831
.................... 	BL;BR;Delay_ms(200);  
832
0289:  BSF    03.5
833
028A:  BCF    06.6
834
028B:  BCF    03.5
835
028C:  BCF    06.6
836
028D:  BSF    03.5
837
028E:  BCF    06.7
838
028F:  BCF    03.5
839
0290:  BSF    06.7
840
0291:  BSF    03.5
841
0292:  BCF    06.4
842
0293:  BCF    03.5
843
0294:  BCF    06.4
844
0295:  BSF    03.5
845
0296:  BCF    06.5
846
0297:  BCF    03.5
847
0298:  BSF    06.5
848
0299:  MOVLW  C8
849
029A:  MOVWF  75
850
029B:  CALL   088
851
.................... 	STOPR;STOPL;  
852
029C:  BSF    03.5
853
029D:  BCF    06.4
854
029E:  BCF    03.5
855
029F:  BCF    06.4
856
02A0:  BSF    03.5
857
02A1:  BCF    06.5
858
02A2:  BCF    03.5
859
02A3:  BCF    06.5
860
02A4:  BSF    03.5
861
02A5:  BCF    06.6
862
02A6:  BCF    03.5
863
02A7:  BCF    06.6
864
02A8:  BSF    03.5
865
02A9:  BCF    06.7
866
02AA:  BCF    03.5
867
02AB:  BCF    06.7
868
.................... 	beep(900,1000);  
869
02AC:  MOVLW  03
870
02AD:  MOVWF  75
871
02AE:  MOVLW  84
872
02AF:  MOVWF  74
873
02B0:  MOVLW  03
874
02B1:  MOVWF  7D
875
02B2:  MOVLW  E8
876
02B3:  MOVWF  7C
877
02B4:  CALL   05C
878
....................   // movement=S;  
879
....................    //cikcak();  
880
....................   
881
....................    BL; FR; Delay_ms(215);           // otoc se 70? do leva  
882
02B5:  BSF    03.5
883
02B6:  BCF    06.6
884
02B7:  BCF    03.5
885
02B8:  BCF    06.6
886
02B9:  BSF    03.5
887
02BA:  BCF    06.7
888
02BB:  BCF    03.5
889
02BC:  BSF    06.7
890
02BD:  BSF    03.5
891
02BE:  BCF    06.5
892
02BF:  BCF    03.5
893
02C0:  BCF    06.5
894
02C1:  BSF    03.5
895
02C2:  BCF    06.4
896
02C3:  BCF    03.5
897
02C4:  BSF    06.4
898
02C5:  MOVLW  D7
899
02C6:  MOVWF  75
900
02C7:  CALL   088
901
....................   
902
....................    FR; FL; Delay_ms(600);           // popojed rovne  
903
02C8:  BSF    03.5
904
02C9:  BCF    06.5
905
02CA:  BCF    03.5
906
02CB:  BCF    06.5
907
02CC:  BSF    03.5
908
02CD:  BCF    06.4
909
02CE:  BCF    03.5
910
02CF:  BSF    06.4
911
02D0:  BSF    03.5
912
02D1:  BCF    06.7
913
02D2:  BCF    03.5
914
02D3:  BCF    06.7
915
02D4:  BSF    03.5
916
02D5:  BCF    06.6
917
02D6:  BCF    03.5
918
02D7:  BSF    06.6
919
02D8:  MOVLW  03
920
02D9:  MOVWF  73
921
02DA:  MOVLW  C8
922
02DB:  MOVWF  75
923
02DC:  CALL   088
924
02DD:  DECFSZ 73,F
925
02DE:  GOTO   2DA
926
....................   
927
....................    BR; Delay_ms(50);               // otoc se 90? do prava  
928
02DF:  BSF    03.5
929
02E0:  BCF    06.4
930
02E1:  BCF    03.5
931
02E2:  BCF    06.4
932
02E3:  BSF    03.5
933
02E4:  BCF    06.5
934
02E5:  BCF    03.5
935
02E6:  BSF    06.5
936
02E7:  MOVLW  32
937
02E8:  MOVWF  75
938
02E9:  CALL   088
939
....................    STOPR; FL; Delay_ms(600);  
940
02EA:  BSF    03.5
941
02EB:  BCF    06.4
942
02EC:  BCF    03.5
943
02ED:  BCF    06.4
944
02EE:  BSF    03.5
945
02EF:  BCF    06.5
946
02F0:  BCF    03.5
947
02F1:  BCF    06.5
948
02F2:  BSF    03.5
949
02F3:  BCF    06.7
950
02F4:  BCF    03.5
951
02F5:  BCF    06.7
952
02F6:  BSF    03.5
953
02F7:  BCF    06.6
954
02F8:  BCF    03.5
955
02F9:  BSF    06.6
956
02FA:  MOVLW  03
957
02FB:  MOVWF  73
958
02FC:  MOVLW  C8
959
02FD:  MOVWF  75
960
02FE:  CALL   088
961
02FF:  DECFSZ 73,F
962
0300:  GOTO   2FC
963
....................   
964
....................    FR; FL; Delay_ms(100);           // popojed rovne na slepo  
965
0301:  BSF    03.5
966
0302:  BCF    06.5
967
0303:  BCF    03.5
968
0304:  BCF    06.5
969
0305:  BSF    03.5
970
0306:  BCF    06.4
971
0307:  BCF    03.5
972
0308:  BSF    06.4
973
0309:  BSF    03.5
974
030A:  BCF    06.7
975
030B:  BCF    03.5
976
030C:  BCF    06.7
977
030D:  BSF    03.5
978
030E:  BCF    06.6
979
030F:  BCF    03.5
980
0310:  BSF    06.6
981
0311:  MOVLW  64
982
0312:  MOVWF  75
983
0313:  CALL   088
984
....................    for(n=600;n>0;n--)               // popojed rovne ale kontroluj caru  
985
0314:  MOVLW  02
986
0315:  MOVWF  72
987
0316:  MOVLW  58
988
0317:  MOVWF  71
989
0318:  MOVF   71,F
990
0319:  BTFSS  03.2
991
031A:  GOTO   31E
992
031B:  MOVF   72,F
993
031C:  BTFSC  03.2
994
031D:  GOTO   33D
995
....................    {  
996
....................       line = RSENSOR;         // cteni senzoru na caru  
997
031E:  CLRF   41
998
031F:  BSF    03.5
999
0320:  BTFSS  1C.7
1000
0321:  GOTO   325
1001
0322:  BCF    03.5
1002
0323:  INCF   41,F
1003
0324:  BSF    03.5
1004
....................       line |= LSENSOR << 1;  
1005
0325:  MOVLW  00
1006
0326:  BTFSC  1C.6
1007
0327:  MOVLW  01
1008
0328:  MOVWF  77
1009
0329:  BCF    03.0
1010
032A:  RLF    77,F
1011
032B:  MOVF   77,W
1012
032C:  BCF    03.5
1013
032D:  IORWF  41,F
1014
....................       if (line!=0) {Delay_ms(50); break;}       // kdyz narazis na caru, za chvili zastav  
1015
032E:  MOVF   41,F
1016
032F:  BTFSC  03.2
1017
0330:  GOTO   335
1018
0331:  MOVLW  32
1019
0332:  MOVWF  75
1020
0333:  CALL   088
1021
0334:  GOTO   33D
1022
....................       Delay_ms(1);  
1023
0335:  MOVLW  01
1024
0336:  MOVWF  75
1025
0337:  CALL   088
1026
....................    }  
1027
0338:  MOVF   71,W
1028
0339:  BTFSC  03.2
1029
033A:  DECF   72,F
1030
033B:  DECF   71,F
1031
033C:  GOTO   318
1032
....................   
1033
....................    BL;                              // otoc se 60? do leva  
1034
033D:  BSF    03.5
1035
033E:  BCF    06.6
1036
033F:  BCF    03.5
1037
0340:  BCF    06.6
1038
0341:  BSF    03.5
1039
0342:  BCF    06.7
1040
0343:  BCF    03.5
1041
0344:  BSF    06.7
1042
....................    for(n=600;n>0;n--)  
1043
0345:  MOVLW  02
1044
0346:  MOVWF  72
1045
0347:  MOVLW  58
1046
0348:  MOVWF  71
1047
0349:  MOVF   71,F
1048
034A:  BTFSS  03.2
1049
034B:  GOTO   34F
1050
034C:  MOVF   72,F
1051
034D:  BTFSC  03.2
1052
034E:  GOTO   36A
1053
....................    {  
1054
....................       line = RSENSOR;         // cteni senzoru na caru  
1055
034F:  CLRF   41
1056
0350:  BSF    03.5
1057
0351:  BTFSS  1C.7
1058
0352:  GOTO   356
1059
0353:  BCF    03.5
1060
0354:  INCF   41,F
1061
0355:  BSF    03.5
1062
....................       line |= LSENSOR << 1;  
1063
0356:  MOVLW  00
1064
0357:  BTFSC  1C.6
1065
0358:  MOVLW  01
1066
0359:  MOVWF  77
1067
035A:  BCF    03.0
1068
035B:  RLF    77,F
1069
035C:  MOVF   77,W
1070
035D:  BCF    03.5
1071
035E:  IORWF  41,F
1072
....................       if (line!=0) break;  
1073
035F:  MOVF   41,F
1074
0360:  BTFSS  03.2
1075
0361:  GOTO   36A
1076
....................       Delay_ms(1);  
1077
0362:  MOVLW  01
1078
0363:  MOVWF  75
1079
0364:  CALL   088
1080
....................    }  
1081
0365:  MOVF   71,W
1082
0366:  BTFSC  03.2
1083
0367:  DECF   72,F
1084
0368:  DECF   71,F
1085
0369:  GOTO   349
1086
....................    STOPR; STOPL;  
1087
036A:  BSF    03.5
1088
036B:  BCF    06.4
1089
036C:  BCF    03.5
1090
036D:  BCF    06.4
1091
036E:  BSF    03.5
1092
036F:  BCF    06.5
1093
0370:  BCF    03.5
1094
0371:  BCF    06.5
1095
0372:  BSF    03.5
1096
0373:  BCF    06.6
1097
0374:  BCF    03.5
1098
0375:  BCF    06.6
1099
0376:  BSF    03.5
1100
0377:  BCF    06.7
1101
0378:  BCF    03.5
1102
0379:  BCF    06.7
1103
....................   
1104
....................    movement=R;  
1105
037A:  MOVLW  01
1106
037B:  MOVWF  45
... Π­Ρ‚ΠΎΡ‚ diff ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. :@created_atf1417826026.4870181+N:@expires_in0