CCS PCM C Compiler, Version 3.221, 27853 27-IV-05 14:16Filename: D:\KAKLIK\programy\PIC_C\roboti\merkur\PIC16F88\turn_R\tank.LSTROM used: 1587 words (39%)Largest free fragment is 2048RAM used: 87 (50%) at main() level98 (56%) worst caseStack: 4 worst case (3 in main + 1 for interrupts)*0000: MOVLW 000001: MOVWF 0A0002: GOTO 4720003: NOP0004: MOVWF 7F0005: SWAPF 03,W0006: CLRF 030007: MOVWF 210008: MOVF 7F,W0009: MOVWF 20000A: MOVF 0A,W000B: MOVWF 28000C: CLRF 0A000D: SWAPF 20,F000E: MOVF 04,W000F: MOVWF 220010: MOVF 77,W0011: MOVWF 230012: MOVF 78,W0013: MOVWF 240014: MOVF 79,W0015: MOVWF 250016: MOVF 7A,W0017: MOVWF 260018: MOVF 7B,W0019: MOVWF 27001A: BCF 03.7001B: BCF 03.5001C: MOVLW 8C001D: MOVWF 04001E: BTFSS 00.1001F: GOTO 0220020: BTFSC 0C.10021: GOTO 0350022: MOVF 22,W0023: MOVWF 040024: MOVF 23,W0025: MOVWF 770026: MOVF 24,W0027: MOVWF 780028: MOVF 25,W0029: MOVWF 79002A: MOVF 26,W002B: MOVWF 7A002C: MOVF 27,W002D: MOVWF 7B002E: MOVF 28,W002F: MOVWF 0A0030: SWAPF 21,W0031: MOVWF 030032: SWAPF 7F,F0033: SWAPF 7F,W0034: RETFIE0035: BCF 0A.30036: GOTO 037.................... #include "tank.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)*0047: MOVLW 120048: BSF 03.50049: SUBWF 22,F004A: BTFSS 03.0004B: GOTO 05A004C: MOVLW A2004D: MOVWF 04004E: MOVLW FC004F: ANDWF 00,F0050: BCF 03.00051: RRF 00,F0052: RRF 00,F0053: MOVF 00,W0054: BTFSC 03.20055: GOTO 05A0056: GOTO 0580057: NOP0058: DECFSZ 00,F0059: GOTO 057005A: BCF 03.5005B: RETLW 00*0088: MOVLW 740089: MOVWF 04008A: MOVF 00,W008B: BTFSC 03.2008C: GOTO 09C008D: MOVLW 01008E: MOVWF 78008F: CLRF 770090: DECFSZ 77,F0091: GOTO 0900092: DECFSZ 78,F0093: GOTO 08F0094: MOVLW 4A0095: MOVWF 770096: DECFSZ 77,F0097: GOTO 0960098: NOP0099: NOP009A: DECFSZ 00,F009B: GOTO 08D009C: RETLW 00................................................................................ #define DEBUG........................................ #define TXo PIN_A3 // To the transmitter modulator.................... #include "AX25.c" // podprogram pro prenos telemetrie.................... #list............................................................ unsigned int8 sensors; // pomocna promenna pro cteni cidel na caru.................... unsigned int8 line; // na ktere strane byla detekovana cara.................... unsigned int8 speed; // rychlost zataceni.................... unsigned int8 rovinka; // pocitadlo pro zjisteni rovneho useku.................... unsigned int8 last; // kde byla cara, kdyz byly minule cidla mimo.................... unsigned int8 movement; // obsahuje aktualni smer zataceni.................... unsigned int8 dira; // pocita dobu po kterou je ztracena cara........................................ // Konstanty pro dynamiku pohybu.................... #define T_DIRA 120 // po jakem case zataceni se detekuje dira.................... #define INC_SPEED 1 // prirustek rychlosti v jednom kroku.................... #define FW_POMALU 230 // trochu mimo caru vnitrni pas.................... #define FW_ZATACKA 240 // rychlost vnejsiho kola pri zataceni.................... #define FW_STREDNE 240 // trochu mimo caru vnejsi pas.................... #define COUVANI 750 // couvnuti zpet na caru, po detekci diry.................... #define PRES_DIRU 300.................... #define MAX_ROVINKA (255-FW_STREDNE).................... #define TRESHOLD 6 // rozhodovaci uroven komparatoru, 0xF = 0.75*Vdd.................... #define BUMPER_TRESHOLD 128.................... #define CIK_CAK 30000.................... #define T_CIHLA 50 // perioda detekce cihly........................................ //motory //Napred vypnout potom zapnout!.................... #define FR output_low(PIN_B5); output_high(PIN_B4) // Vpred.................... #define FL output_low(PIN_B7); output_high(PIN_B6).................... #define BR output_low(PIN_B4); output_high(PIN_B5) // Vzad.................... #define BL output_low(PIN_B6); output_high(PIN_B7).................... #define STOPR output_low(PIN_B4);output_low(PIN_B5) // Zastav.................... #define STOPL output_low(PIN_B6);output_low(PIN_B7)........................................ #define L 0b10 // left.................... #define R 0b01 // right.................... #define S 0b11 // straight........................................ //cidla.................... #define RSENSOR C2OUT // Senzory na caru.................... #define LSENSOR C1OUT.................... #define BUMPER PIN_A4 // Senzor na cihlu........................................ #define DIAG_SERVO PIN_B3 // Propojka pro diagnosticky mod.................... #define DIAG_SENSORS PIN_B2 // Propojka pro diagnosticky mod........................................ #DEFINE SOUND_HI PIN_A6 // komplementarni vystupy pro piezo pipak.................... #DEFINE SOUND_LO PIN_A7........................................ char AXstring[40]; // Buffer pro prenos telemetrie........................................ // makro pro PWM.................... #define GO(motor, direction, power) if(get_timer0()<=power) \.................... {direction##motor;} else {stop##motor;}........................................ #int_TIMER2.................... void TIMER2_isr().................... {.................... if (speed<255) speed+=INC_SPEED;*0037: INCFSZ 42,W0038: GOTO 03A0039: GOTO 03C003A: MOVLW 01003B: ADDWF 42,F.................... if (rovinka<MAX_ROVINKA) rovinka++;003C: MOVF 43,W003D: SUBLW 0E003E: BTFSC 03.0003F: INCF 43,F.................... if (dira<=T_DIRA) dira++;0040: MOVF 46,W0041: SUBLW 780042: BTFSC 03.00043: INCF 46,F.................... }.................... // Primitivni Pipani0044: BCF 0C.10045: BCF 0A.30046: GOTO 022.................... void beep(unsigned int16 period, unsigned int16 length).................... {.................... unsigned int16 nn;........................................ for(nn=length; nn>0; nn--)*005C: MOVF 7D,W005D: BSF 03.5005E: MOVWF 21005F: MOVF 7C,W0060: MOVWF 200061: MOVF 20,F0062: BTFSS 03.20063: GOTO 0670064: MOVF 21,F0065: BTFSC 03.20066: GOTO 086.................... {.................... output_high(SOUND_HI);output_low(SOUND_LO);0067: BCF 05.60068: BCF 03.50069: BSF 05.6006A: BSF 03.5006B: BCF 05.7006C: BCF 03.5006D: BCF 05.7.................... delay_us(period);006E: MOVF 74,W006F: BSF 03.50070: MOVWF 220071: BCF 03.50072: CALL 047.................... output_high(SOUND_LO);output_low(SOUND_HI);0073: BSF 03.50074: BCF 05.70075: BCF 03.50076: BSF 05.70077: BSF 03.50078: BCF 05.60079: BCF 03.5007A: BCF 05.6.................... delay_us(period);007B: MOVF 74,W007C: BSF 03.5007D: MOVWF 22007E: BCF 03.5007F: CALL 047.................... }0080: BSF 03.50081: MOVF 20,W0082: BTFSC 03.20083: DECF 21,F0084: DECF 20,F0085: GOTO 061.................... }0086: BCF 03.50087: RETLW 00.................... /******************************************************************************/.................... void diagnostika().................... {.................... unsigned int16 n;........................................ while (input(DIAG_SERVO)) // Propojka, ktera spousti diagnostiku.................... {*009D: BSF 03.5009E: BSF 06.3009F: BCF 03.500A0: BTFSS 06.300A1: GOTO 1C8.................... for (n=500; n<800; n+=100)00A2: MOVLW 0100A3: MOVWF 7200A4: MOVLW F400A5: MOVWF 7100A6: MOVF 72,W00A7: SUBLW 0300A8: BTFSS 03.000A9: GOTO 0BE00AA: BTFSS 03.200AB: GOTO 0B000AC: MOVF 71,W00AD: SUBLW 1F00AE: BTFSS 03.000AF: GOTO 0BE.................... {.................... beep(n,n); //beep UP00B0: MOVF 72,W00B1: MOVWF 7500B2: MOVF 71,W00B3: MOVWF 7400B4: MOVF 72,W00B5: MOVWF 7D00B6: MOVF 71,W00B7: MOVWF 7C00B8: CALL 05C.................... };00B9: MOVLW 6400BA: ADDWF 71,F00BB: BTFSC 03.000BC: INCF 72,F00BD: GOTO 0A6.................... Delay_ms(1000);00BE: MOVLW 0400BF: MOVWF 7300C0: MOVLW FA00C1: MOVWF 7400C2: CALL 08800C3: DECFSZ 73,F00C4: GOTO 0C0.................... //zastav vse.................... STOPL; STOPR;00C5: BSF 03.500C6: BCF 06.600C7: BCF 03.500C8: BCF 06.600C9: BSF 03.500CA: BCF 06.700CB: BCF 03.500CC: BCF 06.700CD: BSF 03.500CE: BCF 06.400CF: BCF 03.500D0: BCF 06.400D1: BSF 03.500D2: BCF 06.500D3: BCF 03.500D4: BCF 06.5.................... //pravy pas.................... FR; Delay_ms(1000); STOPR; Delay_ms(1000);00D5: BSF 03.500D6: BCF 06.500D7: BCF 03.500D8: BCF 06.500D9: BSF 03.500DA: BCF 06.400DB: BCF 03.500DC: BSF 06.400DD: MOVLW 0400DE: MOVWF 7300DF: MOVLW FA00E0: MOVWF 7400E1: CALL 08800E2: DECFSZ 73,F00E3: GOTO 0DF00E4: BSF 03.500E5: BCF 06.400E6: BCF 03.500E7: BCF 06.400E8: BSF 03.500E9: BCF 06.500EA: BCF 03.500EB: BCF 06.500EC: MOVLW 0400ED: MOVWF 7300EE: MOVLW FA00EF: MOVWF 7400F0: CALL 08800F1: DECFSZ 73,F00F2: GOTO 0EE.................... BR; Delay_ms(1000); STOPR; Delay_ms(1000);00F3: BSF 03.500F4: BCF 06.400F5: BCF 03.500F6: BCF 06.400F7: BSF 03.500F8: BCF 06.500F9: BCF 03.500FA: BSF 06.500FB: MOVLW 0400FC: MOVWF 7300FD: MOVLW FA00FE: MOVWF 7400FF: CALL 0880100: DECFSZ 73,F0101: GOTO 0FD0102: BSF 03.50103: BCF 06.40104: BCF 03.50105: BCF 06.40106: BSF 03.50107: BCF 06.50108: BCF 03.50109: BCF 06.5010A: MOVLW 04010B: MOVWF 73010C: MOVLW FA010D: MOVWF 74010E: CALL 088010F: DECFSZ 73,F0110: GOTO 10C.................... Beep(880,100); Delay_ms(1000);0111: MOVLW 030112: MOVWF 750113: MOVLW 700114: MOVWF 740115: CLRF 7D0116: MOVLW 640117: MOVWF 7C0118: CALL 05C0119: MOVLW 04011A: MOVWF 73011B: MOVLW FA011C: MOVWF 74011D: CALL 088011E: DECFSZ 73,F011F: GOTO 11B.................... //levy pas.................... FL; Delay_ms(1000); STOPL; Delay_ms(1000);0120: BSF 03.50121: BCF 06.70122: BCF 03.50123: BCF 06.70124: BSF 03.50125: BCF 06.60126: BCF 03.50127: BSF 06.60128: MOVLW 040129: MOVWF 73012A: MOVLW FA012B: MOVWF 74012C: CALL 088012D: DECFSZ 73,F012E: GOTO 12A012F: BSF 03.50130: BCF 06.60131: BCF 03.50132: BCF 06.60133: BSF 03.50134: BCF 06.70135: BCF 03.50136: BCF 06.70137: MOVLW 040138: MOVWF 730139: MOVLW FA013A: MOVWF 74013B: CALL 088013C: DECFSZ 73,F013D: GOTO 139.................... BL; Delay_ms(1000); STOPL; Delay_ms(1000);013E: BSF 03.5013F: BCF 06.60140: BCF 03.50141: BCF 06.60142: BSF 03.50143: BCF 06.70144: BCF 03.50145: BSF 06.70146: MOVLW 040147: MOVWF 730148: MOVLW FA0149: MOVWF 74014A: CALL 088014B: DECFSZ 73,F014C: GOTO 148014D: BSF 03.5014E: BCF 06.6014F: BCF 03.50150: BCF 06.60151: BSF 03.50152: BCF 06.70153: BCF 03.50154: BCF 06.70155: MOVLW 040156: MOVWF 730157: MOVLW FA0158: MOVWF 740159: CALL 088015A: DECFSZ 73,F015B: GOTO 157.................... Beep(880,100); Delay_ms(1000);015C: MOVLW 03015D: MOVWF 75015E: MOVLW 70015F: MOVWF 740160: CLRF 7D0161: MOVLW 640162: MOVWF 7C0163: CALL 05C0164: MOVLW 040165: MOVWF 730166: MOVLW FA0167: MOVWF 740168: CALL 0880169: DECFSZ 73,F016A: GOTO 166.................... //oba pasy.................... FL; FR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);016B: BSF 03.5016C: BCF 06.7016D: BCF 03.5016E: BCF 06.7016F: BSF 03.50170: BCF 06.60171: BCF 03.50172: BSF 06.60173: BSF 03.50174: BCF 06.50175: BCF 03.50176: BCF 06.50177: BSF 03.50178: BCF 06.40179: BCF 03.5017A: BSF 06.4017B: MOVLW 04017C: MOVWF 73017D: MOVLW FA017E: MOVWF 74017F: CALL 0880180: DECFSZ 73,F0181: GOTO 17D0182: BSF 03.50183: BCF 06.60184: BCF 03.50185: BCF 06.60186: BSF 03.50187: BCF 06.70188: BCF 03.50189: BCF 06.7018A: BSF 03.5018B: BCF 06.4018C: BCF 03.5018D: BCF 06.4018E: BSF 03.5018F: BCF 06.50190: BCF 03.50191: BCF 06.50192: MOVLW 040193: MOVWF 730194: MOVLW FA0195: MOVWF 740196: CALL 0880197: DECFSZ 73,F0198: GOTO 194.................... BL; BR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);0199: BSF 03.5019A: BCF 06.6019B: BCF 03.5019C: BCF 06.6019D: BSF 03.5019E: BCF 06.7019F: BCF 03.501A0: BSF 06.701A1: BSF 03.501A2: BCF 06.401A3: BCF 03.501A4: BCF 06.401A5: BSF 03.501A6: BCF 06.501A7: BCF 03.501A8: BSF 06.501A9: MOVLW 0401AA: MOVWF 7301AB: MOVLW FA01AC: MOVWF 7401AD: CALL 08801AE: DECFSZ 73,F01AF: GOTO 1AB01B0: BSF 03.501B1: BCF 06.601B2: BCF 03.501B3: BCF 06.601B4: BSF 03.501B5: BCF 06.701B6: BCF 03.501B7: BCF 06.701B8: BSF 03.501B9: BCF 06.401BA: BCF 03.501BB: BCF 06.401BC: BSF 03.501BD: BCF 06.501BE: BCF 03.501BF: BCF 06.501C0: MOVLW 0401C1: MOVWF 7301C2: MOVLW FA01C3: MOVWF 7401C4: CALL 08801C5: DECFSZ 73,F01C6: GOTO 1C2.................... };01C7: GOTO 09D.................... while (input(DIAG_SENSORS)) // spusteni diagnostiky cidel.................... {01C8: BSF 03.501C9: BSF 06.201CA: BCF 03.501CB: BTFSS 06.201CC: GOTO 1FB.................... if (RSENSOR) beep(900,500);01CD: BSF 03.501CE: BTFSS 1C.701CF: GOTO 1DB01D0: MOVLW 0301D1: MOVWF 7501D2: MOVLW 8401D3: MOVWF 7401D4: MOVLW 0101D5: MOVWF 7D01D6: MOVLW F401D7: MOVWF 7C01D8: BCF 03.501D9: CALL 05C01DA: BSF 03.5.................... if (LSENSOR) beep(800,500);01DB: BTFSS 1C.601DC: GOTO 1E801DD: MOVLW 0301DE: MOVWF 7501DF: MOVLW 2001E0: MOVWF 7401E1: MOVLW 0101E2: MOVWF 7D01E3: MOVLW F401E4: MOVWF 7C01E5: BCF 03.501E6: CALL 05C01E7: BSF 03.5.................... if ((read_adc(ADC_READ_ONLY)<BUMPER_TRESHOLD)) beep(1000,500);01E8: BCF 03.501E9: BTFSS 1F.201EA: GOTO 1ED01EB: BSF 03.501EC: GOTO 1E801ED: MOVF 1E,W01EE: SUBLW 7F01EF: BTFSS 03.001F0: GOTO 1FA01F1: MOVLW 0301F2: MOVWF 7501F3: MOVLW E801F4: MOVWF 7401F5: MOVLW 0101F6: MOVWF 7D01F7: MOVLW F401F8: MOVWF 7C01F9: CALL 05C.................... };01FA: GOTO 1C8.................... }01FB: BCF 0A.301FC: GOTO 520 (RETURN).................... ///////////////////////////////////////////////////////////////////////////////.................... void cikcak().................... {.................... unsigned int16 n;.................... sem1:.................... n=CIK_CAK;01FD: MOVLW 7501FE: MOVWF 7501FF: MOVLW 300200: MOVWF 74.................... while (0==RSENSOR||LSENSOR) // zkontroluj caru.................... {0201: MOVLW 000202: BSF 03.50203: BTFSC 1C.70204: MOVLW 010205: XORLW 000206: BTFSC 03.20207: GOTO 20A0208: BTFSS 1C.60209: GOTO 264.................... if (n==CIK_CAK) // zmen smer zataceni020A: MOVF 74,W020B: SUBLW 30020C: BTFSS 03.2020D: GOTO 25E020E: MOVF 75,W020F: SUBLW 750210: BTFSS 03.20211: GOTO 25E.................... {.................... n=0;0212: CLRF 750213: CLRF 74.................... switch(movement).................... {0214: BCF 03.50215: MOVF 45,W0216: XORLW 020217: BTFSC 03.20218: GOTO 2200219: XORLW 03021A: BTFSC 03.2021B: GOTO 233021C: XORLW 02021D: BTFSC 03.2021E: GOTO 246021F: GOTO 25D.................... case L:.................... FL;BR;0220: BSF 03.50221: BCF 06.70222: BCF 03.50223: BCF 06.70224: BSF 03.50225: BCF 06.60226: BCF 03.50227: BSF 06.60228: BSF 03.50229: BCF 06.4022A: BCF 03.5022B: BCF 06.4022C: BSF 03.5022D: BCF 06.5022E: BCF 03.5022F: BSF 06.5.................... movement=R;0230: MOVLW 010231: MOVWF 45.................... break;0232: GOTO 25D.................... case R:.................... FR;BL;0233: BSF 03.50234: BCF 06.50235: BCF 03.50236: BCF 06.50237: BSF 03.50238: BCF 06.40239: BCF 03.5023A: BSF 06.4023B: BSF 03.5023C: BCF 06.6023D: BCF 03.5023E: BCF 06.6023F: BSF 03.50240: BCF 06.70241: BCF 03.50242: BSF 06.7.................... movement=L;0243: MOVLW 020244: MOVWF 45.................... break;0245: GOTO 25D.................... case S:.................... FL;BR;0246: BSF 03.50247: BCF 06.70248: BCF 03.50249: BCF 06.7024A: BSF 03.5024B: BCF 06.6024C: BCF 03.5024D: BSF 06.6024E: BSF 03.5024F: BCF 06.40250: BCF 03.50251: BCF 06.40252: BSF 03.50253: BCF 06.50254: BCF 03.50255: BSF 06.5.................... movement=R;0256: MOVLW 010257: MOVWF 45.................... n=CIK_CAK/2;0258: MOVLW 3A0259: MOVWF 75025A: MOVLW 98025B: MOVWF 74.................... break;025C: GOTO 25D025D: BSF 03.5.................... }.................... }.................... n++;025E: INCF 74,F025F: BTFSC 03.20260: INCF 75,F.................... }0261: BCF 03.50262: GOTO 2010263: BSF 03.5.................... STOPL;STOPR;0264: BCF 06.60265: BCF 03.50266: BCF 06.60267: BSF 03.50268: BCF 06.70269: BCF 03.5026A: BCF 06.7026B: BSF 03.5026C: BCF 06.4026D: BCF 03.5026E: BCF 06.4026F: BSF 03.50270: BCF 06.50271: BCF 03.50272: BCF 06.5.................... line = RSENSOR; // cteni senzoru na caru0273: CLRF 410274: BSF 03.50275: BTFSS 1C.70276: GOTO 27A0277: BCF 03.50278: INCF 41,F0279: BSF 03.5.................... line |= LSENSOR << 1;027A: MOVLW 00027B: BTFSC 1C.6027C: MOVLW 01027D: MOVWF 77027E: BCF 03.0027F: RLF 77,F0280: MOVF 77,W0281: BCF 03.50282: IORWF 41,F.................... if (line==0) goto sem1;0283: MOVF 41,F0284: BTFSC 03.20285: GOTO 1FD.................... // nasli jsme caru.................... line=S;0286: MOVLW 030287: MOVWF 41.................... }0288: RETLW 00.................... ///////////////////////////////////////////////////////////////////////////////.................... void objizdka() // objede cihlu.................... {.................... unsigned int16 n;........................................ BL;BR;Delay_ms(150);0289: BSF 03.5028A: BCF 06.6028B: BCF 03.5028C: BCF 06.6028D: BSF 03.5028E: BCF 06.7028F: BCF 03.50290: BSF 06.70291: BSF 03.50292: BCF 06.40293: BCF 03.50294: BCF 06.40295: BSF 03.50296: BCF 06.50297: BCF 03.50298: BSF 06.50299: MOVLW 96029A: MOVWF 74029B: CALL 088.................... STOPR;STOPL;029C: BSF 03.5029D: BCF 06.4029E: BCF 03.5029F: BCF 06.402A0: BSF 03.502A1: BCF 06.502A2: BCF 03.502A3: BCF 06.502A4: BSF 03.502A5: BCF 06.602A6: BCF 03.502A7: BCF 06.602A8: BSF 03.502A9: BCF 06.702AA: BCF 03.502AB: BCF 06.7.................... beep(900,1000);02AC: MOVLW 0302AD: MOVWF 7502AE: MOVLW 8402AF: MOVWF 7402B0: MOVLW 0302B1: MOVWF 7D02B2: MOVLW E802B3: MOVWF 7C02B4: CALL 05C.................... // movement=S;.................... // cikcak();........................................ BR; FL; Delay_ms(270); // otoc se 70° do prava02B5: BSF 03.502B6: BCF 06.402B7: BCF 03.502B8: BCF 06.402B9: BSF 03.502BA: BCF 06.502BB: BCF 03.502BC: BSF 06.502BD: BSF 03.502BE: BCF 06.702BF: BCF 03.502C0: BCF 06.702C1: BSF 03.502C2: BCF 06.602C3: BCF 03.502C4: BSF 06.602C5: MOVLW 0202C6: MOVWF 7302C7: MOVLW 8702C8: MOVWF 7402C9: CALL 08802CA: DECFSZ 73,F02CB: GOTO 2C7........................................ FR; FL; Delay_ms(500); // popojed rovne02CC: BSF 03.502CD: BCF 06.502CE: BCF 03.502CF: BCF 06.502D0: BSF 03.502D1: BCF 06.402D2: BCF 03.502D3: BSF 06.402D4: BSF 03.502D5: BCF 06.702D6: BCF 03.502D7: BCF 06.702D8: BSF 03.502D9: BCF 06.602DA: BCF 03.502DB: BSF 06.602DC: MOVLW 0202DD: MOVWF 7302DE: MOVLW FA02DF: MOVWF 7402E0: CALL 08802E1: DECFSZ 73,F02E2: GOTO 2DE........................................ BL; Delay_ms(30); // otoc se 90° do leva02E3: BSF 03.502E4: BCF 06.602E5: BCF 03.502E6: BCF 06.602E7: BSF 03.502E8: BCF 06.702E9: BCF 03.502EA: BSF 06.702EB: MOVLW 1E02EC: MOVWF 7402ED: CALL 088.................... STOPL; FR; Delay_ms(500);02EE: BSF 03.502EF: BCF 06.602F0: BCF 03.502F1: BCF 06.602F2: BSF 03.502F3: BCF 06.702F4: BCF 03.502F5: BCF 06.702F6: BSF 03.502F7: BCF 06.502F8: BCF 03.502F9: BCF 06.502FA: BSF 03.502FB: BCF 06.402FC: BCF 03.502FD: BSF 06.402FE: MOVLW 0202FF: MOVWF 730300: MOVLW FA0301: MOVWF 740302: CALL 0880303: DECFSZ 73,F0304: GOTO 300........................................ FR; FL; Delay_ms(100); // popojed rovne na slepo0305: BSF 03.50306: BCF 06.50307: BCF 03.50308: BCF 06.50309: BSF 03.5030A: BCF 06.4030B: BCF 03.5030C: BSF 06.4030D: BSF 03.5030E: BCF 06.7030F: BCF 03.50310: BCF 06.70311: BSF 03.50312: BCF 06.60313: BCF 03.50314: BSF 06.60315: MOVLW 640316: MOVWF 740317: CALL 088.................... for(n=40000;n>0;n--) // popojed rovne ale kontroluj caru0318: MOVLW 9C0319: MOVWF 72031A: MOVLW 40031B: MOVWF 71031C: MOVF 71,F031D: BTFSS 03.2031E: GOTO 322031F: MOVF 72,F0320: BTFSC 03.20321: GOTO 33E.................... {.................... line = RSENSOR; // cteni senzoru na caru0322: CLRF 410323: BSF 03.50324: BTFSS 1C.70325: GOTO 3290326: BCF 03.50327: INCF 41,F0328: BSF 03.5.................... line |= LSENSOR << 1;0329: MOVLW 00032A: BTFSC 1C.6032B: MOVLW 01032C: MOVWF 77032D: BCF 03.0032E: RLF 77,F032F: MOVF 77,W0330: BCF 03.50331: IORWF 41,F.................... if (line!=0) {Delay_ms(150); break;}0332: MOVF 41,F0333: BTFSC 03.20334: GOTO 3390335: MOVLW 960336: MOVWF 740337: CALL 0880338: GOTO 33E.................... // Delay_ms(1);.................... }0339: MOVF 71,W033A: BTFSC 03.2033B: DECF 72,F033C: DECF 71,F033D: GOTO 31C........................................ BR; FL; // otoc se 60° do prava033E: BSF 03.5033F: BCF 06.40340: BCF 03.50341: BCF 06.40342: BSF 03.50343: BCF 06.50344: BCF 03.50345: BSF 06.50346: BSF 03.50347: BCF 06.70348: BCF 03.50349: BCF 06.7034A: BSF 03.5034B: BCF 06.6034C: BCF 03.5034D: BSF 06.6.................... for(n=40000;n>0;n--)034E: MOVLW 9C034F: MOVWF 720350: MOVLW 400351: MOVWF 710352: MOVF 71,F0353: BTFSS 03.20354: GOTO 3580355: MOVF 72,F0356: BTFSC 03.20357: GOTO 370.................... {.................... line = RSENSOR; // cteni senzoru na caru0358: CLRF 410359: BSF 03.5035A: BTFSS 1C.7035B: GOTO 35F035C: BCF 03.5035D: INCF 41,F035E: BSF 03.5.................... line |= LSENSOR << 1;035F: MOVLW 000360: BTFSC 1C.60361: MOVLW 010362: MOVWF 770363: BCF 03.00364: RLF 77,F0365: MOVF 77,W0366: BCF 03.50367: IORWF 41,F.................... if (line!=0) break;0368: MOVF 41,F0369: BTFSS 03.2036A: GOTO 370.................... // Delay_ms(1);.................... }036B: MOVF 71,W036C: BTFSC 03.2036D: DECF 72,F036E: DECF 71,F036F: GOTO 352.................... STOPR; STOPL;0370: BSF 03.50371: BCF 06.40372: BCF 03.50373: BCF 06.40374: BSF 03.50375: BCF 06.50376: BCF 03.50377: BCF 06.50378: BSF 03.50379: BCF 06.6037A: BCF 03.5037B: BCF 06.6037C: BSF 03.5037D: BCF 06.7037E: BCF 03.5037F: BCF 06.7........................................ movement=L; //R;0380: MOVLW 020381: MOVWF 45.................... cikcak();0382: CALL 1FD.................... dira=0;0383: CLRF 46.................... }0384: BCF 0A.30385: GOTO 550 (RETURN).................... ///////////////////////////////////////////////////////////////////////////////.................... void prejeddiru() // vyresi diru.................... {.................... unsigned int16 n;.................... unsigned int8 speed_dira;........................................ STOPL;STOPR;0386: BSF 03.50387: BCF 06.60388: BCF 03.50389: BCF 06.6038A: BSF 03.5038B: BCF 06.7038C: BCF 03.5038D: BCF 06.7038E: BSF 03.5038F: BCF 06.40390: BCF 03.50391: BCF 06.40392: BSF 03.50393: BCF 06.50394: BCF 03.50395: BCF 06.5.................... speed_dira=speed;0396: MOVF 42,W0397: MOVWF 73.................... beep(1000,500);0398: MOVLW 030399: MOVWF 75039A: MOVLW E8039B: MOVWF 74039C: MOVLW 01039D: MOVWF 7D039E: MOVLW F4039F: MOVWF 7C03A0: CALL 05C.................... switch (movement) //vrat se zpet na caru.................... {03A1: MOVF 45,W03A2: XORLW 0203A3: BTFSC 03.203A4: GOTO 3AC03A5: XORLW 0303A6: BTFSC 03.203A7: GOTO 3E403A8: XORLW 0203A9: BTFSC 03.203AA: GOTO 41C03AB: GOTO 41E.................... case L:.................... for (n=COUVANI;n>0;n--) {GO(R,B,speed_dira); Delay_ms(1);}03AC: MOVLW 0203AD: MOVWF 7203AE: MOVLW EE03AF: MOVWF 7103B0: MOVF 71,F03B1: BTFSS 03.203B2: GOTO 3B603B3: MOVF 72,F03B4: BTFSC 03.203B5: GOTO 3D303B6: MOVF 01,W03B7: SUBWF 73,W03B8: BTFSS 03.003B9: GOTO 3C303BA: BSF 03.503BB: BCF 06.403BC: BCF 03.503BD: BCF 06.403BE: BSF 03.503BF: BCF 06.503C0: BCF 03.503C1: BSF 06.503C2: GOTO 3CB03C3: BSF 03.503C4: BCF 06.403C5: BCF 03.503C6: BCF 06.403C7: BSF 03.503C8: BCF 06.503C9: BCF 03.503CA: BCF 06.503CB: MOVLW 0103CC: MOVWF 7403CD: CALL 08803CE: MOVF 71,W03CF: BTFSC 03.203D0: DECF 72,F03D1: DECF 71,F03D2: GOTO 3B0.................... STOPL;STOPR;03D3: BSF 03.503D4: BCF 06.603D5: BCF 03.503D6: BCF 06.603D7: BSF 03.503D8: BCF 06.703D9: BCF 03.503DA: BCF 06.703DB: BSF 03.503DC: BCF 06.403DD: BCF 03.503DE: BCF 06.403DF: BSF 03.503E0: BCF 06.503E1: BCF 03.503E2: BCF 06.5.................... break;03E3: GOTO 41E.................... case R:.................... for (n=COUVANI;n>0;n--) {GO(L,B,speed_dira); Delay_ms(1);}03E4: MOVLW 0203E5: MOVWF 7203E6: MOVLW EE03E7: MOVWF 7103E8: MOVF 71,F03E9: BTFSS 03.203EA: GOTO 3EE03EB: MOVF 72,F03EC: BTFSC 03.203ED: GOTO 40B03EE: MOVF 01,W03EF: SUBWF 73,W03F0: BTFSS 03.003F1: GOTO 3FB03F2: BSF 03.503F3: BCF 06.603F4: BCF 03.503F5: BCF 06.603F6: BSF 03.503F7: BCF 06.703F8: BCF 03.503F9: BSF 06.703FA: GOTO 40303FB: BSF 03.503FC: BCF 06.603FD: BCF 03.503FE: BCF 06.603FF: BSF 03.50400: BCF 06.70401: BCF 03.50402: BCF 06.70403: MOVLW 010404: MOVWF 740405: CALL 0880406: MOVF 71,W0407: BTFSC 03.20408: DECF 72,F0409: DECF 71,F040A: GOTO 3E8.................... STOPL;STOPR;040B: BSF 03.5040C: BCF 06.6040D: BCF 03.5040E: BCF 06.6040F: BSF 03.50410: BCF 06.70411: BCF 03.50412: BCF 06.70413: BSF 03.50414: BCF 06.40415: BCF 03.50416: BCF 06.40417: BSF 03.50418: BCF 06.50419: BCF 03.5041A: BCF 06.5.................... break;041B: GOTO 41E.................... case S:.................... goto sem;041C: GOTO 45C.................... break;041D: GOTO 41E.................... }.................... beep(1000,500);041E: MOVLW 03041F: MOVWF 750420: MOVLW E80421: MOVWF 740422: MOVLW 010423: MOVWF 7D0424: MOVLW F40425: MOVWF 7C0426: CALL 05C........................................ /*line=0;.................... FR; BL; Delay_ms(400); // otoc se na caru.................... beep(1000,500);.................... while(line==0).................... {.................... line = RSENSOR; // cteni senzoru na caru.................... line |= LSENSOR << 1;.................... }.................... FL;BR; Delay_ms(60); // zabrzdi.................... STOPL; STOPR;........................................ FL; BR; Delay_ms(700); // otacka 180 deg.................... STOPL; STOPR;*/........................................ FR;FL; //popojed rovne0427: BSF 03.50428: BCF 06.50429: BCF 03.5042A: BCF 06.5042B: BSF 03.5042C: BCF 06.4042D: BCF 03.5042E: BSF 06.4042F: BSF 03.50430: BCF 06.70431: BCF 03.50432: BCF 06.70433: BSF 03.50434: BCF 06.60435: BCF 03.50436: BSF 06.6.................... for(n=PRES_DIRU;n>0;n--)0437: MOVLW 010438: MOVWF 720439: MOVLW 2C043A: MOVWF 71043B: MOVF 71,F043C: BTFSS 03.2043D: GOTO 441043E: MOVF 72,F043F: BTFSC 03.20440: GOTO 45C.................... {.................... line = RSENSOR; // cteni senzoru na caru0441: CLRF 410442: BSF 03.50443: BTFSS 1C.70444: GOTO 4480445: BCF 03.50446: INCF 41,F0447: BSF 03.5.................... line |= LSENSOR << 1;0448: MOVLW 000449: BTFSC 1C.6044A: MOVLW 01044B: MOVWF 77044C: BCF 03.0044D: RLF 77,F044E: MOVF 77,W044F: BCF 03.50450: IORWF 41,F.................... if (line!=0) break;0451: MOVF 41,F0452: BTFSS 03.20453: GOTO 45C.................... Delay_ms(1);0454: MOVLW 010455: MOVWF 740456: CALL 088.................... }0457: MOVF 71,W0458: BTFSC 03.20459: DECF 72,F045A: DECF 71,F045B: GOTO 43B.................... sem:.................... STOPL; STOPR;045C: BSF 03.5045D: BCF 06.6045E: BCF 03.5045F: BCF 06.60460: BSF 03.50461: BCF 06.70462: BCF 03.50463: BCF 06.70464: BSF 03.50465: BCF 06.40466: BCF 03.50467: BCF 06.40468: BSF 03.50469: BCF 06.5046A: BCF 03.5046B: BCF 06.5.................... movement=S;046C: MOVLW 03046D: MOVWF 45.................... cikcak(); // najdi caru046E: CALL 1FD.................... dira=0;046F: CLRF 46.................... }0470: BCF 0A.30471: GOTO 5E6 (RETURN).................... ///////////////////////////////////////////////////////////////////////////////.................... void main().................... {0472: CLRF 040473: MOVLW 1F0474: ANDWF 03,F0475: BSF 03.50476: BCF 1F.40477: BCF 1F.50478: MOVF 1B,W0479: ANDLW 80047A: MOVWF 1B047B: MOVLW 07047C: MOVWF 1C047D: MOVF 1C,W047E: BCF 03.5047F: BCF 0D.60480: MOVLW 600481: BSF 03.50482: MOVWF 0F.................... unsigned int16 n; // pro FOR........................................ STOPL; STOPR; // prepne vystupy na ovladani motoru na output a zastavi*049F: BSF 03.504A0: BCF 06.604A1: BCF 03.504A2: BCF 06.604A3: BSF 03.504A4: BCF 06.704A5: BCF 03.504A6: BCF 06.704A7: BSF 03.504A8: BCF 06.404A9: BCF 03.504AA: BCF 06.404AB: BSF 03.504AC: BCF 06.504AD: BCF 03.504AE: BCF 06.5........................................ setup_oscillator(OSC_4MHZ|OSC_INTRC); // 4 MHz interni RC oscilator04AF: MOVLW 6204B0: BSF 03.504B1: MOVWF 0F........................................ port_b_pullups(TRUE); // pullups pro piano na diagnostiku04B2: BCF 01.7.................... setup_spi(FALSE);04B3: BCF 03.504B4: BCF 14.504B5: BSF 03.504B6: BCF 06.204B7: BSF 06.104B8: BCF 06.404B9: MOVLW 0004BA: BCF 03.504BB: MOVWF 1404BC: BSF 03.504BD: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Casovac pro PWM04BE: MOVF 01,W04BF: ANDLW C704C0: IORLW 0804C1: MOVWF 01........................................ setup_timer_2(T2_DIV_BY_4,255,10); // Casovac pro regulaci04C2: MOVLW 4804C3: MOVWF 7804C4: IORLW 0504C5: BCF 03.504C6: MOVWF 1204C7: MOVLW FF04C8: BSF 03.504C9: MOVWF 12.................... // preruseni kazdych 10ms.................... setup_adc_ports(sAN2|VSS_VDD); // nastaveni A/D prevodniku pro naraznik04CA: BCF 1F.404CB: BCF 1F.504CC: MOVF 1B,W04CD: ANDLW 8004CE: IORLW 0404CF: MOVWF 1B.................... setup_adc(ADC_CLOCK_INTERNAL);04D0: BCF 1F.604D1: BCF 03.504D2: BSF 1F.604D3: BSF 1F.704D4: BSF 03.504D5: BCF 1F.704D6: BCF 03.504D7: BSF 1F.0.................... set_adc_channel(2);04D8: MOVLW 1004D9: MOVWF 7804DA: MOVF 1F,W04DB: ANDLW C704DC: IORWF 78,W04DD: MOVWF 1F.................... setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // Casovac pro naraznik04DE: MOVLW 8504DF: MOVWF 10.................... setup_ccp1(CCP_COMPARE_RESET_TIMER);04E0: BSF 03.504E1: BSF 06.304E2: MOVLW 0B04E3: BCF 03.504E4: MOVWF 17.................... CCP_1=(2^10)-1; // prevod kazdou 1ms04E5: CLRF 1604E6: MOVLW 0704E7: MOVWF 15........................................ setup_comparator(A0_VR_A1_VR); // inicializace komparatoru pro cidla cary04E8: MOVLW 0204E9: BSF 03.504EA: MOVWF 1C04EB: MOVF 05,W04EC: IORLW 0304ED: MOVWF 0504EE: MOVLW 0304EF: MOVWF 7704F0: DECFSZ 77,F04F1: GOTO 4F004F2: MOVF 1C,W04F3: BCF 03.504F4: BCF 0D.6.................... setup_vref(VREF_HIGH|TRESHOLD); // 32 kroku od 0.25 do 0.75 Vdd04F5: MOVLW 8604F6: BSF 03.504F7: MOVWF 1D........................................ Beep(1000,200); //double beep04F8: MOVLW 0304F9: MOVWF 7504FA: MOVLW E804FB: MOVWF 7404FC: CLRF 7D04FD: MOVLW C804FE: MOVWF 7C04FF: BCF 03.50500: CALL 05C.................... Delay_ms(50);0501: MOVLW 320502: MOVWF 740503: CALL 088.................... Beep(1000,200);0504: MOVLW 030505: MOVWF 750506: MOVLW E80507: MOVWF 740508: CLRF 7D0509: MOVLW C8050A: MOVWF 7C050B: CALL 05C.................... Delay_ms(1000); // 1s050C: MOVLW 04050D: MOVWF 71050E: MOVLW FA050F: MOVWF 740510: CALL 0880511: DECFSZ 71,F0512: GOTO 50E........................................ // povoleni rizeni rychlosti zataceni pres preruseni.................... enable_interrupts(INT_TIMER2);0513: BSF 03.50514: BSF 0C.1.................... enable_interrupts(GLOBAL);0515: MOVLW C00516: BCF 03.50517: IORWF 0B,F........................................ /*---------------------------------------------------------------------------*/.................... sensors=S;0518: MOVLW 030519: MOVWF 40.................... line=S;051A: MOVWF 41.................... last=S;051B: MOVWF 44.................... movement=S;051C: MOVWF 45.................... speed=FW_POMALU;051D: MOVLW E6051E: MOVWF 42........................................ diagnostika();051F: GOTO 09D.................... //cikcak(); // toc se, abys nasel caru.................... Delay_ms(500);0520: MOVLW 020521: MOVWF 710522: MOVLW FA0523: MOVWF 740524: CALL 0880525: DECFSZ 71,F0526: GOTO 522.................... Beep(1000,200);0527: MOVLW 030528: MOVWF 750529: MOVLW E8052A: MOVWF 74052B: CLRF 7D052C: MOVLW C8052D: MOVWF 7C052E: CALL 05C.................... Delay_ms(500);052F: MOVLW 020530: MOVWF 710531: MOVLW FA0532: MOVWF 740533: CALL 0880534: DECFSZ 71,F0535: GOTO 531........................................ while(true) // hlavni smycka (jizda podle cary).................... {.................... sensors = RSENSOR; // cteni senzoru na caru0536: CLRF 400537: BSF 03.50538: BTFSS 1C.70539: GOTO 53D053A: BCF 03.5053B: INCF 40,F053C: BSF 03.5.................... sensors |= LSENSOR << 1;053D: MOVLW 00053E: BTFSC 1C.6053F: MOVLW 010540: MOVWF 770541: BCF 03.00542: RLF 77,F0543: MOVF 77,W0544: BCF 03.50545: IORWF 40,F........................................ if ((read_adc(ADC_READ_ONLY)<BUMPER_TRESHOLD) && (dira<=T_CIHLA)) objizdka();0546: BTFSC 1F.20547: GOTO 5460548: MOVF 1E,W0549: SUBLW 7F054A: BTFSS 03.0054B: GOTO 550054C: MOVF 46,W054D: SUBLW 32054E: BTFSC 03.0054F: GOTO 289........................................ switch (sensors) // zatacej podle toho, kde vidis caru.................... {0550: MOVF 40,W0551: XORLW 030552: BTFSC 03.20553: GOTO 55B0554: XORLW 010555: BTFSC 03.20556: GOTO 56F0557: XORLW 030558: BTFSC 03.20559: GOTO 5A8055A: GOTO 5E1.................... case S: // rovne.................... FL; FR; // pokud se jede dlouho rovne, tak pridej055B: BSF 03.5055C: BCF 06.7055D: BCF 03.5055E: BCF 06.7055F: BSF 03.50560: BCF 06.60561: BCF 03.50562: BSF 06.60563: BSF 03.50564: BCF 06.50565: BCF 03.50566: BCF 06.50567: BSF 03.50568: BCF 06.40569: BCF 03.5056A: BSF 06.4.................... dira=0;056B: CLRF 46.................... movement=S;056C: MOVLW 03056D: MOVWF 45.................... continue;056E: GOTO 536.................... case L: // trochu vlevo.................... GO(L, F, FW_POMALU+rovinka); GO(R, F, FW_STREDNE+rovinka);056F: MOVF 01,W0570: MOVWF 710571: MOVLW E60572: ADDWF 43,W0573: SUBWF 71,W0574: BTFSC 03.20575: GOTO 5780576: BTFSC 03.00577: GOTO 5810578: BSF 03.50579: BCF 06.7057A: BCF 03.5057B: BCF 06.7057C: BSF 03.5057D: BCF 06.6057E: BCF 03.5057F: BSF 06.60580: GOTO 5890581: BSF 03.50582: BCF 06.60583: BCF 03.50584: BCF 06.60585: BSF 03.50586: BCF 06.70587: BCF 03.50588: BCF 06.70589: MOVF 01,W058A: MOVWF 71058B: MOVLW F0058C: ADDWF 43,W058D: SUBWF 71,W058E: BTFSC 03.2058F: GOTO 5920590: BTFSC 03.00591: GOTO 59B0592: BSF 03.50593: BCF 06.50594: BCF 03.50595: BCF 06.50596: BSF 03.50597: BCF 06.40598: BCF 03.50599: BSF 06.4059A: GOTO 5A3059B: BSF 03.5059C: BCF 06.4059D: BCF 03.5059E: BCF 06.4059F: BSF 03.505A0: BCF 06.505A1: BCF 03.505A2: BCF 06.5.................... line=L;05A3: MOVLW 0205A4: MOVWF 41.................... dira=0;05A5: CLRF 46.................... movement=L;05A6: MOVWF 45.................... continue;05A7: GOTO 536.................... case R: // trochu vpravo.................... GO(R, F, FW_POMALU+rovinka); GO(L, F, FW_STREDNE+rovinka);05A8: MOVF 01,W05A9: MOVWF 7105AA: MOVLW E605AB: ADDWF 43,W05AC: SUBWF 71,W05AD: BTFSC 03.205AE: GOTO 5B105AF: BTFSC 03.005B0: GOTO 5BA05B1: BSF 03.505B2: BCF 06.505B3: BCF 03.505B4: BCF 06.505B5: BSF 03.505B6: BCF 06.405B7: BCF 03.505B8: BSF 06.405B9: GOTO 5C205BA: BSF 03.505BB: BCF 06.405BC: BCF 03.505BD: BCF 06.405BE: BSF 03.505BF: BCF 06.505C0: BCF 03.505C1: BCF 06.505C2: MOVF 01,W05C3: MOVWF 7105C4: MOVLW F005C5: ADDWF 43,W05C6: SUBWF 71,W05C7: BTFSC 03.205C8: GOTO 5CB05C9: BTFSC 03.005CA: GOTO 5D405CB: BSF 03.505CC: BCF 06.705CD: BCF 03.505CE: BCF 06.705CF: BSF 03.505D0: BCF 06.605D1: BCF 03.505D2: BSF 06.605D3: GOTO 5DC05D4: BSF 03.505D5: BCF 06.605D6: BCF 03.505D7: BCF 06.605D8: BSF 03.505D9: BCF 06.705DA: BCF 03.505DB: BCF 06.7.................... line=R;05DC: MOVLW 0105DD: MOVWF 41.................... dira=0;05DE: CLRF 46.................... movement=R;05DF: MOVWF 45.................... continue;05E0: GOTO 536.................... default: // kdyz jsou obe cidla mimo caru, tak pokracuj dal.................... }.................... rovinka=0;05E1: CLRF 43.................... if (dira>=T_DIRA) prejeddiru();05E2: MOVF 46,W05E3: SUBLW 7705E4: BTFSS 03.005E5: GOTO 386.................... if (last!=line) // pokud si prejel caru z jedne strany na druhou stranu, tak zabrzdi05E6: MOVF 41,W05E7: SUBWF 44,W05E8: BTFSC 03.205E9: GOTO 5EE.................... {.................... last=line;05EA: MOVF 41,W05EB: MOVWF 44.................... speed=FW_ZATACKA;05EC: MOVLW F005ED: MOVWF 42.................... }.................... if (L==line) // kdyz jsou obe cidla mimo caru, zatoc na caru05EE: MOVF 41,W05EF: SUBLW 0205F0: BTFSS 03.205F1: GOTO 612.................... {.................... STOPL;05F2: BSF 03.505F3: BCF 06.605F4: BCF 03.505F5: BCF 06.605F6: BSF 03.505F7: BCF 06.705F8: BCF 03.505F9: BCF 06.7.................... GO(R, F, speed);05FA: MOVF 01,W05FB: SUBWF 42,W05FC: BTFSS 03.005FD: GOTO 60705FE: BSF 03.505FF: BCF 06.50600: BCF 03.50601: BCF 06.50602: BSF 03.50603: BCF 06.40604: BCF 03.50605: BSF 06.40606: GOTO 60F0607: BSF 03.50608: BCF 06.40609: BCF 03.5060A: BCF 06.4060B: BSF 03.5060C: BCF 06.5060D: BCF 03.5060E: BCF 06.5.................... movement=L;060F: MOVLW 020610: MOVWF 45.................... }.................... else0611: GOTO 631.................... {.................... STOPR;0612: BSF 03.50613: BCF 06.40614: BCF 03.50615: BCF 06.40616: BSF 03.50617: BCF 06.50618: BCF 03.50619: BCF 06.5.................... GO(L, F, speed);061A: MOVF 01,W061B: SUBWF 42,W061C: BTFSS 03.0061D: GOTO 627061E: BSF 03.5061F: BCF 06.70620: BCF 03.50621: BCF 06.70622: BSF 03.50623: BCF 06.60624: BCF 03.50625: BSF 06.60626: GOTO 62F0627: BSF 03.50628: BCF 06.60629: BCF 03.5062A: BCF 06.6062B: BSF 03.5062C: BCF 06.7062D: BCF 03.5062E: BCF 06.7.................... movement=R;062F: MOVLW 010630: MOVWF 45.................... }.................... } // while(true)0631: GOTO 536.................... }........................................0632: SLEEPConfiguration Fuses:Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IOWord 2: 3FFC NOFCMEN NOIESO