Rev Author Line No. Line
503 kaklik 1 CCS PCM C Compiler, Version 3.221, 27853 20-V-05 13:52
2  
3 Filename: D:\KAKLIK\programy\PIC_C\roboti\merkur\PIC16F88\vystava\tank.LST
4  
5 ROM used: 1232 words (30%)
6 Largest free fragment is 2048
7 RAM used: 65 (37%) at main() level
8 73 (42%) 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 28E
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 0042: MOVLW 12
78 0043: SUBWF 63,F
79 0044: BTFSS 03.0
80 0045: GOTO 054
81 0046: MOVLW 63
82 0047: MOVWF 04
83 0048: MOVLW FC
84 0049: ANDWF 00,F
85 004A: BCF 03.0
86 004B: RRF 00,F
87 004C: RRF 00,F
88 004D: MOVF 00,W
89 004E: BTFSC 03.2
90 004F: GOTO 054
91 0050: GOTO 052
92 0051: NOP
93 0052: DECFSZ 00,F
94 0053: GOTO 051
95 0054: RETLW 00
96 *
97 007B: MOVLW 5E
98 007C: MOVWF 04
99 007D: MOVF 00,W
100 007E: BTFSC 03.2
101 007F: GOTO 08F
102 0080: MOVLW 01
103 0081: MOVWF 78
104 0082: CLRF 77
105 0083: DECFSZ 77,F
106 0084: GOTO 083
107 0085: DECFSZ 78,F
108 0086: GOTO 082
109 0087: MOVLW 4A
110 0088: MOVWF 77
111 0089: DECFSZ 77,F
112 008A: GOTO 089
113 008B: NOP
114 008C: NOP
115 008D: DECFSZ 00,F
116 008E: GOTO 080
117 008F: RETLW 00
118 ....................
119 ....................
120 ....................
121 .................... unsigned int8 sensors; // pomocna promenna pro cteni cidel na caru
122 .................... unsigned int8 line; // na ktere strane byla detekovana cara
123 .................... unsigned int8 speed; // rychlost zataceni
124 .................... unsigned int8 last; // kde byla cara, kdyz byly minule cidla mimo
125 .................... unsigned int8 rovinka; // pocitadlo pro zjisteni rovneho useku
126 .................... int cirkus;
127 ....................
128 .................... // Konstanty pro dynamiku pohybu
129 .................... #define T_DIRA 120 // po jakem case zataceni se detekuje dira
130 .................... #define FW_POMALU 170 // trochu mimo caru vnitrni pas
131 .................... #define FW_ZATACKA 200 // rychlost vnejsiho kola pri zataceni
132 .................... #define FW_STREDNE 190 // trochu mimo caru vnejsi pas
133 .................... #define COUVANI 750 // couvnuti zpet na caru, po detekci diry
134 .................... #define MAX_ROVINKA (255-FW_STREDNE)
135 .................... #define TRESHOLD 15 // rozhodovaci uroven komparatoru, 0xF = 0.75*Vdd
136 .................... #define BUMPER_TRESHOLD 128
137 ....................
138 .................... //motory //Napred vypnout potom zapnout!
139 .................... #define FR output_low(PIN_B5); output_high(PIN_B4) // Vpred
140 .................... #define FL output_low(PIN_B7); output_high(PIN_B6)
141 .................... #define BR output_low(PIN_B4); output_high(PIN_B5) // Vzad
142 .................... #define BL output_low(PIN_B6); output_high(PIN_B7)
143 .................... #define STOPR output_low(PIN_B4);output_low(PIN_B5) // Zastav
144 .................... #define STOPL output_low(PIN_B6);output_low(PIN_B7)
145 ....................
146 .................... #define L 0b10 // left
147 .................... #define R 0b01 // right
148 .................... #define S 0b11 // straight
149 ....................
150 .................... //cidla
151 .................... #define RSENSOR !C2OUT // Senzory na caru
152 .................... #define LSENSOR !C1OUT
153 .................... #define BUMPER PIN_A4 // Senzor na cihlu
154 ....................
155 .................... #define DIAG_SERVO PIN_B3 // Propojka pro diagnosticky mod
156 .................... #define DIAG_SENSORS PIN_B2 // Propojka pro diagnosticky mod
157 ....................
158 .................... #DEFINE SOUND_HI PIN_A6 // komplementarni vystupy pro piezo pipak
159 .................... #DEFINE SOUND_LO PIN_A7
160 ....................
161 .................... char AXstring[40]; // Buffer pro prenos telemetrie
162 ....................
163 .................... // makro pro PWM
164 .................... #define GO(motor, direction, power) if(get_timer0()<=power) \
165 .................... {direction##motor;} else {stop##motor;}
166 ....................
167 .................... #int_TIMER2
168 .................... void TIMER2_isr()
169 .................... {
170 .................... if (speed<255) speed++;
171 *
172 0037: INCFSZ 2B,W
173 0038: GOTO 03A
174 0039: GOTO 03B
175 003A: INCF 2B,F
176 .................... if (rovinka<MAX_ROVINKA) rovinka++;
177 003B: MOVF 2D,W
178 003C: SUBLW 40
179 003D: BTFSC 03.0
180 003E: INCF 2D,F
181 .................... }
182 .................... // Primitivni Pipani
183 003F: BCF 0C.1
184 0040: BCF 0A.3
185 0041: GOTO 022
186 .................... void beep(unsigned int16 period, unsigned int16 length)
187 .................... {
188 .................... unsigned int16 nn;
189 ....................
190 .................... for(nn=length; nn>0; nn--)
191 *
192 0055: MOVF 60,W
193 0056: MOVWF 62
194 0057: MOVF 5F,W
195 0058: MOVWF 61
196 0059: MOVF 61,F
197 005A: BTFSS 03.2
198 005B: GOTO 05F
199 005C: MOVF 62,F
200 005D: BTFSC 03.2
201 005E: GOTO 07A
202 .................... {
203 .................... output_high(SOUND_HI);output_low(SOUND_LO);
204 005F: BSF 03.5
205 0060: BCF 05.6
206 0061: BCF 03.5
207 0062: BSF 05.6
208 0063: BSF 03.5
209 0064: BCF 05.7
210 0065: BCF 03.5
211 0066: BCF 05.7
212 .................... delay_us(period);
213 0067: MOVF 5D,W
214 0068: MOVWF 63
215 0069: CALL 042
216 .................... output_high(SOUND_LO);output_low(SOUND_HI);
217 006A: BSF 03.5
218 006B: BCF 05.7
219 006C: BCF 03.5
220 006D: BSF 05.7
221 006E: BSF 03.5
222 006F: BCF 05.6
223 0070: BCF 03.5
224 0071: BCF 05.6
225 .................... delay_us(period);
226 0072: MOVF 5D,W
227 0073: MOVWF 63
228 0074: CALL 042
229 .................... }
230 0075: MOVF 61,W
231 0076: BTFSC 03.2
232 0077: DECF 62,F
233 0078: DECF 61,F
234 0079: GOTO 059
235 .................... }
236 007A: RETLW 00
237 .................... /******************************************************************************/
238 .................... void diagnostika()
239 .................... {
240 .................... unsigned int16 n;
241 ....................
242 .................... while (input(DIAG_SERVO)) // Propojka, ktera spousti diagnostiku
243 .................... {
244 *
245 0090: BSF 03.5
246 0091: BSF 06.3
247 0092: BCF 03.5
248 0093: BTFSS 06.3
249 0094: GOTO 1BB
250 .................... for (n=500; n<800; n+=100)
251 0095: MOVLW 01
252 0096: MOVWF 5C
253 0097: MOVLW F4
254 0098: MOVWF 5B
255 0099: MOVF 5C,W
256 009A: SUBLW 03
257 009B: BTFSS 03.0
258 009C: GOTO 0B1
259 009D: BTFSS 03.2
260 009E: GOTO 0A3
261 009F: MOVF 5B,W
262 00A0: SUBLW 1F
263 00A1: BTFSS 03.0
264 00A2: GOTO 0B1
265 .................... {
266 .................... beep(n,n); //beep UP
267 00A3: MOVF 5C,W
268 00A4: MOVWF 5E
269 00A5: MOVF 5B,W
270 00A6: MOVWF 5D
271 00A7: MOVF 5C,W
272 00A8: MOVWF 60
273 00A9: MOVF 5B,W
274 00AA: MOVWF 5F
275 00AB: CALL 055
276 .................... };
277 00AC: MOVLW 64
278 00AD: ADDWF 5B,F
279 00AE: BTFSC 03.0
280 00AF: INCF 5C,F
281 00B0: GOTO 099
282 .................... Delay_ms(1000);
283 00B1: MOVLW 04
284 00B2: MOVWF 5D
285 00B3: MOVLW FA
286 00B4: MOVWF 5E
287 00B5: CALL 07B
288 00B6: DECFSZ 5D,F
289 00B7: GOTO 0B3
290 .................... //zastav vse
291 .................... STOPL; STOPR;
292 00B8: BSF 03.5
293 00B9: BCF 06.6
294 00BA: BCF 03.5
295 00BB: BCF 06.6
296 00BC: BSF 03.5
297 00BD: BCF 06.7
298 00BE: BCF 03.5
299 00BF: BCF 06.7
300 00C0: BSF 03.5
301 00C1: BCF 06.4
302 00C2: BCF 03.5
303 00C3: BCF 06.4
304 00C4: BSF 03.5
305 00C5: BCF 06.5
306 00C6: BCF 03.5
307 00C7: BCF 06.5
308 .................... //pravy pas
309 .................... FR; Delay_ms(1000); STOPR; Delay_ms(1000);
310 00C8: BSF 03.5
311 00C9: BCF 06.5
312 00CA: BCF 03.5
313 00CB: BCF 06.5
314 00CC: BSF 03.5
315 00CD: BCF 06.4
316 00CE: BCF 03.5
317 00CF: BSF 06.4
318 00D0: MOVLW 04
319 00D1: MOVWF 5D
320 00D2: MOVLW FA
321 00D3: MOVWF 5E
322 00D4: CALL 07B
323 00D5: DECFSZ 5D,F
324 00D6: GOTO 0D2
325 00D7: BSF 03.5
326 00D8: BCF 06.4
327 00D9: BCF 03.5
328 00DA: BCF 06.4
329 00DB: BSF 03.5
330 00DC: BCF 06.5
331 00DD: BCF 03.5
332 00DE: BCF 06.5
333 00DF: MOVLW 04
334 00E0: MOVWF 5D
335 00E1: MOVLW FA
336 00E2: MOVWF 5E
337 00E3: CALL 07B
338 00E4: DECFSZ 5D,F
339 00E5: GOTO 0E1
340 .................... BR; Delay_ms(1000); STOPR; Delay_ms(1000);
341 00E6: BSF 03.5
342 00E7: BCF 06.4
343 00E8: BCF 03.5
344 00E9: BCF 06.4
345 00EA: BSF 03.5
346 00EB: BCF 06.5
347 00EC: BCF 03.5
348 00ED: BSF 06.5
349 00EE: MOVLW 04
350 00EF: MOVWF 5D
351 00F0: MOVLW FA
352 00F1: MOVWF 5E
353 00F2: CALL 07B
354 00F3: DECFSZ 5D,F
355 00F4: GOTO 0F0
356 00F5: BSF 03.5
357 00F6: BCF 06.4
358 00F7: BCF 03.5
359 00F8: BCF 06.4
360 00F9: BSF 03.5
361 00FA: BCF 06.5
362 00FB: BCF 03.5
363 00FC: BCF 06.5
364 00FD: MOVLW 04
365 00FE: MOVWF 5D
366 00FF: MOVLW FA
367 0100: MOVWF 5E
368 0101: CALL 07B
369 0102: DECFSZ 5D,F
370 0103: GOTO 0FF
371 .................... Beep(880,100); Delay_ms(1000);
372 0104: MOVLW 03
373 0105: MOVWF 5E
374 0106: MOVLW 70
375 0107: MOVWF 5D
376 0108: CLRF 60
377 0109: MOVLW 64
378 010A: MOVWF 5F
379 010B: CALL 055
380 010C: MOVLW 04
381 010D: MOVWF 5D
382 010E: MOVLW FA
383 010F: MOVWF 5E
384 0110: CALL 07B
385 0111: DECFSZ 5D,F
386 0112: GOTO 10E
387 .................... //levy pas
388 .................... FL; Delay_ms(1000); STOPL; Delay_ms(1000);
389 0113: BSF 03.5
390 0114: BCF 06.7
391 0115: BCF 03.5
392 0116: BCF 06.7
393 0117: BSF 03.5
394 0118: BCF 06.6
395 0119: BCF 03.5
396 011A: BSF 06.6
397 011B: MOVLW 04
398 011C: MOVWF 5D
399 011D: MOVLW FA
400 011E: MOVWF 5E
401 011F: CALL 07B
402 0120: DECFSZ 5D,F
403 0121: GOTO 11D
404 0122: BSF 03.5
405 0123: BCF 06.6
406 0124: BCF 03.5
407 0125: BCF 06.6
408 0126: BSF 03.5
409 0127: BCF 06.7
410 0128: BCF 03.5
411 0129: BCF 06.7
412 012A: MOVLW 04
413 012B: MOVWF 5D
414 012C: MOVLW FA
415 012D: MOVWF 5E
416 012E: CALL 07B
417 012F: DECFSZ 5D,F
418 0130: GOTO 12C
419 .................... BL; Delay_ms(1000); STOPL; Delay_ms(1000);
420 0131: BSF 03.5
421 0132: BCF 06.6
422 0133: BCF 03.5
423 0134: BCF 06.6
424 0135: BSF 03.5
425 0136: BCF 06.7
426 0137: BCF 03.5
427 0138: BSF 06.7
428 0139: MOVLW 04
429 013A: MOVWF 5D
430 013B: MOVLW FA
431 013C: MOVWF 5E
432 013D: CALL 07B
433 013E: DECFSZ 5D,F
434 013F: GOTO 13B
435 0140: BSF 03.5
436 0141: BCF 06.6
437 0142: BCF 03.5
438 0143: BCF 06.6
439 0144: BSF 03.5
440 0145: BCF 06.7
441 0146: BCF 03.5
442 0147: BCF 06.7
443 0148: MOVLW 04
444 0149: MOVWF 5D
445 014A: MOVLW FA
446 014B: MOVWF 5E
447 014C: CALL 07B
448 014D: DECFSZ 5D,F
449 014E: GOTO 14A
450 .................... Beep(880,100); Delay_ms(1000);
451 014F: MOVLW 03
452 0150: MOVWF 5E
453 0151: MOVLW 70
454 0152: MOVWF 5D
455 0153: CLRF 60
456 0154: MOVLW 64
457 0155: MOVWF 5F
458 0156: CALL 055
459 0157: MOVLW 04
460 0158: MOVWF 5D
461 0159: MOVLW FA
462 015A: MOVWF 5E
463 015B: CALL 07B
464 015C: DECFSZ 5D,F
465 015D: GOTO 159
466 .................... //oba pasy
467 .................... FL; FR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);
468 015E: BSF 03.5
469 015F: BCF 06.7
470 0160: BCF 03.5
471 0161: BCF 06.7
472 0162: BSF 03.5
473 0163: BCF 06.6
474 0164: BCF 03.5
475 0165: BSF 06.6
476 0166: BSF 03.5
477 0167: BCF 06.5
478 0168: BCF 03.5
479 0169: BCF 06.5
480 016A: BSF 03.5
481 016B: BCF 06.4
482 016C: BCF 03.5
483 016D: BSF 06.4
484 016E: MOVLW 04
485 016F: MOVWF 5D
486 0170: MOVLW FA
487 0171: MOVWF 5E
488 0172: CALL 07B
489 0173: DECFSZ 5D,F
490 0174: GOTO 170
491 0175: BSF 03.5
492 0176: BCF 06.6
493 0177: BCF 03.5
494 0178: BCF 06.6
495 0179: BSF 03.5
496 017A: BCF 06.7
497 017B: BCF 03.5
498 017C: BCF 06.7
499 017D: BSF 03.5
500 017E: BCF 06.4
501 017F: BCF 03.5
502 0180: BCF 06.4
503 0181: BSF 03.5
504 0182: BCF 06.5
505 0183: BCF 03.5
506 0184: BCF 06.5
507 0185: MOVLW 04
508 0186: MOVWF 5D
509 0187: MOVLW FA
510 0188: MOVWF 5E
511 0189: CALL 07B
512 018A: DECFSZ 5D,F
513 018B: GOTO 187
514 .................... BL; BR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);
515 018C: BSF 03.5
516 018D: BCF 06.6
517 018E: BCF 03.5
518 018F: BCF 06.6
519 0190: BSF 03.5
520 0191: BCF 06.7
521 0192: BCF 03.5
522 0193: BSF 06.7
523 0194: BSF 03.5
524 0195: BCF 06.4
525 0196: BCF 03.5
526 0197: BCF 06.4
527 0198: BSF 03.5
528 0199: BCF 06.5
529 019A: BCF 03.5
530 019B: BSF 06.5
531 019C: MOVLW 04
532 019D: MOVWF 5D
533 019E: MOVLW FA
534 019F: MOVWF 5E
535 01A0: CALL 07B
536 01A1: DECFSZ 5D,F
537 01A2: GOTO 19E
538 01A3: BSF 03.5
539 01A4: BCF 06.6
540 01A5: BCF 03.5
541 01A6: BCF 06.6
542 01A7: BSF 03.5
543 01A8: BCF 06.7
544 01A9: BCF 03.5
545 01AA: BCF 06.7
546 01AB: BSF 03.5
547 01AC: BCF 06.4
548 01AD: BCF 03.5
549 01AE: BCF 06.4
550 01AF: BSF 03.5
551 01B0: BCF 06.5
552 01B1: BCF 03.5
553 01B2: BCF 06.5
554 01B3: MOVLW 04
555 01B4: MOVWF 5D
556 01B5: MOVLW FA
557 01B6: MOVWF 5E
558 01B7: CALL 07B
559 01B8: DECFSZ 5D,F
560 01B9: GOTO 1B5
561 .................... };
562 01BA: GOTO 090
563 .................... while (input(DIAG_SENSORS)) // spusteni diagnostiky cidel
564 .................... {
565 01BB: BSF 03.5
566 01BC: BSF 06.2
567 01BD: BCF 03.5
568 01BE: BTFSS 06.2
569 01BF: GOTO 1EE
570 .................... if (RSENSOR) beep(1000,1000);
571 01C0: BSF 03.5
572 01C1: BTFSC 1C.7
573 01C2: GOTO 1CE
574 01C3: MOVLW 03
575 01C4: BCF 03.5
576 01C5: MOVWF 5E
577 01C6: MOVLW E8
578 01C7: MOVWF 5D
579 01C8: MOVLW 03
580 01C9: MOVWF 60
581 01CA: MOVLW E8
582 01CB: MOVWF 5F
583 01CC: CALL 055
584 01CD: BSF 03.5
585 .................... if (LSENSOR) beep(2000,2000);
586 01CE: BTFSC 1C.6
587 01CF: GOTO 1DB
588 01D0: MOVLW 07
589 01D1: BCF 03.5
590 01D2: MOVWF 5E
591 01D3: MOVLW D0
592 01D4: MOVWF 5D
593 01D5: MOVLW 07
594 01D6: MOVWF 60
595 01D7: MOVLW D0
596 01D8: MOVWF 5F
597 01D9: CALL 055
598 01DA: BSF 03.5
599 .................... if ((read_adc(ADC_READ_ONLY)<BUMPER_TRESHOLD)) beep(3000,3000);
600 01DB: BCF 03.5
601 01DC: BTFSS 1F.2
602 01DD: GOTO 1E0
603 01DE: BSF 03.5
604 01DF: GOTO 1DB
605 01E0: MOVF 1E,W
606 01E1: SUBLW 7F
607 01E2: BTFSS 03.0
608 01E3: GOTO 1ED
609 01E4: MOVLW 0B
610 01E5: MOVWF 5E
611 01E6: MOVLW B8
612 01E7: MOVWF 5D
613 01E8: MOVLW 0B
614 01E9: MOVWF 60
615 01EA: MOVLW B8
616 01EB: MOVWF 5F
617 01EC: CALL 055
618 .................... };
619 01ED: GOTO 1BB
620 .................... }
621 01EE: BCF 0A.3
622 01EF: GOTO 31F (RETURN)
623 .................... ///////////////////////////////////////////////////////////////////////////////
624 .................... void OtocSe() // otoci se zpet, kdyz je prekazka
625 .................... {
626 .................... unsigned int16 n;
627 ....................
628 .................... BR;BL;
629 01F0: BSF 03.5
630 01F1: BCF 06.4
631 01F2: BCF 03.5
632 01F3: BCF 06.4
633 01F4: BSF 03.5
634 01F5: BCF 06.5
635 01F6: BCF 03.5
636 01F7: BSF 06.5
637 01F8: BSF 03.5
638 01F9: BCF 06.6
639 01FA: BCF 03.5
640 01FB: BCF 06.6
641 01FC: BSF 03.5
642 01FD: BCF 06.7
643 01FE: BCF 03.5
644 01FF: BSF 06.7
645 .................... beep(800,400);
646 0200: MOVLW 03
647 0201: MOVWF 5E
648 0202: MOVLW 20
649 0203: MOVWF 5D
650 0204: MOVLW 01
651 0205: MOVWF 60
652 0206: MOVLW 90
653 0207: MOVWF 5F
654 0208: CALL 055
655 .................... beep(2000,1000);
656 0209: MOVLW 07
657 020A: MOVWF 5E
658 020B: MOVLW D0
659 020C: MOVWF 5D
660 020D: MOVLW 03
661 020E: MOVWF 60
662 020F: MOVLW E8
663 0210: MOVWF 5F
664 0211: CALL 055
665 .................... beep(900,400);
666 0212: MOVLW 03
667 0213: MOVWF 5E
668 0214: MOVLW 84
669 0215: MOVWF 5D
670 0216: MOVLW 01
671 0217: MOVWF 60
672 0218: MOVLW 90
673 0219: MOVWF 5F
674 021A: CALL 055
675 ....................
676 .................... BR; FL; Delay_ms(50); // otoc se 30° do prava
677 021B: BSF 03.5
678 021C: BCF 06.4
679 021D: BCF 03.5
680 021E: BCF 06.4
681 021F: BSF 03.5
682 0220: BCF 06.5
683 0221: BCF 03.5
684 0222: BSF 06.5
685 0223: BSF 03.5
686 0224: BCF 06.7
687 0225: BCF 03.5
688 0226: BCF 06.7
689 0227: BSF 03.5
690 0228: BCF 06.6
691 0229: BCF 03.5
692 022A: BSF 06.6
693 022B: MOVLW 32
694 022C: MOVWF 5E
695 022D: CALL 07B
696 .................... STOPL; STOPR;
697 022E: BSF 03.5
698 022F: BCF 06.6
699 0230: BCF 03.5
700 0231: BCF 06.6
701 0232: BSF 03.5
702 0233: BCF 06.7
703 0234: BCF 03.5
704 0235: BCF 06.7
705 0236: BSF 03.5
706 0237: BCF 06.4
707 0238: BCF 03.5
708 0239: BCF 06.4
709 023A: BSF 03.5
710 023B: BCF 06.5
711 023C: BCF 03.5
712 023D: BCF 06.5
713 .................... beep(1000,1000);
714 023E: MOVLW 03
715 023F: MOVWF 5E
716 0240: MOVLW E8
717 0241: MOVWF 5D
718 0242: MOVLW 03
719 0243: MOVWF 60
720 0244: MOVLW E8
721 0245: MOVWF 5F
722 0246: CALL 055
723 ....................
724 .................... BR; FL;
725 0247: BSF 03.5
726 0248: BCF 06.4
727 0249: BCF 03.5
728 024A: BCF 06.4
729 024B: BSF 03.5
730 024C: BCF 06.5
731 024D: BCF 03.5
732 024E: BSF 06.5
733 024F: BSF 03.5
734 0250: BCF 06.7
735 0251: BCF 03.5
736 0252: BCF 06.7
737 0253: BSF 03.5
738 0254: BCF 06.6
739 0255: BCF 03.5
740 0256: BSF 06.6
741 .................... for(n=40000;n>0;n--) // toc se, dokud nenarazis na caru
742 0257: MOVLW 9C
743 0258: MOVWF 5C
744 0259: MOVLW 40
745 025A: MOVWF 5B
746 025B: MOVF 5B,F
747 025C: BTFSS 03.2
748 025D: GOTO 261
749 025E: MOVF 5C,F
750 025F: BTFSC 03.2
751 0260: GOTO 279
752 .................... {
753 .................... line = RSENSOR; // cteni senzoru na caru
754 0261: CLRF 2A
755 0262: BSF 03.5
756 0263: BTFSC 1C.7
757 0264: GOTO 268
758 0265: BCF 03.5
759 0266: INCF 2A,F
760 0267: BSF 03.5
761 .................... line |= LSENSOR << 1;
762 0268: MOVLW 00
763 0269: BTFSS 1C.6
764 026A: MOVLW 01
765 026B: MOVWF 77
766 026C: BCF 03.0
767 026D: RLF 77,F
768 026E: MOVF 77,W
769 026F: BCF 03.5
770 0270: IORWF 2A,F
771 .................... if (line!=0) break;
772 0271: MOVF 2A,F
773 0272: BTFSS 03.2
774 0273: GOTO 279
775 .................... }
776 0274: MOVF 5B,W
777 0275: BTFSC 03.2
778 0276: DECF 5C,F
779 0277: DECF 5B,F
780 0278: GOTO 25B
781 .................... STOPR; STOPL;
782 0279: BSF 03.5
783 027A: BCF 06.4
784 027B: BCF 03.5
785 027C: BCF 06.4
786 027D: BSF 03.5
787 027E: BCF 06.5
788 027F: BCF 03.5
789 0280: BCF 06.5
790 0281: BSF 03.5
791 0282: BCF 06.6
792 0283: BCF 03.5
793 0284: BCF 06.6
794 0285: BSF 03.5
795 0286: BCF 06.7
796 0287: BCF 03.5
797 0288: BCF 06.7
798 ....................
799 .................... line=L; // caru jsme prejeli, tak je vlevo
800 0289: MOVLW 02
801 028A: MOVWF 2A
802 .................... cirkus=0;
803 028B: CLRF 2E
804 .................... }
805 028C: BCF 0A.3
806 028D: GOTO 34B (RETURN)
807 ....................
808 ....................
809 .................... void main()
810 .................... {
811 028E: CLRF 04
812 028F: MOVLW 1F
813 0290: ANDWF 03,F
814 0291: BSF 03.5
815 0292: BCF 1F.4
816 0293: BCF 1F.5
817 0294: MOVF 1B,W
818 0295: ANDLW 80
819 0296: MOVWF 1B
820 0297: MOVLW 07
821 0298: MOVWF 1C
822 0299: MOVF 1C,W
823 029A: BCF 03.5
824 029B: BCF 0D.6
825 029C: MOVLW 60
826 029D: BSF 03.5
827 029E: MOVWF 0F
828 .................... unsigned int16 n; // pro FOR
829 .................... unsigned int16 i;
830 ....................
831 .................... STOPL; STOPR; // prepne vystupy na ovladani motoru na output a zastavi
832 029F: BCF 06.6
833 02A0: BCF 03.5
834 02A1: BCF 06.6
835 02A2: BSF 03.5
836 02A3: BCF 06.7
837 02A4: BCF 03.5
838 02A5: BCF 06.7
839 02A6: BSF 03.5
840 02A7: BCF 06.4
841 02A8: BCF 03.5
842 02A9: BCF 06.4
843 02AA: BSF 03.5
844 02AB: BCF 06.5
845 02AC: BCF 03.5
846 02AD: BCF 06.5
847 ....................
848 .................... setup_oscillator(OSC_4MHZ|OSC_INTRC); // 4 MHz interni RC oscilator
849 02AE: MOVLW 62
850 02AF: BSF 03.5
851 02B0: MOVWF 0F
852 ....................
853 .................... port_b_pullups(TRUE); // pullups pro piano na diagnostiku
854 02B1: BCF 01.7
855 .................... setup_spi(FALSE);
856 02B2: BCF 03.5
857 02B3: BCF 14.5
858 02B4: BSF 03.5
859 02B5: BCF 06.2
860 02B6: BSF 06.1
861 02B7: BCF 06.4
862 02B8: MOVLW 00
863 02B9: BCF 03.5
864 02BA: MOVWF 14
865 02BB: BSF 03.5
866 02BC: MOVWF 14
867 .................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Casovac pro PWM
868 02BD: MOVF 01,W
869 02BE: ANDLW C7
870 02BF: IORLW 08
871 02C0: MOVWF 01
872 ....................
873 .................... setup_timer_2(T2_DIV_BY_4,255,10); // Casovac pro regulaci
874 02C1: MOVLW 48
875 02C2: MOVWF 78
876 02C3: IORLW 05
877 02C4: BCF 03.5
878 02C5: MOVWF 12
879 02C6: MOVLW FF
880 02C7: BSF 03.5
881 02C8: MOVWF 12
882 .................... // preruseni kazdych 10ms
883 .................... setup_adc_ports(sAN2|VSS_VDD); // nastaveni A/D prevodniku pro naraznik
884 02C9: BCF 1F.4
885 02CA: BCF 1F.5
886 02CB: MOVF 1B,W
887 02CC: ANDLW 80
888 02CD: IORLW 04
889 02CE: MOVWF 1B
890 .................... setup_adc(ADC_CLOCK_INTERNAL);
891 02CF: BCF 1F.6
892 02D0: BCF 03.5
893 02D1: BSF 1F.6
894 02D2: BSF 1F.7
895 02D3: BSF 03.5
896 02D4: BCF 1F.7
897 02D5: BCF 03.5
898 02D6: BSF 1F.0
899 .................... set_adc_channel(2);
900 02D7: MOVLW 10
901 02D8: MOVWF 78
902 02D9: MOVF 1F,W
903 02DA: ANDLW C7
904 02DB: IORWF 78,W
905 02DC: MOVWF 1F
906 .................... setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // Casovac pro naraznik
907 02DD: MOVLW 85
908 02DE: MOVWF 10
909 .................... setup_ccp1(CCP_COMPARE_RESET_TIMER);
910 02DF: BSF 03.5
911 02E0: BSF 06.3
912 02E1: MOVLW 0B
913 02E2: BCF 03.5
914 02E3: MOVWF 17
915 .................... CCP_1=(2^10)-1; // prevod kazdou 1ms
916 02E4: CLRF 16
917 02E5: MOVLW 07
918 02E6: MOVWF 15
919 ....................
920 .................... setup_comparator(A0_VR_A1_VR); // inicializace komparatoru pro cidla cary
921 02E7: MOVLW 02
922 02E8: BSF 03.5
923 02E9: MOVWF 1C
924 02EA: MOVF 05,W
925 02EB: IORLW 03
926 02EC: MOVWF 05
927 02ED: MOVLW 03
928 02EE: MOVWF 77
929 02EF: DECFSZ 77,F
930 02F0: GOTO 2EF
931 02F1: MOVF 1C,W
932 02F2: BCF 03.5
933 02F3: BCF 0D.6
934 .................... setup_vref(VREF_HIGH|TRESHOLD); // 32 kroku od 0.25 do 0.75 Vdd
935 02F4: MOVLW 8F
936 02F5: BSF 03.5
937 02F6: MOVWF 1D
938 ....................
939 .................... Beep(1000,200); //double beep
940 02F7: MOVLW 03
941 02F8: BCF 03.5
942 02F9: MOVWF 5E
943 02FA: MOVLW E8
944 02FB: MOVWF 5D
945 02FC: CLRF 60
946 02FD: MOVLW C8
947 02FE: MOVWF 5F
948 02FF: CALL 055
949 .................... Delay_ms(50);
950 0300: MOVLW 32
951 0301: MOVWF 5E
952 0302: CALL 07B
953 .................... Beep(1000,200);
954 0303: MOVLW 03
955 0304: MOVWF 5E
956 0305: MOVLW E8
957 0306: MOVWF 5D
958 0307: CLRF 60
959 0308: MOVLW C8
960 0309: MOVWF 5F
961 030A: CALL 055
962 .................... Delay_ms(1000); // 1s
963 030B: MOVLW 04
964 030C: MOVWF 5B
965 030D: MOVLW FA
966 030E: MOVWF 5E
967 030F: CALL 07B
968 0310: DECFSZ 5B,F
969 0311: GOTO 30D
970 ....................
971 .................... // povoleni rizeni rychlosti zataceni pres preruseni
972 .................... enable_interrupts(INT_TIMER2);
973 0312: BSF 03.5
974 0313: BSF 0C.1
975 .................... enable_interrupts(GLOBAL);
976 0314: MOVLW C0
977 0315: BCF 03.5
978 0316: IORWF 0B,F
979 ....................
980 .................... /*---------------------------------------------------------------------------*/
981 .................... sensors=S;
982 0317: MOVLW 03
983 0318: MOVWF 29
984 .................... line=S;
985 0319: MOVWF 2A
986 .................... last=S;
987 031A: MOVWF 2C
988 .................... cirkus=0;
989 031B: CLRF 2E
990 .................... // movement=S;
991 .................... speed=FW_POMALU;
992 031C: MOVLW AA
993 031D: MOVWF 2B
994 ....................
995 .................... diagnostika();
996 031E: GOTO 090
997 .................... Delay_ms(500);
998 031F: MOVLW 02
999 0320: MOVWF 5B
1000 0321: MOVLW FA
1001 0322: MOVWF 5E
1002 0323: CALL 07B
1003 0324: DECFSZ 5B,F
1004 0325: GOTO 321
1005 .................... Beep(1000,200);
1006 0326: MOVLW 03
1007 0327: MOVWF 5E
1008 0328: MOVLW E8
1009 0329: MOVWF 5D
1010 032A: CLRF 60
1011 032B: MOVLW C8
1012 032C: MOVWF 5F
1013 032D: CALL 055
1014 .................... Delay_ms(500);
1015 032E: MOVLW 02
1016 032F: MOVWF 5B
1017 0330: MOVLW FA
1018 0331: MOVWF 5E
1019 0332: CALL 07B
1020 0333: DECFSZ 5B,F
1021 0334: GOTO 330
1022 ....................
1023 .................... while(true) // hlavni smycka (jizda podle cary)
1024 .................... {
1025 .................... sensors = RSENSOR; // cteni senzoru na caru
1026 0335: CLRF 29
1027 0336: BSF 03.5
1028 0337: BTFSC 1C.7
1029 0338: GOTO 33C
1030 0339: BCF 03.5
1031 033A: INCF 29,F
1032 033B: BSF 03.5
1033 .................... sensors |= LSENSOR << 1;
1034 033C: MOVLW 00
1035 033D: BTFSS 1C.6
1036 033E: MOVLW 01
1037 033F: MOVWF 77
1038 0340: BCF 03.0
1039 0341: RLF 77,F
1040 0342: MOVF 77,W
1041 0343: BCF 03.5
1042 0344: IORWF 29,F
1043 ....................
1044 .................... if (read_adc(ADC_READ_ONLY)<BUMPER_TRESHOLD) OtocSe();
1045 0345: BTFSC 1F.2
1046 0346: GOTO 345
1047 0347: MOVF 1E,W
1048 0348: SUBLW 7F
1049 0349: BTFSC 03.0
1050 034A: GOTO 1F0
1051 ....................
1052 .................... switch (sensors) // zatacej podle toho, kde vidis caru
1053 .................... {
1054 034B: MOVF 29,W
1055 034C: XORLW 03
1056 034D: BTFSC 03.2
1057 034E: GOTO 356
1058 034F: XORLW 01
1059 0350: BTFSC 03.2
1060 0351: GOTO 38B
1061 0352: XORLW 03
1062 0353: BTFSC 03.2
1063 0354: GOTO 3C2
1064 0355: GOTO 3F9
1065 .................... case S: // rovne
1066 .................... GO(L, F, FW_STREDNE+rovinka); GO(R, F, FW_STREDNE+rovinka);
1067 0356: MOVF 01,W
1068 0357: MOVWF 5B
1069 0358: MOVLW BE
1070 0359: ADDWF 2D,W
1071 035A: SUBWF 5B,W
1072 035B: BTFSC 03.2
1073 035C: GOTO 35F
1074 035D: BTFSC 03.0
1075 035E: GOTO 368
1076 035F: BSF 03.5
1077 0360: BCF 06.7
1078 0361: BCF 03.5
1079 0362: BCF 06.7
1080 0363: BSF 03.5
1081 0364: BCF 06.6
1082 0365: BCF 03.5
1083 0366: BSF 06.6
1084 0367: GOTO 370
1085 0368: BSF 03.5
1086 0369: BCF 06.6
1087 036A: BCF 03.5
1088 036B: BCF 06.6
1089 036C: BSF 03.5
1090 036D: BCF 06.7
1091 036E: BCF 03.5
1092 036F: BCF 06.7
1093 0370: MOVF 01,W
1094 0371: MOVWF 5B
1095 0372: MOVLW BE
1096 0373: ADDWF 2D,W
1097 0374: SUBWF 5B,W
1098 0375: BTFSC 03.2
1099 0376: GOTO 379
1100 0377: BTFSC 03.0
1101 0378: GOTO 382
1102 0379: BSF 03.5
1103 037A: BCF 06.5
1104 037B: BCF 03.5
1105 037C: BCF 06.5
1106 037D: BSF 03.5
1107 037E: BCF 06.4
1108 037F: BCF 03.5
1109 0380: BSF 06.4
1110 0381: GOTO 38A
1111 0382: BSF 03.5
1112 0383: BCF 06.4
1113 0384: BCF 03.5
1114 0385: BCF 06.4
1115 0386: BSF 03.5
1116 0387: BCF 06.5
1117 0388: BCF 03.5
1118 0389: BCF 06.5
1119 .................... continue;
1120 038A: GOTO 335
1121 .................... case L: // trochu vlevo
1122 .................... GO(L, F, FW_POMALU+rovinka); GO(R, F, FW_STREDNE+rovinka);
1123 038B: MOVF 01,W
1124 038C: MOVWF 5B
1125 038D: MOVLW AA
1126 038E: ADDWF 2D,W
1127 038F: SUBWF 5B,W
1128 0390: BTFSC 03.2
1129 0391: GOTO 394
1130 0392: BTFSC 03.0
1131 0393: GOTO 39D
1132 0394: BSF 03.5
1133 0395: BCF 06.7
1134 0396: BCF 03.5
1135 0397: BCF 06.7
1136 0398: BSF 03.5
1137 0399: BCF 06.6
1138 039A: BCF 03.5
1139 039B: BSF 06.6
1140 039C: GOTO 3A5
1141 039D: BSF 03.5
1142 039E: BCF 06.6
1143 039F: BCF 03.5
1144 03A0: BCF 06.6
1145 03A1: BSF 03.5
1146 03A2: BCF 06.7
1147 03A3: BCF 03.5
1148 03A4: BCF 06.7
1149 03A5: MOVF 01,W
1150 03A6: MOVWF 5B
1151 03A7: MOVLW BE
1152 03A8: ADDWF 2D,W
1153 03A9: SUBWF 5B,W
1154 03AA: BTFSC 03.2
1155 03AB: GOTO 3AE
1156 03AC: BTFSC 03.0
1157 03AD: GOTO 3B7
1158 03AE: BSF 03.5
1159 03AF: BCF 06.5
1160 03B0: BCF 03.5
1161 03B1: BCF 06.5
1162 03B2: BSF 03.5
1163 03B3: BCF 06.4
1164 03B4: BCF 03.5
1165 03B5: BSF 06.4
1166 03B6: GOTO 3BF
1167 03B7: BSF 03.5
1168 03B8: BCF 06.4
1169 03B9: BCF 03.5
1170 03BA: BCF 06.4
1171 03BB: BSF 03.5
1172 03BC: BCF 06.5
1173 03BD: BCF 03.5
1174 03BE: BCF 06.5
1175 .................... line=L;
1176 03BF: MOVLW 02
1177 03C0: MOVWF 2A
1178 .................... continue;
1179 03C1: GOTO 335
1180 .................... case R: // trochu vpravo
1181 .................... GO(R, F, FW_POMALU+rovinka); GO(L, F, FW_STREDNE+rovinka);
1182 03C2: MOVF 01,W
1183 03C3: MOVWF 5B
1184 03C4: MOVLW AA
1185 03C5: ADDWF 2D,W
1186 03C6: SUBWF 5B,W
1187 03C7: BTFSC 03.2
1188 03C8: GOTO 3CB
1189 03C9: BTFSC 03.0
1190 03CA: GOTO 3D4
1191 03CB: BSF 03.5
1192 03CC: BCF 06.5
1193 03CD: BCF 03.5
1194 03CE: BCF 06.5
1195 03CF: BSF 03.5
1196 03D0: BCF 06.4
1197 03D1: BCF 03.5
1198 03D2: BSF 06.4
1199 03D3: GOTO 3DC
1200 03D4: BSF 03.5
1201 03D5: BCF 06.4
1202 03D6: BCF 03.5
1203 03D7: BCF 06.4
1204 03D8: BSF 03.5
1205 03D9: BCF 06.5
1206 03DA: BCF 03.5
1207 03DB: BCF 06.5
1208 03DC: MOVF 01,W
1209 03DD: MOVWF 5B
1210 03DE: MOVLW BE
1211 03DF: ADDWF 2D,W
1212 03E0: SUBWF 5B,W
1213 03E1: BTFSC 03.2
1214 03E2: GOTO 3E5
1215 03E3: BTFSC 03.0
1216 03E4: GOTO 3EE
1217 03E5: BSF 03.5
1218 03E6: BCF 06.7
1219 03E7: BCF 03.5
1220 03E8: BCF 06.7
1221 03E9: BSF 03.5
1222 03EA: BCF 06.6
1223 03EB: BCF 03.5
1224 03EC: BSF 06.6
1225 03ED: GOTO 3F6
1226 03EE: BSF 03.5
1227 03EF: BCF 06.6
1228 03F0: BCF 03.5
1229 03F1: BCF 06.6
1230 03F2: BSF 03.5
1231 03F3: BCF 06.7
1232 03F4: BCF 03.5
1233 03F5: BCF 06.7
1234 .................... line=R;
1235 03F6: MOVLW 01
1236 03F7: MOVWF 2A
1237 .................... continue;
1238 03F8: GOTO 335
1239 .................... default: // kdyz jsou obe cidla mimo caru, tak pokracuj dal
1240 .................... };
1241 .................... rovinka=0;
1242 03F9: CLRF 2D
1243 ....................
1244 .................... if (last!=line) // pokud si prejel caru z jedne strany na druhou stranu, tak zabrzdi
1245 03FA: MOVF 2A,W
1246 03FB: SUBWF 2C,W
1247 03FC: BTFSC 03.2
1248 03FD: GOTO 48F
1249 .................... {
1250 .................... last=line;
1251 03FE: MOVF 2A,W
1252 03FF: MOVWF 2C
1253 .................... speed=FW_ZATACKA;
1254 0400: MOVLW C8
1255 0401: MOVWF 2B
1256 .................... cirkus++;
1257 0402: INCF 2E,F
1258 .................... if (cirkus>10)
1259 0403: MOVF 2E,W
1260 0404: SUBLW 0A
1261 0405: BTFSC 03.0
1262 0406: GOTO 48F
1263 .................... {
1264 .................... STOPL; STOPR;
1265 0407: BSF 03.5
1266 0408: BCF 06.6
1267 0409: BCF 03.5
1268 040A: BCF 06.6
1269 040B: BSF 03.5
1270 040C: BCF 06.7
1271 040D: BCF 03.5
1272 040E: BCF 06.7
1273 040F: BSF 03.5
1274 0410: BCF 06.4
1275 0411: BCF 03.5
1276 0412: BCF 06.4
1277 0413: BSF 03.5
1278 0414: BCF 06.5
1279 0415: BCF 03.5
1280 0416: BCF 06.5
1281 .................... cirkus=0;
1282 0417: CLRF 2E
1283 .................... disable_interrupts(GLOBAL);
1284 0418: BCF 0B.6
1285 0419: BCF 0B.7
1286 041A: BTFSC 0B.7
1287 041B: GOTO 419
1288 .................... beep(1000,400);
1289 041C: MOVLW 03
1290 041D: MOVWF 5E
1291 041E: MOVLW E8
1292 041F: MOVWF 5D
1293 0420: MOVLW 01
1294 0421: MOVWF 60
1295 0422: MOVLW 90
1296 0423: MOVWF 5F
1297 0424: CALL 055
1298 .................... for(n=3000; n>3950; n--) beep(n,10);
1299 0425: MOVLW 0B
1300 0426: MOVWF 58
1301 0427: MOVLW B8
1302 0428: MOVWF 57
1303 0429: MOVF 58,W
1304 042A: SUBLW 0E
1305 042B: BTFSC 03.0
1306 042C: GOTO 441
1307 042D: XORLW FF
1308 042E: BTFSS 03.2
1309 042F: GOTO 434
1310 0430: MOVF 57,W
1311 0431: SUBLW 6E
1312 0432: BTFSC 03.0
1313 0433: GOTO 441
1314 0434: MOVF 58,W
1315 0435: MOVWF 5E
1316 0436: MOVF 57,W
1317 0437: MOVWF 5D
1318 0438: CLRF 60
1319 0439: MOVLW 0A
1320 043A: MOVWF 5F
1321 043B: CALL 055
1322 043C: MOVF 57,W
1323 043D: BTFSC 03.2
1324 043E: DECF 58,F
1325 043F: DECF 57,F
1326 0440: GOTO 429
1327 .................... beep(2000,200);
1328 0441: MOVLW 07
1329 0442: MOVWF 5E
1330 0443: MOVLW D0
1331 0444: MOVWF 5D
1332 0445: CLRF 60
1333 0446: MOVLW C8
1334 0447: MOVWF 5F
1335 0448: CALL 055
1336 .................... beep(900,400);
1337 0449: MOVLW 03
1338 044A: MOVWF 5E
1339 044B: MOVLW 84
1340 044C: MOVWF 5D
1341 044D: MOVLW 01
1342 044E: MOVWF 60
1343 044F: MOVLW 90
1344 0450: MOVWF 5F
1345 0451: CALL 055
1346 .................... for(n=2950; n<3000; n++) beep(n,10);
1347 0452: MOVLW 0B
1348 0453: MOVWF 58
1349 0454: MOVLW 86
1350 0455: MOVWF 57
1351 0456: MOVF 58,W
1352 0457: SUBLW 0B
1353 0458: BTFSS 03.0
1354 0459: GOTO 46C
1355 045A: BTFSS 03.2
1356 045B: GOTO 460
1357 045C: MOVF 57,W
1358 045D: SUBLW B7
1359 045E: BTFSS 03.0
1360 045F: GOTO 46C
1361 0460: MOVF 58,W
1362 0461: MOVWF 5E
1363 0462: MOVF 57,W
1364 0463: MOVWF 5D
1365 0464: CLRF 60
1366 0465: MOVLW 0A
1367 0466: MOVWF 5F
1368 0467: CALL 055
1369 0468: INCF 57,F
1370 0469: BTFSC 03.2
1371 046A: INCF 58,F
1372 046B: GOTO 456
1373 .................... beep(4000,400);
1374 046C: MOVLW 0F
1375 046D: MOVWF 5E
1376 046E: MOVLW A0
1377 046F: MOVWF 5D
1378 0470: MOVLW 01
1379 0471: MOVWF 60
1380 0472: MOVLW 90
1381 0473: MOVWF 5F
1382 0474: CALL 055
1383 .................... beep(1000,100);
1384 0475: MOVLW 03
1385 0476: MOVWF 5E
1386 0477: MOVLW E8
1387 0478: MOVWF 5D
1388 0479: CLRF 60
1389 047A: MOVLW 64
1390 047B: MOVWF 5F
1391 047C: CALL 055
1392 .................... beep(3000,400);
1393 047D: MOVLW 0B
1394 047E: MOVWF 5E
1395 047F: MOVLW B8
1396 0480: MOVWF 5D
1397 0481: MOVLW 01
1398 0482: MOVWF 60
1399 0483: MOVLW 90
1400 0484: MOVWF 5F
1401 0485: CALL 055
1402 .................... Delay_ms(1000);
1403 0486: MOVLW 04
1404 0487: MOVWF 5B
1405 0488: MOVLW FA
1406 0489: MOVWF 5E
1407 048A: CALL 07B
1408 048B: DECFSZ 5B,F
1409 048C: GOTO 488
1410 .................... enable_interrupts(GLOBAL);
1411 048D: MOVLW C0
1412 048E: IORWF 0B,F
1413 .................... }
1414 .................... };
1415 ....................
1416 .................... if (L==line) // kdyz jsou obe cidla mimo caru, zatoc na caru
1417 048F: MOVF 2A,W
1418 0490: SUBLW 02
1419 0491: BTFSS 03.2
1420 0492: GOTO 4B1
1421 .................... {
1422 .................... STOPL;
1423 0493: BSF 03.5
1424 0494: BCF 06.6
1425 0495: BCF 03.5
1426 0496: BCF 06.6
1427 0497: BSF 03.5
1428 0498: BCF 06.7
1429 0499: BCF 03.5
1430 049A: BCF 06.7
1431 .................... GO(R, F, speed);
1432 049B: MOVF 01,W
1433 049C: SUBWF 2B,W
1434 049D: BTFSS 03.0
1435 049E: GOTO 4A8
1436 049F: BSF 03.5
1437 04A0: BCF 06.5
1438 04A1: BCF 03.5
1439 04A2: BCF 06.5
1440 04A3: BSF 03.5
1441 04A4: BCF 06.4
1442 04A5: BCF 03.5
1443 04A6: BSF 06.4
1444 04A7: GOTO 4B0
1445 04A8: BSF 03.5
1446 04A9: BCF 06.4
1447 04AA: BCF 03.5
1448 04AB: BCF 06.4
1449 04AC: BSF 03.5
1450 04AD: BCF 06.5
1451 04AE: BCF 03.5
1452 04AF: BCF 06.5
1453 .................... }
1454 .................... else
1455 04B0: GOTO 4CE
1456 .................... {
1457 .................... STOPR;
1458 04B1: BSF 03.5
1459 04B2: BCF 06.4
1460 04B3: BCF 03.5
1461 04B4: BCF 06.4
1462 04B5: BSF 03.5
1463 04B6: BCF 06.5
1464 04B7: BCF 03.5
1465 04B8: BCF 06.5
1466 .................... GO(L, F, speed);
1467 04B9: MOVF 01,W
1468 04BA: SUBWF 2B,W
1469 04BB: BTFSS 03.0
1470 04BC: GOTO 4C6
1471 04BD: BSF 03.5
1472 04BE: BCF 06.7
1473 04BF: BCF 03.5
1474 04C0: BCF 06.7
1475 04C1: BSF 03.5
1476 04C2: BCF 06.6
1477 04C3: BCF 03.5
1478 04C4: BSF 06.6
1479 04C5: GOTO 4CE
1480 04C6: BSF 03.5
1481 04C7: BCF 06.6
1482 04C8: BCF 03.5
1483 04C9: BCF 06.6
1484 04CA: BSF 03.5
1485 04CB: BCF 06.7
1486 04CC: BCF 03.5
1487 04CD: BCF 06.7
1488 .................... }
1489 .................... } // while(true)
1490 04CE: GOTO 335
1491 .................... }
1492 ....................
1493 04CF: SLEEP
1494  
1495 Configuration Fuses:
1496 Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IO
1497 Word 2: 3FFC NOFCMEN NOIESO