Blame | Last modification | View Log | Download
CCS PCM C Compiler, Version 3.245, 27853 17-IV-06 12:46Filename: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.lstROM used: 849 words (21%)Largest free fragment is 2048RAM used: 27 (15%) at main() level34 (19%) worst caseStack: 4 worst case (2 in main + 2 for interrupts)*0000: MOVLW 000001: MOVWF 0A0002: GOTO 1E30003: 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 047.................... #include ".\main.h".................... #include <16F88.h>.................... //////// Standard Header file for the PIC16F88 device ////////////////.................... #device PIC16F88.................... #list........................................ #device adc=8........................................ #FUSES NOWDT //No Watch Dog Timer.................... #FUSES INTRC_IO.................... #FUSES NOPUT //No Power Up Timer.................... #FUSES MCLR //Master Clear pin enabled.................... #FUSES NOBROWNOUT //Reset when brownout detected.................... #FUSES NOLVP //Low Voltage Programming on B3(PIC16) or B5(PIC18).................... #FUSES NOCPD //No EE protection.................... #FUSES NOWRT //Program memory not write protected.................... #FUSES NODEBUG //No Debug mode for ICD.................... #FUSES NOPROTECT //Code not protected from reading.................... #FUSES NOFCMEN //Fail-safe clock monitor enabled.................... #FUSES NOIESO //Internal External Switch Over mode enabled........................................ #use delay(clock=8000000,RESTART_WDT)0037: MOVLW 080038: SUBWF 3C,F0039: BTFSS 03.0003A: GOTO 046003B: MOVLW 3C003C: MOVWF 04003D: BCF 03.0003E: RRF 00,F003F: MOVF 00,W0040: BTFSC 03.20041: GOTO 0460042: GOTO 0440043: CLRWDT0044: DECFSZ 00,F0045: GOTO 0430046: RETLW 00*0065: MOVLW 390066: MOVWF 040067: MOVF 00,W0068: BTFSC 03.20069: GOTO 07C006A: MOVLW 02006B: MOVWF 78006C: MOVLW BF006D: MOVWF 77006E: CLRWDT006F: DECFSZ 77,F0070: GOTO 06E0071: DECFSZ 78,F0072: GOTO 06C0073: MOVLW 960074: MOVWF 770075: DECFSZ 77,F0076: GOTO 0750077: NOP0078: NOP0079: CLRWDT007A: DECFSZ 00,F007B: GOTO 06A007C: RETLW 00................................................................................ #define KOLMO1 225 // predni kolecko sroubem dopredu.................... #define KOLMO2 30 // predni kolecko je hlavou sroubu dozadu.................... #define STRED 128 // sredni poloha zataceciho kolecka.................... #define BEAR1 12 // 3 stupne zataceni.................... #define BEAR2 34.................... #define BEAR3 55.................... #define SPEEDMAX 140 // maximalni rychlost........................................ #define L 1 // cara vlevo.................... #define S 2 // casa mezi sensory.................... #define R 0 // cara vpravo........................................ // servo.................... #define SERVO PIN_A2........................................ // IR.................... #define IRTX PIN_B2.................... #define CIHLA PIN_A3........................................ //motory.................... #define FR output_low(PIN_A7); output_high(PIN_A6) // Vpred.................... #define FL output_low(PIN_A1); output_high(PIN_A0).................... #define BR output_low(PIN_A6); output_high(PIN_A7) // Vzad.................... #define BL output_low(PIN_A0); output_high(PIN_A1).................... #define STOPR output_low(PIN_A6);output_low(PIN_A7).................... #define STOPL output_low(PIN_A0);output_low(PIN_A1)........................................ //HID.................... #define LED1 PIN_B1 //oranzova.................... #define LED2 PIN_B2 //zluta........................................ #define STROBE PIN_B0.................... //#define SW1 PIN_A2 // Motory On/off........................................ unsigned int8 sensors; // pomocna promenna pro cteni cidel na caru.................... unsigned int8 line; // na ktere strane byla detekovana cara.................... //unsigned int8 dira; // pocita dobu po kterou je ztracena cara.................... unsigned int8 uhel; // urcuje aktualni uhel zataceni.................... //unsigned int8 speed; // maximalni povolena rychlost.................... unsigned int8 rovinka; // pocitadlo na zjisteni rovinky........................................ signed int16 Lmotor; // promene, ktere urcuji velikost vykonu na levem.................... signed int16 Rmotor; // a pravem motoru........................................ // makro pro PWM pro motory.................... #define GO(motor, direction, power) if(get_timer0()<=power) \.................... {direction##motor;} else {stop##motor;}........................................ ////////////////////////////////////////////////////////////////////////////////.................... /*.................... void diagnostika().................... {.................... if(input(SW1))STOPR;STOPL;While(TRUE);.................... // if(LSENSOR==true) output_high(LED2); else output_low(LED2);.................... // if(RSENSOR==true) output_high(LED1); else output_low(LED1);.................... }.................... */.................... ////////////////////////////////////////////////////////////////////////////////.................... #int_TIMER2.................... TIMER2_isr() // ovladani serva.................... {.................... unsigned int8 n;........................................ output_high(SERVO);*0047: BSF 03.50048: BCF 05.20049: BCF 03.5004A: BSF 05.2.................... delay_us(1000);004B: CLRWDT004C: MOVLW 09004D: MOVWF 3B004E: MOVLW 6D004F: MOVWF 3C0050: CALL 0370051: DECFSZ 3B,F0052: GOTO 04E.................... for(n=uhel; n>0; n--) Delay_us(2);0053: MOVF 2C,W0054: MOVWF 3A0055: MOVF 3A,F0056: BTFSC 03.20057: GOTO 05E0058: CLRWDT0059: NOP005A: NOP005B: NOP005C: DECF 3A,F005D: GOTO 055.................... output_low(SERVO);005E: BSF 03.5005F: BCF 05.20060: BCF 03.50061: BCF 05.2.................... }........................................ ////////////////////////////////////////////////////////////////////////////////0062: BCF 0C.10063: BCF 0A.30064: GOTO 022.................... short int IRcheck() // potvrdi detekci cihly.................... {.................... output_high(IRTX); // vypne vysilac IR.................... delay_ms(100);........................................ output_low(STROBE);.................... sensors = spi_read(0); // cteni senzoru.................... sensors=~sensors;.................... output_high(STROBE);........................................ if(true==bit_test(sensors,7)) // otestuje, jestli je stale detekovan IR signal.................... {.................... output_low(IRTX); // zapne vysilac IR.................... delay_ms(100);........................................ output_low(STROBE);.................... sensors = spi_read(0); // cteni senzoru.................... sensors=~sensors;.................... output_high(STROBE);........................................ if(false==bit_test(sensors,7)) // otestuje, jestli je detekovana cihla.................... {.................... output_high(IRTX); // vypne vysilac IR.................... delay_ms(100);........................................ output_low(STROBE);.................... sensors = spi_read(0); // cteni senzoru.................... sensors=~sensors;.................... output_high(STROBE);........................................ output_low(IRTX); // zapne vysilac IR.................... if(bit_test(sensors,7)) return 1; // vrat 1, kdyz je stale cihla.................... }.................... };.................... output_low(IRTX); // zapne vysilac IR.................... return 0; // vrat 0, kdyz je detekovano ruseni.................... }.................... ////////////////////////////////////////////////////////////////////////////////.................... void objizdka().................... {.................... int8 shure=0;*007D: CLRF 35.................... unsigned int16 n;........................................ BR;BL;007E: BSF 03.5007F: BCF 05.60080: BCF 03.50081: BCF 05.60082: BSF 03.50083: BCF 05.70084: BCF 03.50085: BSF 05.70086: BSF 03.50087: BCF 05.00088: BCF 03.50089: BCF 05.0008A: BSF 03.5008B: BCF 05.1008C: BCF 03.5008D: BSF 05.1.................... Delay_ms(400);008E: MOVLW 02008F: MOVWF 380090: MOVLW C80091: MOVWF 390092: CALL 0650093: DECFSZ 38,F0094: GOTO 090.................... STOPR;STOPL;0095: BSF 03.50096: BCF 05.60097: BCF 03.50098: BCF 05.60099: BSF 03.5009A: BCF 05.7009B: BCF 03.5009C: BCF 05.7009D: BSF 03.5009E: BCF 05.0009F: BCF 03.500A0: BCF 05.000A1: BSF 03.500A2: BCF 05.100A3: BCF 03.500A4: BCF 05.1........................................ uhel=KOLMO1; // nastav zataceci kolecko kolmo na osu robota00A5: MOVLW E100A6: MOVWF 2C.................... Delay_ms(100);00A7: MOVLW 6400A8: MOVWF 3900A9: CALL 065.................... BL;FR;00AA: BSF 03.500AB: BCF 05.000AC: BCF 03.500AD: BCF 05.000AE: BSF 03.500AF: BCF 05.100B0: BCF 03.500B1: BSF 05.100B2: BSF 03.500B3: BCF 05.700B4: BCF 03.500B5: BCF 05.700B6: BSF 03.500B7: BCF 05.600B8: BCF 03.500B9: BSF 05.6.................... Delay_ms(200); // minimalni toceni, kdyby se zastavilo sikmo k cihle00BA: MOVLW C800BB: MOVWF 3900BC: CALL 065........................................ While(bit_test(sensors,7)) // toc, dokud neni cihla z primeho senzoru.................... {00BD: BTFSS 2A.700BE: GOTO 0CE.................... sensors = spi_read(0); // cteni senzoru00BF: MOVF 13,W00C0: CLRF 1300C1: BSF 03.500C2: BTFSC 14.000C3: GOTO 0C600C4: BCF 03.500C5: GOTO 0C100C6: BCF 03.500C7: MOVF 13,W00C8: MOVWF 2A.................... sensors=~sensors;00C9: COMF 2A,F.................... Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel00CA: MOVLW 0400CB: MOVWF 3900CC: CALL 065.................... }00CD: GOTO 0BD.................... STOPL; STOPR;00CE: BSF 03.500CF: BCF 05.000D0: BCF 03.500D1: BCF 05.000D2: BSF 03.500D3: BCF 05.100D4: BCF 03.500D5: BCF 05.100D6: BSF 03.500D7: BCF 05.600D8: BCF 03.500D9: BCF 05.600DA: BSF 03.500DB: BCF 05.700DC: BCF 03.500DD: BCF 05.7........................................ for (n=0;n<1500;n++) // vystred se na hranu cihly00DE: CLRF 3700DF: CLRF 3600E0: MOVF 37,W00E1: SUBLW 0500E2: BTFSS 03.000E3: GOTO 11700E4: BTFSS 03.200E5: GOTO 0EA00E6: MOVF 36,W00E7: SUBLW DB00E8: BTFSS 03.000E9: GOTO 117.................... {.................... if(!input(CIHLA)) {BL; FR;} else {FL; BR;};00EA: BSF 03.500EB: BSF 05.300EC: BCF 03.500ED: BTFSC 05.300EE: GOTO 10000EF: BSF 03.500F0: BCF 05.000F1: BCF 03.500F2: BCF 05.000F3: BSF 03.500F4: BCF 05.100F5: BCF 03.500F6: BSF 05.100F7: BSF 03.500F8: BCF 05.700F9: BCF 03.500FA: BCF 05.700FB: BSF 03.500FC: BCF 05.600FD: BCF 03.500FE: BSF 05.600FF: GOTO 1100100: BSF 03.50101: BCF 05.10102: BCF 03.50103: BCF 05.10104: BSF 03.50105: BCF 05.00106: BCF 03.50107: BSF 05.00108: BSF 03.50109: BCF 05.6010A: BCF 03.5010B: BCF 05.6010C: BSF 03.5010D: BCF 05.7010E: BCF 03.5010F: BSF 05.7.................... delay_ms(1);0110: MOVLW 010111: MOVWF 390112: CALL 065.................... }0113: INCF 36,F0114: BTFSC 03.20115: INCF 37,F0116: GOTO 0E0.................... STOPR;STOPL;0117: BSF 03.50118: BCF 05.60119: BCF 03.5011A: BCF 05.6011B: BSF 03.5011C: BCF 05.7011D: BCF 03.5011E: BCF 05.7011F: BSF 03.50120: BCF 05.00121: BCF 03.50122: BCF 05.00123: BSF 03.50124: BCF 05.10125: BCF 03.50126: BCF 05.1........................................ uhel=STRED; // dopredu0127: MOVLW 800128: MOVWF 2C.................... delay_ms(100);0129: MOVLW 64012A: MOVWF 39012B: CALL 065.................... FR; FL;012C: BSF 03.5012D: BCF 05.7012E: BCF 03.5012F: BCF 05.70130: BSF 03.50131: BCF 05.60132: BCF 03.50133: BSF 05.60134: BSF 03.50135: BCF 05.10136: BCF 03.50137: BCF 05.10138: BSF 03.50139: BCF 05.0013A: BCF 03.5013B: BSF 05.0.................... delay_ms(500);013C: MOVLW 02013D: MOVWF 38013E: MOVLW FA013F: MOVWF 390140: CALL 0650141: DECFSZ 38,F0142: GOTO 13E.................... BL;BR;0143: BSF 03.50144: BCF 05.00145: BCF 03.50146: BCF 05.00147: BSF 03.50148: BCF 05.10149: BCF 03.5014A: BSF 05.1014B: BSF 03.5014C: BCF 05.6014D: BCF 03.5014E: BCF 05.6014F: BSF 03.50150: BCF 05.70151: BCF 03.50152: BSF 05.7.................... delay_ms(200);0153: MOVLW C80154: MOVWF 390155: CALL 065.................... STOPL;STOPR;0156: BSF 03.50157: BCF 05.00158: BCF 03.50159: BCF 05.0015A: BSF 03.5015B: BCF 05.1015C: BCF 03.5015D: BCF 05.1015E: BSF 03.5015F: BCF 05.60160: BCF 03.50161: BCF 05.60162: BSF 03.50163: BCF 05.70164: BCF 03.50165: BCF 05.7........................................ uhel=STRED+BEAR3; // doprava0166: MOVLW B70167: MOVWF 2C.................... delay_ms(100);0168: MOVLW 640169: MOVWF 39016A: CALL 065.................... FL;016B: BSF 03.5016C: BCF 05.1016D: BCF 03.5016E: BCF 05.1016F: BSF 03.50170: BCF 05.00171: BCF 03.50172: BSF 05.0.................... delay_ms(200);0173: MOVLW C80174: MOVWF 390175: CALL 065.................... uhel=STRED+BEAR2; // min doprava0176: MOVLW A20177: MOVWF 2C.................... FL;FR;0178: BSF 03.50179: BCF 05.1017A: BCF 03.5017B: BCF 05.1017C: BSF 03.5017D: BCF 05.0017E: BCF 03.5017F: BSF 05.00180: BSF 03.50181: BCF 05.70182: BCF 03.50183: BCF 05.70184: BSF 03.50185: BCF 05.60186: BCF 03.50187: BSF 05.6.................... delay_ms(200);0188: MOVLW C80189: MOVWF 39018A: CALL 065.................... uhel=STRED+BEAR1; // jeste min doprava018B: MOVLW 8C018C: MOVWF 2C.................... FL;FR;018D: BSF 03.5018E: BCF 05.1018F: BCF 03.50190: BCF 05.10191: BSF 03.50192: BCF 05.00193: BCF 03.50194: BSF 05.00195: BSF 03.50196: BCF 05.70197: BCF 03.50198: BCF 05.70199: BSF 03.5019A: BCF 05.6019B: BCF 03.5019C: BSF 05.6.................... delay_ms(200);019D: MOVLW C8019E: MOVWF 39019F: CALL 065.................... uhel=STRED; // rovne01A0: MOVLW 8001A1: MOVWF 2C.................... FL;FR;01A2: BSF 03.501A3: BCF 05.101A4: BCF 03.501A5: BCF 05.101A6: BSF 03.501A7: BCF 05.001A8: BCF 03.501A9: BSF 05.001AA: BSF 03.501AB: BCF 05.701AC: BCF 03.501AD: BCF 05.701AE: BSF 03.501AF: BCF 05.601B0: BCF 03.501B1: BSF 05.6.................... delay_ms(100);01B2: MOVLW 6401B3: MOVWF 3901B4: CALL 065.................... While((sensors & 0b01111111)!=0) //dokud neni cara.................... {01B5: MOVF 2A,W01B6: ANDLW 7F01B7: BTFSC 03.201B8: GOTO 1C8.................... sensors = spi_read(0); // cteni senzoru01B9: MOVF 13,W01BA: CLRF 1301BB: BSF 03.501BC: BTFSC 14.001BD: GOTO 1C001BE: BCF 03.501BF: GOTO 1BB01C0: BCF 03.501C1: MOVF 13,W01C2: MOVWF 2A.................... sensors=~sensors;01C3: COMF 2A,F.................... Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel01C4: MOVLW 0401C5: MOVWF 3901C6: CALL 065.................... }01C7: GOTO 1B5.................... BL; BR;01C8: BSF 03.501C9: BCF 05.001CA: BCF 03.501CB: BCF 05.001CC: BSF 03.501CD: BCF 05.101CE: BCF 03.501CF: BSF 05.101D0: BSF 03.501D1: BCF 05.601D2: BCF 03.501D3: BCF 05.601D4: BSF 03.501D5: BCF 05.701D6: BCF 03.501D7: BSF 05.7.................... delay_ms(400);01D8: MOVLW 0201D9: MOVWF 3801DA: MOVLW C801DB: MOVWF 3901DC: CALL 06501DD: DECFSZ 38,F01DE: GOTO 1DA........................................ uhel=STRED-BEAR3; // doleva01DF: MOVLW 4901E0: MOVWF 2C.................... }01E1: BCF 0A.301E2: GOTO 2D1 (RETURN)........................................ ////////////////////////////////////////////////////////////////////////////////.................... void main().................... {01E3: CLRF 0401E4: MOVLW 1F01E5: ANDWF 03,F01E6: MOVLW 7001E7: BSF 03.501E8: MOVWF 0F01E9: BCF 1F.401EA: BCF 1F.501EB: MOVF 1B,W01EC: ANDLW 8001ED: MOVWF 1B01EE: MOVLW 0701EF: MOVWF 1C........................................ unsigned int16 n;.................... unsigned int8 i;........................................ setup_adc_ports(NO_ANALOGS);01F0: BCF 1F.401F1: BCF 1F.501F2: MOVF 1B,W01F3: ANDLW 8001F4: MOVWF 1B.................... setup_adc(ADC_CLOCK_INTERNAL);01F5: BCF 1F.601F6: BCF 03.501F7: BSF 1F.601F8: BSF 1F.701F9: BSF 03.501FA: BCF 1F.701FB: BCF 03.501FC: BSF 1F.0.................... setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_4);01FD: BCF 14.501FE: BSF 03.501FF: BCF 06.20200: BSF 06.10201: BCF 06.40202: MOVLW 300203: BCF 03.50204: MOVWF 140205: MOVLW 000206: BSF 03.50207: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);0208: MOVF 01,W0209: ANDLW C7020A: IORLW 08020B: MOVWF 01.................... setup_timer_1(T1_DISABLED);020C: BCF 03.5020D: CLRF 10.................... setup_timer_2(T2_DIV_BY_16,140,16);020E: MOVLW 78020F: MOVWF 780210: IORLW 060211: MOVWF 120212: MOVLW 8C0213: BSF 03.50214: MOVWF 12.................... setup_oscillator(OSC_8MHZ|OSC_INTRC);0215: MOVLW 720216: MOVWF 0F........................................ STOPR; STOPL; // zastav motory0217: BCF 05.60218: BCF 03.50219: BCF 05.6021A: BSF 03.5021B: BCF 05.7021C: BCF 03.5021D: BCF 05.7021E: BSF 03.5021F: BCF 05.00220: BCF 03.50221: BCF 05.00222: BSF 03.50223: BCF 05.10224: BCF 03.50225: BCF 05.1.................... Lmotor=0;Rmotor=0;0226: CLRF 2F0227: CLRF 2E0228: CLRF 310229: CLRF 30........................................ uhel=STRED; // nastav zadni kolecko na stred022A: MOVLW 80022B: MOVWF 2C.................... rovinka=0;022C: CLRF 2D........................................ enable_interrupts(INT_TIMER2);022D: BSF 03.5022E: BSF 0C.1.................... enable_interrupts(GLOBAL);022F: MOVLW C00230: BCF 03.50231: IORWF 0B,F........................................ output_low(IRTX); // zapni IR vysilac0232: BSF 03.50233: BCF 06.20234: BCF 03.50235: BCF 06.2........................................ delay_ms(1000);0236: MOVLW 040237: MOVWF 350238: MOVLW FA0239: MOVWF 39023A: CALL 065023B: DECFSZ 35,F023C: GOTO 238........................................ while(true).................... {........................................ GO(L,F,Lmotor);GO(R,F,Rmotor); // zapni motory023D: MOVF 01,W023E: BTFSS 00.7023F: GOTO 2430240: BTFSS 2F.70241: GOTO 24B0242: GOTO 2450243: BTFSC 2F.70244: GOTO 2540245: MOVF 2F,F0246: BTFSS 03.20247: GOTO 24B0248: SUBWF 2E,W0249: BTFSS 03.0024A: GOTO 254024B: BSF 03.5024C: BCF 05.1024D: BCF 03.5024E: BCF 05.1024F: BSF 03.50250: BCF 05.00251: BCF 03.50252: BSF 05.00253: GOTO 25C0254: BSF 03.50255: BCF 05.00256: BCF 03.50257: BCF 05.00258: BSF 03.50259: BCF 05.1025A: BCF 03.5025B: BCF 05.1025C: MOVF 01,W025D: BTFSS 00.7025E: GOTO 262025F: BTFSS 31.70260: GOTO 26A0261: GOTO 2640262: BTFSC 31.70263: GOTO 2730264: MOVF 31,F0265: BTFSS 03.20266: GOTO 26A0267: SUBWF 30,W0268: BTFSS 03.00269: GOTO 273026A: BSF 03.5026B: BCF 05.7026C: BCF 03.5026D: BCF 05.7026E: BSF 03.5026F: BCF 05.60270: BCF 03.50271: BSF 05.60272: GOTO 27B0273: BSF 03.50274: BCF 05.60275: BCF 03.50276: BCF 05.60277: BSF 03.50278: BCF 05.70279: BCF 03.5027A: BCF 05.7........................................ delay_us(1500);027B: CLRWDT027C: MOVLW 01027D: MOVWF 39027E: CALL 065027F: MOVLW 020280: MOVWF 350281: CLRF 290282: BTFSC 0B.70283: BSF 29.70284: BCF 0B.70285: MOVLW F70286: MOVWF 3C0287: CALL 0370288: BTFSC 29.70289: BSF 0B.7028A: DECFSZ 35,F028B: GOTO 281........................................ output_low(STROBE);028C: BSF 03.5028D: BCF 06.0028E: BCF 03.5028F: BCF 06.0.................... sensors = spi_read(0); // cteni senzoru0290: MOVF 13,W0291: CLRF 130292: BSF 03.50293: BTFSC 14.00294: GOTO 2970295: BCF 03.50296: GOTO 2920297: BCF 03.50298: MOVF 13,W0299: MOVWF 2A.................... sensors=~sensors;029A: COMF 2A,F.................... output_high(STROBE);029B: BSF 03.5029C: BCF 06.0029D: BCF 03.5029E: BSF 06.0........................................ i=0; // havarijni kod029F: CLRF 34.................... for (n=0; n<=6; n++)02A0: CLRF 3302A1: CLRF 3202A2: MOVF 33,F02A3: BTFSS 03.202A4: GOTO 2B902A5: MOVF 32,W02A6: SUBLW 0602A7: BTFSS 03.002A8: GOTO 2B9.................... {.................... if(bit_test(sensors,n)) i++;02A9: MOVF 2A,W02AA: MOVWF 7702AB: MOVF 32,W02AC: MOVWF 7802AD: BTFSC 03.202AE: GOTO 2B302AF: BCF 03.002B0: RRF 77,F02B1: DECFSZ 78,F02B2: GOTO 2AF02B3: BTFSC 77.002B4: INCF 34,F.................... }02B5: INCF 32,F02B6: BTFSC 03.202B7: INCF 33,F02B8: GOTO 2A2.................... if (i>3) While(true){STOPR; STOPL;}; // zastavi, kdyz je cerno pod vice nez tremi cidly02B9: MOVF 34,W02BA: SUBLW 0302BB: BTFSC 03.002BC: GOTO 2CE02BD: BSF 03.502BE: BCF 05.602BF: BCF 03.502C0: BCF 05.602C1: BSF 03.502C2: BCF 05.702C3: BCF 03.502C4: BCF 05.702C5: BSF 03.502C6: BCF 05.002C7: BCF 03.502C8: BCF 05.002C9: BSF 03.502CA: BCF 05.102CB: BCF 03.502CC: BCF 05.102CD: GOTO 2BD........................................ if(bit_test(sensors,7)) // detekce dihly02CE: BTFSS 2A.702CF: GOTO 2D1.................... {.................... objizdka();02D0: GOTO 07D.................... }........................................ if(bit_test(sensors,3)) //...|...//02D1: BTFSS 2A.302D2: GOTO 2E1.................... {.................... uhel=STRED;02D3: MOVLW 8002D4: MOVWF 2C.................... Lmotor=SPEEDMAX;02D5: CLRF 2F02D6: MOVLW 8C02D7: MOVWF 2E.................... Rmotor=SPEEDMAX;02D8: CLRF 3102D9: MOVWF 30.................... line=S;02DA: MOVLW 0202DB: MOVWF 2B.................... if (rovinka<255) rovinka++;02DC: INCFSZ 2D,W02DD: GOTO 2DF02DE: GOTO 2E002DF: INCF 2D,F.................... continue;02E0: GOTO 23D.................... }........................................ if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu02E1: BTFSS 2A.002E2: GOTO 2ED.................... {.................... uhel=STRED-BEAR3;02E3: MOVLW 4902E4: MOVWF 2C.................... Lmotor=0;02E5: CLRF 2F02E6: CLRF 2E.................... Rmotor=SPEEDMAX;02E7: CLRF 3102E8: MOVLW 8C02E9: MOVWF 30.................... line=L;02EA: MOVLW 0102EB: MOVWF 2B.................... continue;02EC: GOTO 23D.................... }........................................ if(bit_test(sensors,6)) //......|//02ED: BTFSS 2A.602EE: GOTO 2F8.................... {.................... uhel=STRED+BEAR3;02EF: MOVLW B702F0: MOVWF 2C.................... Rmotor=0;02F1: CLRF 3102F2: CLRF 30.................... Lmotor=SPEEDMAX;02F3: CLRF 2F02F4: MOVLW 8C02F5: MOVWF 2E.................... line=R;02F6: CLRF 2B.................... continue;02F7: GOTO 23D.................... }........................................ if(bit_test(sensors,1)) //.|.....//02F8: BTFSS 2A.102F9: GOTO 305.................... {.................... uhel=STRED-BEAR2;02FA: MOVLW 5E02FB: MOVWF 2C.................... Lmotor=SPEEDMAX-50;02FC: CLRF 2F02FD: MOVLW 5A02FE: MOVWF 2E.................... Rmotor=SPEEDMAX;02FF: CLRF 310300: MOVLW 8C0301: MOVWF 30.................... line=S;0302: MOVLW 020303: MOVWF 2B.................... continue;0304: GOTO 23D.................... }........................................ if(bit_test(sensors,5)) //.....|.//0305: BTFSS 2A.50306: GOTO 312.................... {.................... uhel=STRED+BEAR2;0307: MOVLW A20308: MOVWF 2C.................... Rmotor=SPEEDMAX-50;0309: CLRF 31030A: MOVLW 5A030B: MOVWF 30.................... Lmotor=SPEEDMAX;030C: CLRF 2F030D: MOVLW 8C030E: MOVWF 2E.................... line=S;030F: MOVLW 020310: MOVWF 2B.................... continue;0311: GOTO 23D.................... }........................................ if (bit_test(sensors,2)) //..|....//0312: BTFSS 2A.20313: GOTO 322.................... {.................... uhel=STRED-BEAR1;0314: MOVLW 740315: MOVWF 2C.................... Lmotor=SPEEDMAX;0316: CLRF 2F0317: MOVLW 8C0318: MOVWF 2E.................... Rmotor=SPEEDMAX;0319: CLRF 31031A: MOVWF 30.................... line=S;031B: MOVLW 02031C: MOVWF 2B.................... if (rovinka<255) rovinka++;031D: INCFSZ 2D,W031E: GOTO 320031F: GOTO 3210320: INCF 2D,F.................... continue;0321: GOTO 23D.................... }........................................ if (bit_test(sensors,4)) //....|..//0322: BTFSS 2A.40323: GOTO 331.................... {.................... uhel=STRED+BEAR1;0324: MOVLW 8C0325: MOVWF 2C.................... Rmotor=SPEEDMAX;0326: CLRF 310327: MOVWF 30.................... Lmotor=SPEEDMAX;0328: CLRF 2F0329: MOVWF 2E.................... line=S;032A: MOVLW 02032B: MOVWF 2B.................... if (rovinka<255) rovinka++;032C: INCFSZ 2D,W032D: GOTO 32F032E: GOTO 330032F: INCF 2D,F.................... continue;0330: GOTO 23D.................... }........................................ if ((L==line) || (R==line)) // Brzdeni pri vyjeti z trate0331: DECFSZ 2B,W0332: GOTO 3340333: GOTO 3370334: MOVF 2B,F0335: BTFSS 03.20336: GOTO 34F.................... {.................... if (rovinka>250)0337: MOVF 2D,W0338: SUBLW FA0339: BTFSC 03.0033A: GOTO 34E.................... {.................... BL; BR;033B: BSF 03.5033C: BCF 05.0033D: BCF 03.5033E: BCF 05.0033F: BSF 03.50340: BCF 05.10341: BCF 03.50342: BSF 05.10343: BSF 03.50344: BCF 05.60345: BCF 03.50346: BCF 05.60347: BSF 03.50348: BCF 05.70349: BCF 03.5034A: BSF 05.7.................... Delay_ms(100);034B: MOVLW 64034C: MOVWF 39034D: CALL 065.................... };.................... rovinka=0;034E: CLRF 2D.................... };........................................ }034F: GOTO 23D.................... }0350: SLEEPConfiguration Fuses:Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IOWord 2: 3FFC NOFCMEN NOIESO