Blame | Last modification | View Log | Download
CCS PCW C Compiler, Version 3.110, 15448Filename: d:\kaklik\programy\pic_c\roboti\merkur\main.LSTROM used: 1572 (38%)Largest free fragment is 2048RAM used: 79 (41%) at main() level90 (47%) worst caseStack: 3 locations*0000: MOVLW 000001: MOVWF 0A0002: GOTO 41D0003: NOP.................... #include "main.h".................... #include <16F873.h>.................... //////// Standard Header file for the PIC16F873 device ////////////////.................... #device PIC16F873.................... #list........................................ #device adc=8.................... #use delay(clock=4000000)*0016: MOVLW 780017: MOVWF 040018: MOVLW FC0019: ANDWF 00,F001A: RRF 00,F001B: RRF 00,F001C: MOVF 00,W001D: BTFSC 03.2001E: GOTO 023001F: GOTO 0210020: NOP0021: DECFSZ 00,F0022: GOTO 0200023: RETLW 00*004A: MOVLW 73004B: MOVWF 04004C: MOVF 00,W004D: BTFSC 03.2004E: GOTO 05E004F: MOVLW 010050: MOVWF 210051: CLRF 200052: DECFSZ 20,F0053: GOTO 0520054: DECFSZ 21,F0055: GOTO 0510056: MOVLW 4A0057: MOVWF 200058: DECFSZ 20,F0059: GOTO 058005A: NOP005B: NOP005C: DECFSZ 00,F005D: GOTO 04F005E: RETLW 00.................... #fuses XT,NOWDT,NOLVP................................................................................ #define TXo PIN_C3 // To the transmitter modulator.................... #include "AX25.c" // podprogram pro prenos telemetrie.................... //#define PTT PIN_A2 // PTT control.................... //#define TXo PIN_C0 // To the transmitter modulator.................... #define PERIODAH delay_us(222) // Halfperiod H 222;78/1200 500;430/500.................... #define TAILH delay_us(78).................... #define PERIODAL delay_us(412) // Halfperiod L 412;345/1200 1000;880/500.................... #define TAILL delay_us(345).................... #byte STATUS = 3 // CPUs status register........................................ byte SendData[16] = {'A'<<1, 'L'<<1, 'L'<<1, ' '<<1, ' '<<1, ' '<<1, 0x60,.................... 'C'<<1, 'Z'<<1, '0'<<1, 'R'<<1, 'R'<<1, 'R'<<1, 0x61,.................... 0x03, 0xF0};........................................ boolean bit;.................... int fcslo, fcshi; // variabloes for calculating FCS (CRC).................... int stuff; // stuff counter for extra 0.................... int flag_flag; // if it is sending flag (7E).................... int fcs_flag; // if it is sending Frame Check Sequence.................... int i; // for for........................................ void flipout() //flips the state of output pin a_1.................... {.................... stuff = 0; //since this is a 0, reset the stuff counter*00AE: CLRF 38.................... if (bit)00AF: BTFSS 35.000B0: GOTO 0B3.................... {.................... bit=FALSE; //if the state of the pin was low, make it high.00B1: BCF 35.0.................... }.................... else00B2: GOTO 0B4.................... {.................... bit=TRUE; //if the state of the pin was high make it low00B3: BSF 35.0.................... }00B4: RETLW 00.................... }........................................ void fcsbit(byte tbyte).................... {.................... #asm.................... BCF STATUS,0*011A: BCF 03.0.................... RRF fcshi,F // rotates the entire 16 bits011B: RRF 37,F.................... RRF fcslo,F // to the right.................... #endasm011C: RRF 36,F.................... if (((STATUS & 0x01)^(tbyte)) ==0x01)011D: MOVF 03,W011E: ANDLW 01011F: XORWF 77,W0120: SUBLW 010121: BTFSS 03.20122: GOTO 127.................... {.................... fcshi = fcshi^0x84;0123: MOVLW 840124: XORWF 37,F.................... fcslo = fcslo^0x08;0125: MOVLW 080126: XORWF 36,F.................... }.................... }........................................ void SendBit ().................... {.................... if (bit)*00B5: BTFSS 35.000B6: GOTO 0E8.................... {.................... output_high(TXo);00B7: BCF 3C.300B8: MOVF 3C,W00B9: BSF 03.500BA: MOVWF 0700BB: BCF 03.500BC: BSF 07.3.................... PERIODAH;00BD: MOVLW 4900BE: MOVWF 2000BF: DECFSZ 20,F00C0: GOTO 0BF00C1: NOP00C2: NOP.................... output_low(TXo);00C3: BCF 3C.300C4: MOVF 3C,W00C5: BSF 03.500C6: MOVWF 0700C7: BCF 03.500C8: BCF 07.3.................... PERIODAH;00C9: MOVLW 4900CA: MOVWF 2000CB: DECFSZ 20,F00CC: GOTO 0CB00CD: NOP00CE: NOP.................... output_high(TXo);00CF: BCF 3C.300D0: MOVF 3C,W00D1: BSF 03.500D2: MOVWF 0700D3: BCF 03.500D4: BSF 07.3.................... PERIODAH;00D5: MOVLW 4900D6: MOVWF 2000D7: DECFSZ 20,F00D8: GOTO 0D700D9: NOP00DA: NOP.................... output_low(TXo);00DB: BCF 3C.300DC: MOVF 3C,W00DD: BSF 03.500DE: MOVWF 0700DF: BCF 03.500E0: BCF 07.3.................... TAILH;00E1: MOVLW 1900E2: MOVWF 2000E3: DECFSZ 20,F00E4: GOTO 0E300E5: NOP00E6: NOP.................... }.................... else00E7: GOTO 0FE.................... {.................... output_high(TXo);00E8: BCF 3C.300E9: MOVF 3C,W00EA: BSF 03.500EB: MOVWF 0700EC: BCF 03.500ED: BSF 07.3.................... PERIODAL;00EE: MOVLW 8900EF: MOVWF 2000F0: DECFSZ 20,F00F1: GOTO 0F0.................... output_low(TXo);00F2: BCF 3C.300F3: MOVF 3C,W00F4: BSF 03.500F5: MOVWF 0700F6: BCF 03.500F7: BCF 07.3.................... TAILL;00F8: MOVLW 7200F9: MOVWF 2000FA: DECFSZ 20,F00FB: GOTO 0FA00FC: NOP00FD: NOP.................... };00FE: RETLW 00.................... }........................................ void SendByte (byte inbyte).................... {.................... int k, bt;........................................ for (k=0;k<8;k++) //do the following for each of the 8 bits in the byte00FF: CLRF 750100: MOVF 75,W0101: SUBLW 070102: BTFSS 03.00103: GOTO 149.................... {.................... bt = inbyte & 0x01; //strip off the rightmost bit of the byte to be sent (inbyte)0104: MOVF 74,W0105: ANDLW 010106: MOVWF 76.................... if ((fcs_flag == FALSE) & (flag_flag == FALSE)) fcsbit(bt); //do FCS calc, but only if this0107: MOVF 3A,F0108: BTFSC 03.20109: GOTO 10C010A: MOVLW 00010B: GOTO 10D010C: MOVLW 01010D: MOVWF 77010E: MOVF 39,F010F: BTFSC 03.20110: GOTO 1130111: MOVLW 000112: GOTO 1140113: MOVLW 010114: ANDWF 77,W0115: XORLW 000116: BTFSC 03.20117: GOTO 1270118: MOVF 76,W0119: MOVWF 77.................... //is not a flag or fcs byte.................... if (bt == 0)*0127: MOVF 76,F0128: BTFSS 03.20129: GOTO 12C.................... {.................... flipout();012A: CALL 0AE.................... } // if this bit is a zero, flip the output state.................... else012B: GOTO 144.................... { //otherwise if it is a 1, do the following:.................... if (flag_flag == FALSE) stuff++; //increment the count of consequtive 1's012C: MOVF 39,F012D: BTFSS 03.2012E: GOTO 130012F: INCF 38,F.................... if ((flag_flag == FALSE) & (stuff == 5))0130: MOVF 39,F0131: BTFSC 03.20132: GOTO 1350133: MOVLW 000134: GOTO 1360135: MOVLW 010136: MOVWF 770137: MOVF 38,W0138: SUBLW 050139: BTFSC 03.2013A: GOTO 13D013B: MOVLW 00013C: GOTO 13E013D: MOVLW 01013E: ANDWF 77,W013F: XORLW 000140: BTFSC 03.20141: GOTO 144.................... { //stuff an extra 0, if 5 1's in a row.................... SendBit();0142: CALL 0B5.................... flipout(); //flip the output state to stuff a 00143: CALL 0AE.................... }//end of if.................... }//end of else.................... // delay_us(850); //introduces a delay that creates 1200 baud.................... SendBit();0144: CALL 0B5.................... inbyte = inbyte>>1; //go to the next bit in the byte0145: BCF 03.00146: RRF 74,F.................... }//end of for0147: INCF 75,F0148: GOTO 1000149: RETLW 00.................... }//end of SendByte........................................ void SendPacket(char *data).................... {.................... bit=FALSE;*02CF: BCF 35.0........................................ fcslo=fcshi=0xFF; //The 2 FCS Bytes are initialized to FF02D0: MOVLW FF02D1: MOVWF 3702D2: MOVWF 36.................... stuff = 0; //The variable stuff counts the number of 1's in a row. When it gets to 502D3: CLRF 38.................... // it is time to stuff a 0......................................... // output_low(PTT); // Blinking LED.................... // delay_ms(1000);.................... // output_high(PTT);........................................ flag_flag = TRUE; //The variable flag is true if you are transmitted flags (7E's) false otherwise.02D4: MOVLW 0102D5: MOVWF 39.................... fcs_flag = FALSE; //The variable fcsflag is true if you are transmitting FCS bytes, false otherwise.02D6: CLRF 3A........................................ for(i=0; i<10; i++) SendByte(0x7E); //Sends flag bytes. Adjust length for txdelay02D7: CLRF 3B02D8: MOVF 3B,W02D9: SUBLW 0902DA: BTFSS 03.002DB: GOTO 2E102DC: MOVLW 7E02DD: MOVWF 7402DE: CALL 0FF02DF: INCF 3B,F02E0: GOTO 2D8.................... //each flag takes approx 6.7 ms.................... flag_flag = FALSE; //done sending flags02E1: CLRF 39........................................ for(i=0; i<16; i++) SendByte(SendData[i]); //send the packet bytes02E2: CLRF 3B02E3: MOVF 3B,W02E4: SUBLW 0F02E5: BTFSS 03.002E6: GOTO 2F002E7: MOVLW 2502E8: ADDWF 3B,W02E9: MOVWF 0402EA: MOVF 00,W02EB: MOVWF 7302EC: MOVWF 7402ED: CALL 0FF02EE: INCF 3B,F02EF: GOTO 2E3........................................ for(i=0; 0 != *data; i++)02F0: CLRF 3B02F1: MOVF 72,W02F2: MOVWF 0402F3: MOVF 00,W02F4: XORLW 0002F5: BTFSC 03.202F6: GOTO 300.................... {.................... SendByte(*data); //send the packet bytes02F7: MOVF 72,W02F8: MOVWF 0402F9: MOVF 00,W02FA: MOVWF 7302FB: MOVWF 7402FC: CALL 0FF.................... data++;02FD: INCF 72,F.................... };02FE: INCF 3B,F02FF: GOTO 2F1........................................ fcs_flag = TRUE; //about to send the FCS bytes0300: MOVLW 010301: MOVWF 3A.................... fcslo =fcslo^0xff; //must XOR them with FF before sending0302: MOVLW FF0303: XORWF 36,F.................... fcshi = fcshi^0xff;0304: XORWF 37,F.................... SendByte(fcslo); //send the low byte of fcs0305: MOVF 36,W0306: MOVWF 740307: CALL 0FF.................... SendByte(fcshi); //send the high byte of fcs0308: MOVF 37,W0309: MOVWF 74030A: CALL 0FF.................... fcs_flag = FALSE; //done sending FCS030B: CLRF 3A.................... flag_flag = TRUE; //about to send flags030C: MOVLW 01030D: MOVWF 39.................... SendByte(0x7e); // Send a flag to end packet030E: MOVLW 7E030F: MOVWF 740310: CALL 0FF.................... }........................................................................................................................ //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).................... #define STOPL output_low(PIN_B6);output_low(PIN_B7)........................................ #define L 0b10 // left.................... #define R 0b01 // right.................... #define S 0b11 // straight........................................ #define COUVANI 1600 // couvnuti po zjisteni diry.................... #define MEZERA 5400 // za jak dlouho bude ztracena cara.................... #define PRES_DIRU 400 // velikost mezery v care.................... #define ODEZVA 1 // za jak dlouho po opusteni cary se ma zacit zatacet.................... #define BRZDENI 100 // doba (v ms) ptrebna k zastaveni jednoho motoru........................................ //cidla.................... #define RSENSOR 1 // Senzory na caru.................... #define LSENSOR 0.................... #define BUMPER PIN_C4 // sensor na cihlu........................................ #define DIAG_SERVO PIN_B0 // Propojka pro diagnosticky mod.................... #define DIAG_SENSORS PIN_B1 // Propojka pro diagnosticky mod........................................ #DEFINE SOUND_HI PIN_B3.................... #DEFINE SOUND_LO PIN_B2........................................ char AXstring[40]; // Buffer pro prenos telemetrie........................................ int tresholdL; // rozhodovaci uroven pro prave cidlo.................... int tresholdR; // rozhodovaci uroven pro prave cidlo.................... int movement; // smer minuleho pohybu.................... int line; // na ktere strane byla detekovana cara.................... unsigned int16 dira; // pocitadlo pro nalezeni preruseni cary........................................ // Primitivni Pipani.................... void beep(unsigned int16 period, unsigned int16 length).................... {.................... unsigned int16 nn;........................................ for(nn=length; nn>0; nn--)*0024: MOVF 75,W0025: MOVWF 770026: MOVF 74,W0027: MOVWF 760028: MOVF 76,F0029: BTFSS 03.2002A: GOTO 02E002B: MOVF 77,F002C: BTFSC 03.2002D: GOTO 049.................... {.................... output_high(SOUND_HI);output_low(SOUND_LO);002E: BSF 03.5002F: BCF 06.30030: BCF 03.50031: BSF 06.30032: BSF 03.50033: BCF 06.20034: BCF 03.50035: BCF 06.2.................... delay_us(period);0036: MOVF 72,W0037: MOVWF 780038: CALL 016.................... output_high(SOUND_LO);output_low(SOUND_HI);0039: BSF 03.5003A: BCF 06.2003B: BCF 03.5003C: BSF 06.2003D: BSF 03.5003E: BCF 06.3003F: BCF 03.50040: BCF 06.3.................... delay_us(period);0041: MOVF 72,W0042: MOVWF 780043: CALL 016.................... }0044: MOVF 76,W0045: BTFSC 03.20046: DECF 77,F0047: DECF 76,F0048: GOTO 0280049: RETLW 00.................... }........................................ // Diagnostika pohonu, hejbne vsema motorama ve vsech smerech.................... void diagnostika().................... {.................... unsigned int16 n;........................................ while (input(DIAG_SERVO)) // Propojka, ktera spousti diagnostiku*014A: BSF 03.5014B: BSF 06.0014C: BCF 03.5014D: BTFSS 06.0014E: GOTO 275.................... {.................... for (n=500; n<800; n+=100)014F: MOVLW 010150: MOVWF 6F0151: MOVLW F40152: MOVWF 6E0153: MOVF 6F,W0154: SUBLW 030155: BTFSS 03.00156: GOTO 16B0157: BTFSS 03.20158: GOTO 15D0159: MOVF 6E,W015A: SUBLW 1F015B: BTFSS 03.0015C: GOTO 16B.................... {.................... beep(n,n); //beep UP015D: MOVF 6F,W015E: MOVWF 73015F: MOVF 6E,W0160: MOVWF 720161: MOVF 6F,W0162: MOVWF 750163: MOVF 6E,W0164: MOVWF 740165: CALL 024.................... };0166: MOVLW 640167: ADDWF 6E,F0168: BTFSC 03.00169: INCF 6F,F016A: GOTO 153.................... Delay_ms(1000);016B: MOVLW 04016C: MOVWF 72016D: MOVLW FA016E: MOVWF 73016F: CALL 04A0170: DECFSZ 72,F0171: GOTO 16D.................... //zastav vse.................... STOPL; STOPR;0172: BSF 03.50173: BCF 06.60174: BCF 03.50175: BCF 06.60176: BSF 03.50177: BCF 06.70178: BCF 03.50179: BCF 06.7017A: BSF 03.5017B: BCF 06.4017C: BCF 03.5017D: BCF 06.4017E: BSF 03.5017F: BCF 06.50180: BCF 03.50181: BCF 06.5.................... //pravy pas.................... FR; Delay_ms(1000); STOPR; Delay_ms(1000);0182: BSF 03.50183: BCF 06.50184: BCF 03.50185: BCF 06.50186: BSF 03.50187: BCF 06.40188: BCF 03.50189: BSF 06.4018A: MOVLW 04018B: MOVWF 72018C: MOVLW FA018D: MOVWF 73018E: CALL 04A018F: DECFSZ 72,F0190: GOTO 18C0191: BSF 03.50192: BCF 06.40193: BCF 03.50194: BCF 06.40195: BSF 03.50196: BCF 06.50197: BCF 03.50198: BCF 06.50199: MOVLW 04019A: MOVWF 72019B: MOVLW FA019C: MOVWF 73019D: CALL 04A019E: DECFSZ 72,F019F: GOTO 19B.................... BR; Delay_ms(1000); STOPR; Delay_ms(1000);01A0: BSF 03.501A1: BCF 06.401A2: BCF 03.501A3: BCF 06.401A4: BSF 03.501A5: BCF 06.501A6: BCF 03.501A7: BSF 06.501A8: MOVLW 0401A9: MOVWF 7201AA: MOVLW FA01AB: MOVWF 7301AC: CALL 04A01AD: DECFSZ 72,F01AE: GOTO 1AA01AF: BSF 03.501B0: BCF 06.401B1: BCF 03.501B2: BCF 06.401B3: BSF 03.501B4: BCF 06.501B5: BCF 03.501B6: BCF 06.501B7: MOVLW 0401B8: MOVWF 7201B9: MOVLW FA01BA: MOVWF 7301BB: CALL 04A01BC: DECFSZ 72,F01BD: GOTO 1B9.................... Beep(880,100); Delay_ms(1000);01BE: MOVLW 0301BF: MOVWF 7301C0: MOVLW 7001C1: MOVWF 7201C2: CLRF 7501C3: MOVLW 6401C4: MOVWF 7401C5: CALL 02401C6: MOVLW 0401C7: MOVWF 7201C8: MOVLW FA01C9: MOVWF 7301CA: CALL 04A01CB: DECFSZ 72,F01CC: GOTO 1C8.................... //levy pas.................... FL; Delay_ms(1000); STOPL; Delay_ms(1000);01CD: BSF 03.501CE: BCF 06.701CF: BCF 03.501D0: BCF 06.701D1: BSF 03.501D2: BCF 06.601D3: BCF 03.501D4: BSF 06.601D5: MOVLW 0401D6: MOVWF 7201D7: MOVLW FA01D8: MOVWF 7301D9: CALL 04A01DA: DECFSZ 72,F01DB: GOTO 1D701DC: BSF 03.501DD: BCF 06.601DE: BCF 03.501DF: BCF 06.601E0: BSF 03.501E1: BCF 06.701E2: BCF 03.501E3: BCF 06.701E4: MOVLW 0401E5: MOVWF 7201E6: MOVLW FA01E7: MOVWF 7301E8: CALL 04A01E9: DECFSZ 72,F01EA: GOTO 1E6.................... BL; Delay_ms(1000); STOPL; Delay_ms(1000);01EB: BSF 03.501EC: BCF 06.601ED: BCF 03.501EE: BCF 06.601EF: BSF 03.501F0: BCF 06.701F1: BCF 03.501F2: BSF 06.701F3: MOVLW 0401F4: MOVWF 7201F5: MOVLW FA01F6: MOVWF 7301F7: CALL 04A01F8: DECFSZ 72,F01F9: GOTO 1F501FA: BSF 03.501FB: BCF 06.601FC: BCF 03.501FD: BCF 06.601FE: BSF 03.501FF: BCF 06.70200: BCF 03.50201: BCF 06.70202: MOVLW 040203: MOVWF 720204: MOVLW FA0205: MOVWF 730206: CALL 04A0207: DECFSZ 72,F0208: GOTO 204.................... Beep(880,100); Delay_ms(1000);0209: MOVLW 03020A: MOVWF 73020B: MOVLW 70020C: MOVWF 72020D: CLRF 75020E: MOVLW 64020F: MOVWF 740210: CALL 0240211: MOVLW 040212: MOVWF 720213: MOVLW FA0214: MOVWF 730215: CALL 04A0216: DECFSZ 72,F0217: GOTO 213.................... //oba pasy.................... FL; FR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);0218: BSF 03.50219: BCF 06.7021A: BCF 03.5021B: BCF 06.7021C: BSF 03.5021D: BCF 06.6021E: BCF 03.5021F: BSF 06.60220: BSF 03.50221: BCF 06.50222: BCF 03.50223: BCF 06.50224: BSF 03.50225: BCF 06.40226: BCF 03.50227: BSF 06.40228: MOVLW 040229: MOVWF 72022A: MOVLW FA022B: MOVWF 73022C: CALL 04A022D: DECFSZ 72,F022E: GOTO 22A022F: BSF 03.50230: BCF 06.60231: BCF 03.50232: BCF 06.60233: BSF 03.50234: BCF 06.70235: BCF 03.50236: BCF 06.70237: BSF 03.50238: BCF 06.40239: BCF 03.5023A: BCF 06.4023B: BSF 03.5023C: BCF 06.5023D: BCF 03.5023E: BCF 06.5023F: MOVLW 040240: MOVWF 720241: MOVLW FA0242: MOVWF 730243: CALL 04A0244: DECFSZ 72,F0245: GOTO 241.................... BL; BR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);0246: BSF 03.50247: BCF 06.60248: BCF 03.50249: BCF 06.6024A: BSF 03.5024B: BCF 06.7024C: BCF 03.5024D: BSF 06.7024E: BSF 03.5024F: BCF 06.40250: BCF 03.50251: BCF 06.40252: BSF 03.50253: BCF 06.50254: BCF 03.50255: BSF 06.50256: MOVLW 040257: MOVWF 720258: MOVLW FA0259: MOVWF 73025A: CALL 04A025B: DECFSZ 72,F025C: GOTO 258025D: BSF 03.5025E: BCF 06.6025F: BCF 03.50260: BCF 06.60261: BSF 03.50262: BCF 06.70263: BCF 03.50264: BCF 06.70265: BSF 03.50266: BCF 06.40267: BCF 03.50268: BCF 06.40269: BSF 03.5026A: BCF 06.5026B: BCF 03.5026C: BCF 06.5026D: MOVLW 04026E: MOVWF 72026F: MOVLW FA0270: MOVWF 730271: CALL 04A0272: DECFSZ 72,F0273: GOTO 26F.................... };0274: GOTO 14A........................................ while (input(DIAG_SENSORS))0275: BSF 03.50276: BSF 06.10277: BCF 03.50278: BTFSS 06.10279: GOTO 319.................... {.................... int ls, rs;.................... while(!input(BUMPER)){beep(1100,100); Delay_ms(50);}027A: BSF 3C.4027B: MOVF 3C,W027C: BSF 03.5027D: MOVWF 07027E: BCF 03.5027F: BTFSC 07.40280: GOTO 28D0281: MOVLW 040282: MOVWF 730283: MOVLW 4C0284: MOVWF 720285: CLRF 750286: MOVLW 640287: MOVWF 740288: CALL 0240289: MOVLW 32028A: MOVWF 73028B: CALL 04A028C: GOTO 27A.................... set_adc_channel(RSENSOR);028D: MOVLW 08028E: MOVWF 21028F: MOVF 1F,W0290: ANDLW C70291: IORWF 21,W0292: MOVWF 1F.................... Delay_us(20);0293: MOVLW 060294: MOVWF 200295: DECFSZ 20,F0296: GOTO 2950297: NOP.................... rs=read_adc();0298: BSF 1F.20299: BTFSC 1F.2029A: GOTO 299029B: MOVF 1E,W029C: MOVWF 71.................... set_adc_channel(LSENSOR);029D: MOVLW 00029E: MOVWF 21029F: MOVF 1F,W02A0: ANDLW C702A1: IORWF 21,W02A2: MOVWF 1F.................... Delay_us(20);02A3: MOVLW 0602A4: MOVWF 2002A5: DECFSZ 20,F02A6: GOTO 2A502A7: NOP.................... ls=read_adc();02A8: BSF 1F.202A9: BTFSC 1F.202AA: GOTO 2A902AB: MOVF 1E,W02AC: MOVWF 70.................... sprintf(AXstring,"L: %U R: %U\0", ls, rs); // Convert DATA to String.*0004: BCF 0A.00005: BCF 0A.10006: BCF 0A.20007: ADDWF 02,F0008: RETLW 4C0009: RETLW 3A000A: RETLW 20000B: RETLW 25000C: RETLW 55000D: RETLW 20000E: RETLW 20000F: RETLW 520010: RETLW 3A0011: RETLW 200012: RETLW 250013: RETLW 550014: RETLW 000015: RETLW 00*007C: MOVF 21,W007D: MOVF 73,W007E: MOVWF 75007F: MOVLW 640080: MOVWF 760081: CALL 0670082: MOVF 20,W0083: MOVWF 730084: MOVF 21,W0085: MOVLW 300086: BTFSS 03.20087: GOTO 08F0088: BTFSC 74.00089: BSF 74.3008A: BTFSC 74.3008B: GOTO 095008C: BTFSC 74.4008D: MOVLW 20008E: GOTO 091008F: BCF 74.30090: BCF 74.40091: ADDWF 21,F0092: MOVF 21,W0093: MOVWF 750094: CALL 05F0095: MOVF 73,W0096: MOVWF 750097: MOVLW 0A0098: MOVWF 760099: CALL 067009A: MOVF 20,W009B: MOVWF 73009C: MOVF 21,W009D: MOVLW 30009E: BTFSS 03.2009F: GOTO 0A400A0: BTFSC 74.300A1: GOTO 0A800A2: BTFSC 74.400A3: MOVLW 2000A4: ADDWF 21,F00A5: MOVF 21,W00A6: MOVWF 7500A7: CALL 05F00A8: MOVLW 3000A9: ADDWF 73,F00AA: MOVF 73,W00AB: MOVWF 7500AC: CALL 05F00AD: RETLW 00*02AD: MOVLW 3D02AE: MOVWF 6B02AF: MOVLW 4C02B0: MOVWF 7502B1: CALL 05F02B2: MOVLW 3A02B3: MOVWF 7502B4: CALL 05F02B5: MOVLW 2002B6: MOVWF 7502B7: CALL 05F02B8: MOVF 70,W02B9: MOVWF 7302BA: MOVLW 1802BB: MOVWF 7402BC: CALL 07C02BD: MOVLW 0502BE: MOVWF 7202BF: MOVF 72,W02C0: CALL 00402C1: INCF 72,F02C2: MOVWF 7502C3: CALL 05F02C4: MOVLW 0A02C5: SUBWF 72,W02C6: BTFSS 03.202C7: GOTO 2BF02C8: MOVF 71,W02C9: MOVWF 7302CA: MOVLW 1802CB: MOVWF 7402CC: CALL 07C.................... SendPacket(&AXstring[0]);02CD: MOVLW 3D02CE: MOVWF 72.................... delay_ms(1000);*0311: MOVLW 040312: MOVWF 720313: MOVLW FA0314: MOVWF 730315: CALL 04A0316: DECFSZ 72,F0317: GOTO 313.................... };0318: GOTO 2750319: BCF 0A.3031A: GOTO 45E (RETURN).................... }........................................ void cikcak().................... {.................... int n;.................... switch(movement) // podivej se na jednu stranu*0364: MOVLW 010365: SUBWF 67,W0366: ADDLW FD0367: BTFSC 03.00368: GOTO 3A40369: ADDLW 03036A: GOTO 410.................... {.................... case L:.................... FL;BR;036B: BSF 03.5036C: BCF 06.7036D: BCF 03.5036E: BCF 06.7036F: BSF 03.50370: BCF 06.60371: BCF 03.50372: BSF 06.60373: BSF 03.50374: BCF 06.40375: BCF 03.50376: BCF 06.40377: BSF 03.50378: BCF 06.50379: BCF 03.5037A: BSF 06.5.................... movement=R;037B: MOVLW 01037C: MOVWF 67.................... break;037D: GOTO 3A4.................... case R:.................... FR;BL;037E: BSF 03.5037F: BCF 06.50380: BCF 03.50381: BCF 06.50382: BSF 03.50383: BCF 06.40384: BCF 03.50385: BSF 06.40386: BSF 03.50387: BCF 06.60388: BCF 03.50389: BCF 06.6038A: BSF 03.5038B: BCF 06.7038C: BCF 03.5038D: BSF 06.7.................... movement=L;038E: MOVLW 02038F: MOVWF 67.................... break;0390: GOTO 3A4.................... case S:.................... FR;BL;0391: BSF 03.50392: BCF 06.50393: BCF 03.50394: BCF 06.50395: BSF 03.50396: BCF 06.40397: BCF 03.50398: BSF 06.40399: BSF 03.5039A: BCF 06.6039B: BCF 03.5039C: BCF 06.6039D: BSF 03.5039E: BCF 06.7039F: BCF 03.503A0: BSF 06.7.................... movement=L;03A1: MOVLW 0203A2: MOVWF 67.................... break;03A3: GOTO 3A4.................... }*0410: BCF 0A.00411: BCF 0A.10412: BSF 0A.20413: ADDWF 02,F0414: GOTO 37E0415: GOTO 36B0416: GOTO 391.................... set_adc_channel(LSENSOR);*03A4: MOVLW 0003A5: MOVWF 2103A6: MOVF 1F,W03A7: ANDLW C703A8: IORWF 21,W03A9: MOVWF 1F.................... Delay_us(10);03AA: MOVLW 0303AB: MOVWF 2003AC: DECFSZ 20,F03AD: GOTO 3AC.................... while (tresholdL < read_adc()) // je tam cara??03AE: BSF 1F.203AF: BTFSC 1F.203B0: GOTO 3AF03B1: MOVF 1E,W03B2: SUBWF 65,W03B3: BTFSC 03.003B4: GOTO 3FC.................... {.................... if (n==50) // asi bude na druhe strane03B5: MOVF 6E,W03B6: SUBLW 3203B7: BTFSS 03.203B8: GOTO 3F7.................... {.................... STOPR;STOPL;03B9: BSF 03.503BA: BCF 06.403BB: BCF 03.503BC: BCF 06.403BD: BSF 03.503BE: BCF 06.503BF: BCF 03.503C0: BCF 06.503C1: BSF 03.503C2: BCF 06.603C3: BCF 03.503C4: BCF 06.603C5: BSF 03.503C6: BCF 06.703C7: BCF 03.503C8: BCF 06.7.................... n=0;03C9: CLRF 6E.................... switch(movement)03CA: MOVLW 0103CB: SUBWF 67,W03CC: ADDLW FE03CD: BTFSC 03.003CE: GOTO 3F703CF: ADDLW 0203D0: GOTO 417.................... {.................... case L:.................... FL;BR;03D1: BSF 03.503D2: BCF 06.703D3: BCF 03.503D4: BCF 06.703D5: BSF 03.503D6: BCF 06.603D7: BCF 03.503D8: BSF 06.603D9: BSF 03.503DA: BCF 06.403DB: BCF 03.503DC: BCF 06.403DD: BSF 03.503DE: BCF 06.503DF: BCF 03.503E0: BSF 06.5.................... movement=R;03E1: MOVLW 0103E2: MOVWF 67.................... break;03E3: GOTO 3F7.................... case R:.................... FR;BL;03E4: BSF 03.503E5: BCF 06.503E6: BCF 03.503E7: BCF 06.503E8: BSF 03.503E9: BCF 06.403EA: BCF 03.503EB: BSF 06.403EC: BSF 03.503ED: BCF 06.603EE: BCF 03.503EF: BCF 06.603F0: BSF 03.503F1: BCF 06.703F2: BCF 03.503F3: BSF 06.7.................... movement=L;03F4: MOVLW 0203F5: MOVWF 67.................... break;03F6: GOTO 3F7.................... }*0417: BCF 0A.00418: BCF 0A.10419: BSF 0A.2041A: ADDWF 02,F041B: GOTO 3E4041C: GOTO 3D1.................... }.................... Delay_ms(5);*03F7: MOVLW 0503F8: MOVWF 7303F9: CALL 04A.................... n++;03FA: INCF 6E,F.................... }03FB: GOTO 3AE.................... STOPL;STOPR; // nasli jsme caru03FC: BSF 03.503FD: BCF 06.603FE: BCF 03.503FF: BCF 06.60400: BSF 03.50401: BCF 06.70402: BCF 03.50403: BCF 06.70404: BSF 03.50405: BCF 06.40406: BCF 03.50407: BCF 06.40408: BSF 03.50409: BCF 06.5040A: BCF 03.5040B: BCF 06.5.................... line=S;040C: MOVLW 03040D: MOVWF 68040E: BCF 0A.3040F: GOTO 610 (RETURN).................... }.................... void objizdka().................... {.................... BL;BR;Delay_ms(300);*031B: BSF 03.5031C: BCF 06.6031D: BCF 03.5031E: BCF 06.6031F: BSF 03.50320: BCF 06.70321: BCF 03.50322: BSF 06.70323: BSF 03.50324: BCF 06.40325: BCF 03.50326: BCF 06.40327: BSF 03.50328: BCF 06.50329: BCF 03.5032A: BSF 06.5032B: MOVLW 02032C: MOVWF 6E032D: MOVLW 96032E: MOVWF 73032F: CALL 04A0330: DECFSZ 6E,F0331: GOTO 32D.................... STOPR;STOPL;0332: BSF 03.50333: BCF 06.40334: BCF 03.50335: BCF 06.40336: BSF 03.50337: BCF 06.50338: BCF 03.50339: BCF 06.5033A: BSF 03.5033B: BCF 06.6033C: BCF 03.5033D: BCF 06.6033E: BSF 03.5033F: BCF 06.70340: BCF 03.50341: BCF 06.7.................... beep(1000,1000);0342: MOVLW 030343: MOVWF 730344: MOVLW E80345: MOVWF 720346: MOVLW 030347: MOVWF 750348: MOVLW E80349: MOVWF 74034A: CALL 024.................... Delay_ms(500);034B: MOVLW 02034C: MOVWF 6E034D: MOVLW FA034E: MOVWF 73034F: CALL 04A0350: DECFSZ 6E,F0351: GOTO 34D.................... beep(1000,1000);0352: MOVLW 030353: MOVWF 730354: MOVLW E80355: MOVWF 720356: MOVLW 030357: MOVWF 750358: MOVLW E80359: MOVWF 74035A: CALL 024.................... Delay_ms(1000);035B: MOVLW 04035C: MOVWF 6E035D: MOVLW FA035E: MOVWF 73035F: CALL 04A0360: DECFSZ 6E,F0361: GOTO 35D0362: BCF 0A.30363: GOTO 48A (RETURN)........................................ }.................... void kalibrace().................... {.................... unsigned int16 i;.................... int min;.................... int max;.................... int current;.................... int treshold;........................................ FL; BR; Delay_ms(130);.................... chyba1:.................... FR; BL; //kalibrace leveho cidla.................... set_adc_channel(LSENSOR);.................... Delay_us(20);.................... min=max=read_adc();.................... for (i=1;i<=500;i++).................... {.................... current=read_adc();.................... if (max < current) max=current;.................... if (min > current) min=current;.................... Delay_us(500);.................... }.................... FL; BR;.................... for (i=1;i<=500;i++).................... {.................... current=read_adc();.................... if (max < current) max=current;.................... if (min > current) min=current;.................... Delay_us(500);.................... }.................... STOPL; STOPR; Delay_ms(200);.................... if((max-min)<50) {Beep(1000,300); GOTO chyba1;}.................... treshold=(max-min)>>1;.................... tresholdL=treshold+min;........................................ chyba2:.................... FR; BL;.................... set_adc_channel(RSENSOR);.................... Delay_us(20);.................... min=max=read_adc(); //naplneni min a max nejakou rozumnou hodnotou.................... for (i=1;i<=500 ;i++).................... {.................... current=read_adc();.................... if (max < current) max=current; //zmereni minima a maxima.................... if (min > current) min=current;.................... Delay_us(500);.................... }.................... FL; BR;.................... for (i=1;i<=500 ;i++).................... {.................... current=read_adc();.................... if (max < current) max=current; //zmereni minima a maxima.................... if (min > current) min=current;.................... Delay_us(500);.................... }.................... STOPL; STOPR; Delay_ms(200);.................... if((max-min)<50) {Beep(1000,300); GOTO chyba2;}.................... treshold=(max-min)>>1;.................... tresholdR=treshold+min;........................................ FR; BL;.................... movement=L;.................... set_adc_channel(LSENSOR);.................... Delay_us(20);.................... while (tresholdL < read_adc()) Delay_us(100);.................... FL; BR; Delay_ms(50);.................... STOPL; STOPR; Delay_ms(500);.................... Beep(780,200);.................... }........................................ void main().................... {.................... unsigned int16 rovne; // pocita delku rovne cary*041D: CLRF 04041E: MOVLW 1F041F: ANDWF 03,F0420: MOVLW 070421: BSF 03.50422: MOVWF 1F0423: MOVLW 820424: BCF 03.50425: MOVWF 250426: MOVLW 980427: MOVWF 260428: MOVWF 270429: MOVLW 40042A: MOVWF 28042B: MOVWF 29042C: MOVWF 2A042D: MOVLW 60042E: MOVWF 2B042F: MOVLW 860430: MOVWF 2C0431: MOVLW B40432: MOVWF 2D0433: MOVLW 600434: MOVWF 2E0435: MOVLW A40436: MOVWF 2F0437: MOVWF 300438: MOVWF 310439: MOVLW 61043A: MOVWF 32043B: MOVLW 03043C: MOVWF 33043D: MOVLW F0043E: MOVWF 34043F: MOVLW FF0440: MOVWF 3C0441: CLRF 6B........................................ STOPL; STOPR;0442: BSF 03.50443: BCF 06.60444: BCF 03.50445: BCF 06.60446: BSF 03.50447: BCF 06.70448: BCF 03.50449: BCF 06.7044A: BSF 03.5044B: BCF 06.4044C: BCF 03.5044D: BCF 06.4044E: BSF 03.5044F: BCF 06.50450: BCF 03.50451: BCF 06.5........................................ setup_adc_ports(RA0_RA1_RA3_ANALOG);0452: MOVLW 040453: BSF 03.50454: MOVWF 1F.................... setup_adc(ADC_CLOCK_DIV_2);0455: BCF 03.50456: MOVF 1F,W0457: ANDLW 380458: IORLW 010459: MOVWF 1F........................................ port_b_pullups(false);045A: BSF 03.5045B: BSF 01.7........................................ diagnostika();045C: BCF 03.5045D: GOTO 14A........................................ Beep(1000,200); //double beep045E: MOVLW 03045F: MOVWF 730460: MOVLW E80461: MOVWF 720462: CLRF 750463: MOVLW C80464: MOVWF 740465: CALL 024.................... Delay_ms(50);0466: MOVLW 320467: MOVWF 730468: CALL 04A.................... Beep(1000,200);0469: MOVLW 03046A: MOVWF 73046B: MOVLW E8046C: MOVWF 72046D: CLRF 75046E: MOVLW C8046F: MOVWF 740470: CALL 024.................... Delay_ms(1000); // 1s0471: MOVLW 040472: MOVWF 6E0473: MOVLW FA0474: MOVWF 730475: CALL 04A0476: DECFSZ 6E,F0477: GOTO 473........................................ // kalibrace();.................... tresholdl=tresholdr=80;0478: MOVLW 500479: MOVWF 66047A: MOVWF 65.................... // FL; FR;.................... movement=S;047B: MOVLW 03047C: MOVWF 67.................... line=S;047D: MOVWF 68.................... dira=0;047E: CLRF 6A047F: CLRF 69.................... rovne=0;0480: CLRF 6D0481: CLRF 6C........................................ while(true).................... {.................... if(!input(BUMPER)) objizdka();0482: BSF 3C.40483: MOVF 3C,W0484: BSF 03.50485: MOVWF 070486: BCF 03.50487: BTFSC 07.40488: GOTO 48A0489: GOTO 31B.................... line=0;048A: CLRF 68.................... set_adc_channel(RSENSOR); // podivej se jestli neni cara pod pravym cidlem048B: MOVLW 08048C: MOVWF 21048D: MOVF 1F,W048E: ANDLW C7048F: IORWF 21,W0490: MOVWF 1F.................... Delay_us(10);0491: MOVLW 030492: MOVWF 200493: DECFSZ 20,F0494: GOTO 493.................... if(tresholdR > read_adc())0495: BSF 1F.20496: BTFSC 1F.20497: GOTO 4960498: MOVF 1E,W0499: SUBWF 66,W049A: BTFSC 03.2049B: GOTO 4A2049C: BTFSS 03.0049D: GOTO 4A2.................... {.................... dira=0;049E: CLRF 6A049F: CLRF 69.................... line=R;04A0: MOVLW 0104A1: MOVWF 68.................... }.................... set_adc_channel(LSENSOR); // kdyz cara nebyla pod pravym cidlem, mozna bude pod levym04A2: MOVLW 0004A3: MOVWF 2104A4: MOVF 1F,W04A5: ANDLW C704A6: IORWF 21,W04A7: MOVWF 1F.................... Delay_us(10);04A8: MOVLW 0304A9: MOVWF 2004AA: DECFSZ 20,F04AB: GOTO 4AA.................... if(tresholdL > read_adc())04AC: BSF 1F.204AD: BTFSC 1F.204AE: GOTO 4AD04AF: MOVF 1E,W04B0: SUBWF 65,W04B1: BTFSC 03.204B2: GOTO 4B804B3: BTFSS 03.004B4: GOTO 4B8.................... {.................... dira=0;04B5: CLRF 6A04B6: CLRF 69.................... line=line | L;04B7: BSF 68.1.................... }........................................ switch(line)04B8: MOVF 68,W04B9: MOVWF 2004BA: MOVLW 0304BB: SUBWF 20,W04BC: BTFSC 03.204BD: GOTO 4C704BE: MOVLW 0204BF: SUBWF 20,W04C0: BTFSC 03.204C1: GOTO 4DA04C2: MOVLW 0104C3: SUBWF 20,W04C4: BTFSC 03.204C5: GOTO 4ED04C6: GOTO 500.................... {.................... case S:.................... FR;FL;04C7: BSF 03.504C8: BCF 06.504C9: BCF 03.504CA: BCF 06.504CB: BSF 03.504CC: BCF 06.404CD: BCF 03.504CE: BSF 06.404CF: BSF 03.504D0: BCF 06.704D1: BCF 03.504D2: BCF 06.704D3: BSF 03.504D4: BCF 06.604D5: BCF 03.504D6: BSF 06.6.................... movement=S;04D7: MOVLW 0304D8: MOVWF 67.................... continue;04D9: GOTO 482.................... case L:.................... STOPL;04DA: BSF 03.504DB: BCF 06.604DC: BCF 03.504DD: BCF 06.604DE: BSF 03.504DF: BCF 06.704E0: BCF 03.504E1: BCF 06.7.................... FR;movement=L;04E2: BSF 03.504E3: BCF 06.504E4: BCF 03.504E5: BCF 06.504E6: BSF 03.504E7: BCF 06.404E8: BCF 03.504E9: BSF 06.404EA: MOVLW 0204EB: MOVWF 67.................... continue;04EC: GOTO 482.................... case R:.................... STOPR;04ED: BSF 03.504EE: BCF 06.404EF: BCF 03.504F0: BCF 06.404F1: BSF 03.504F2: BCF 06.504F3: BCF 03.504F4: BCF 06.5.................... FL;movement=R;04F5: BSF 03.504F6: BCF 06.704F7: BCF 03.504F8: BCF 06.704F9: BSF 03.504FA: BCF 06.604FB: BCF 03.504FC: BSF 06.604FD: MOVLW 0104FE: MOVWF 67.................... continue;04FF: GOTO 482.................... default:.................... }........................................ if (dira==ODEZVA) // kdyz uz chvili jedeme po bile plose0500: DECFSZ 69,W0501: GOTO 54A0502: MOVF 6A,F0503: BTFSS 03.20504: GOTO 54A.................... {.................... //BR;BL;Delay_us(rovne >>= 5);.................... rovne=0; //kdyz sme museli zatocit, uz neni rovna cara0505: CLRF 6D0506: CLRF 6C........................................ switch (line) // musime zatocit0507: MOVLW 010508: SUBWF 68,W0509: ADDLW FE050A: BTFSC 03.0050B: GOTO 54A050C: ADDLW 02050D: GOTO 617.................... {.................... case L:.................... BL;Delay_ms(BRZDENI);STOPL;050E: BSF 03.5050F: BCF 06.60510: BCF 03.50511: BCF 06.60512: BSF 03.50513: BCF 06.70514: BCF 03.50515: BSF 06.70516: MOVLW 640517: MOVWF 730518: CALL 04A0519: BSF 03.5051A: BCF 06.6051B: BCF 03.5051C: BCF 06.6051D: BSF 03.5051E: BCF 06.7051F: BCF 03.50520: BCF 06.7.................... FR;0521: BSF 03.50522: BCF 06.50523: BCF 03.50524: BCF 06.50525: BSF 03.50526: BCF 06.40527: BCF 03.50528: BSF 06.4.................... movement=L;0529: MOVLW 02052A: MOVWF 67.................... break;052B: GOTO 54A.................... case R:.................... BR;Delay_ms(BRZDENI);STOPR;052C: BSF 03.5052D: BCF 06.4052E: BCF 03.5052F: BCF 06.40530: BSF 03.50531: BCF 06.50532: BCF 03.50533: BSF 06.50534: MOVLW 640535: MOVWF 730536: CALL 04A0537: BSF 03.50538: BCF 06.40539: BCF 03.5053A: BCF 06.4053B: BSF 03.5053C: BCF 06.5053D: BCF 03.5053E: BCF 06.5.................... FL;053F: BSF 03.50540: BCF 06.70541: BCF 03.50542: BCF 06.70543: BSF 03.50544: BCF 06.60545: BCF 03.50546: BSF 06.6.................... movement=R;0547: MOVLW 010548: MOVWF 67.................... break;0549: GOTO 54A.................... }*0617: BCF 0A.00618: BSF 0A.10619: BSF 0A.2061A: ADDWF 02,F061B: GOTO 52C061C: GOTO 50E.................... }.................... if (dira==MEZERA) // kdyz zkoncila cara*054A: MOVF 69,W054B: SUBLW 18054C: BTFSS 03.2054D: GOTO 612054E: MOVF 6A,W054F: SUBLW 150550: BTFSS 03.20551: GOTO 612.................... {.................... beep(800,500);0552: MOVLW 030553: MOVWF 730554: MOVLW 200555: MOVWF 720556: MOVLW 010557: MOVWF 750558: MOVLW F40559: MOVWF 74055A: CALL 024.................... Delay_ms(50);055B: MOVLW 32055C: MOVWF 73055D: CALL 04A.................... beep(800,500);055E: MOVLW 03055F: MOVWF 730560: MOVLW 200561: MOVWF 720562: MOVLW 010563: MOVWF 750564: MOVLW F40565: MOVWF 740566: CALL 024.................... switch (movement) //vrat se zpet na caru0567: MOVLW 010568: SUBWF 67,W0569: ADDLW FD056A: BTFSC 03.0056B: GOTO 5E6056C: ADDLW 03056D: GOTO 61D.................... {.................... case L:.................... STOPL;STOPR;056E: BSF 03.5056F: BCF 06.60570: BCF 03.50571: BCF 06.60572: BSF 03.50573: BCF 06.70574: BCF 03.50575: BCF 06.70576: BSF 03.50577: BCF 06.40578: BCF 03.50579: BCF 06.4057A: BSF 03.5057B: BCF 06.5057C: BCF 03.5057D: BCF 06.5.................... BR;Delay_ms(COUVANI);STOPR;057E: BSF 03.5057F: BCF 06.40580: BCF 03.50581: BCF 06.40582: BSF 03.50583: BCF 06.50584: BCF 03.50585: BSF 06.50586: MOVLW 080587: MOVWF 6E0588: MOVLW C80589: MOVWF 73058A: CALL 04A058B: DECFSZ 6E,F058C: GOTO 588058D: BSF 03.5058E: BCF 06.4058F: BCF 03.50590: BCF 06.40591: BSF 03.50592: BCF 06.50593: BCF 03.50594: BCF 06.5.................... break;0595: GOTO 5E6.................... case R:.................... STOPL;STOPR;0596: BSF 03.50597: BCF 06.60598: BCF 03.50599: BCF 06.6059A: BSF 03.5059B: BCF 06.7059C: BCF 03.5059D: BCF 06.7059E: BSF 03.5059F: BCF 06.405A0: BCF 03.505A1: BCF 06.405A2: BSF 03.505A3: BCF 06.505A4: BCF 03.505A5: BCF 06.5.................... BL;Delay_ms(COUVANI);STOPL;05A6: BSF 03.505A7: BCF 06.605A8: BCF 03.505A9: BCF 06.605AA: BSF 03.505AB: BCF 06.705AC: BCF 03.505AD: BSF 06.705AE: MOVLW 0805AF: MOVWF 6E05B0: MOVLW C805B1: MOVWF 7305B2: CALL 04A05B3: DECFSZ 6E,F05B4: GOTO 5B005B5: BSF 03.505B6: BCF 06.605B7: BCF 03.505B8: BCF 06.605B9: BSF 03.505BA: BCF 06.705BB: BCF 03.505BC: BCF 06.7.................... break;05BD: GOTO 5E6.................... case S:.................... BL; BR; Delay_ms(COUVANI);05BE: BSF 03.505BF: BCF 06.605C0: BCF 03.505C1: BCF 06.605C2: BSF 03.505C3: BCF 06.705C4: BCF 03.505C5: BSF 06.705C6: BSF 03.505C7: BCF 06.405C8: BCF 03.505C9: BCF 06.405CA: BSF 03.505CB: BCF 06.505CC: BCF 03.505CD: BSF 06.505CE: MOVLW 0805CF: MOVWF 6E05D0: MOVLW C805D1: MOVWF 7305D2: CALL 04A05D3: DECFSZ 6E,F05D4: GOTO 5D0.................... STOPL; STOPR;05D5: BSF 03.505D6: BCF 06.605D7: BCF 03.505D8: BCF 06.605D9: BSF 03.505DA: BCF 06.705DB: BCF 03.505DC: BCF 06.705DD: BSF 03.505DE: BCF 06.405DF: BCF 03.505E0: BCF 06.405E1: BSF 03.505E2: BCF 06.505E3: BCF 03.505E4: BCF 06.5.................... break;05E5: GOTO 5E6.................... }*061D: BCF 0A.0061E: BSF 0A.1061F: BSF 0A.20620: ADDWF 02,F0621: GOTO 5960622: GOTO 56E0623: GOTO 5BE........................................ FR;FL; Delay_ms(PRES_DIRU); // popojedem dopredu mozna tam bude cara*05E6: BSF 03.505E7: BCF 06.505E8: BCF 03.505E9: BCF 06.505EA: BSF 03.505EB: BCF 06.405EC: BCF 03.505ED: BSF 06.405EE: BSF 03.505EF: BCF 06.705F0: BCF 03.505F1: BCF 06.705F2: BSF 03.505F3: BCF 06.605F4: BCF 03.505F5: BSF 06.605F6: MOVLW 0205F7: MOVWF 6E05F8: MOVLW C805F9: MOVWF 7305FA: CALL 04A05FB: DECFSZ 6E,F05FC: GOTO 5F8.................... STOPL; STOPR; movement=S;05FD: BSF 03.505FE: BCF 06.605FF: BCF 03.50600: BCF 06.60601: BSF 03.50602: BCF 06.70603: BCF 03.50604: BCF 06.70605: BSF 03.50606: BCF 06.40607: BCF 03.50608: BCF 06.40609: BSF 03.5060A: BCF 06.5060B: BCF 03.5060C: BCF 06.5060D: MOVLW 03060E: MOVWF 67.................... cikcak(); // najdi caru060F: GOTO 364.................... dira=0;0610: CLRF 6A0611: CLRF 69.................... }.................... dira++;0612: INCF 69,F0613: BTFSC 03.20614: INCF 6A,F.................... } // while(true)0615: GOTO 482.................... }....................0616: SLEEP