0,0 → 1,911 |
CCS PCM C Compiler, Version 3.245, 27853 12-V-06 23:56 |
|
Filename: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.lst |
|
ROM used: 646 words (16%) |
Largest free fragment is 2048 |
RAM used: 32 (18%) at main() level |
35 (20%) worst case |
Stack: 3 worst case (1 in main + 2 for interrupts) |
|
* |
0000: MOVLW 00 |
0001: MOVWF 0A |
0002: GOTO 07D |
0003: NOP |
0004: MOVWF 7F |
0005: SWAPF 03,W |
0006: CLRF 03 |
0007: MOVWF 21 |
0008: MOVF 7F,W |
0009: MOVWF 20 |
000A: MOVF 0A,W |
000B: MOVWF 28 |
000C: CLRF 0A |
000D: SWAPF 20,F |
000E: MOVF 04,W |
000F: MOVWF 22 |
0010: MOVF 77,W |
0011: MOVWF 23 |
0012: MOVF 78,W |
0013: MOVWF 24 |
0014: MOVF 79,W |
0015: MOVWF 25 |
0016: MOVF 7A,W |
0017: MOVWF 26 |
0018: MOVF 7B,W |
0019: MOVWF 27 |
001A: BCF 03.7 |
001B: BCF 03.5 |
001C: MOVLW 8C |
001D: MOVWF 04 |
001E: BTFSS 00.1 |
001F: GOTO 022 |
0020: BTFSC 0C.1 |
0021: GOTO 035 |
0022: MOVF 22,W |
0023: MOVWF 04 |
0024: MOVF 23,W |
0025: MOVWF 77 |
0026: MOVF 24,W |
0027: MOVWF 78 |
0028: MOVF 25,W |
0029: MOVWF 79 |
002A: MOVF 26,W |
002B: MOVWF 7A |
002C: MOVF 27,W |
002D: MOVWF 7B |
002E: MOVF 28,W |
002F: MOVWF 0A |
0030: SWAPF 21,W |
0031: MOVWF 03 |
0032: SWAPF 7F,F |
0033: SWAPF 7F,W |
0034: RETFIE |
0035: BCF 0A.3 |
0036: 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 08 |
0038: SUBWF 3D,F |
0039: BTFSS 03.0 |
003A: GOTO 046 |
003B: MOVLW 3D |
003C: MOVWF 04 |
003D: BCF 03.0 |
003E: RRF 00,F |
003F: MOVF 00,W |
0040: BTFSC 03.2 |
0041: GOTO 046 |
0042: GOTO 044 |
0043: CLRWDT |
0044: DECFSZ 00,F |
0045: GOTO 043 |
0046: RETLW 00 |
* |
0065: MOVLW 3A |
0066: MOVWF 04 |
0067: MOVF 00,W |
0068: BTFSC 03.2 |
0069: GOTO 07C |
006A: MOVLW 02 |
006B: MOVWF 78 |
006C: MOVLW BF |
006D: MOVWF 77 |
006E: CLRWDT |
006F: DECFSZ 77,F |
0070: GOTO 06E |
0071: DECFSZ 78,F |
0072: GOTO 06C |
0073: MOVLW 96 |
0074: MOVWF 77 |
0075: DECFSZ 77,F |
0076: GOTO 075 |
0077: NOP |
0078: NOP |
0079: CLRWDT |
007A: DECFSZ 00,F |
007B: GOTO 06A |
007C: 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 10 // 3 stupne zataceni |
.................... #define BEAR2 25 |
.................... #define BEAR3 45 |
.................... #define R 100 // Rozumna rychlost |
.................... #define R17 200 // X nasobek rozumne rychlosti |
.................... #define PRED_CIHLOU 100 // rychlost pri dalkove detekci cihly |
.................... #define L2 2 // cara vlevo |
.................... #define L3 3 // cara vlevo |
.................... #define S 0 // cara mezi sensory |
.................... #define R2 -2 // cara vpravo |
.................... #define R3 -3 // cara vpravo |
.................... |
.................... // servo |
.................... #define SERVO PIN_B5 |
.................... |
.................... // kroutitka |
.................... #define CERVENA 4 // AN4 |
.................... #define MODRA 2 // AN2 |
.................... |
.................... // 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 |
.................... |
.................... unsigned int8 sensors; // pomocna promenna pro cteni cidel na caru |
.................... signed int8 line = S; // na ktere strane byla detekovana cara |
* |
008A: BCF 03.5 |
008B: CLRF 2B |
.................... unsigned int8 uhel; // urcuje aktualni uhel zataceni |
.................... unsigned int8 speed; // maximalni povolena rychlost |
.................... unsigned int8 turn; // rychlost toceni |
.................... 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;} |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... #int_TIMER2 |
.................... TIMER2_isr() // ovladani serva |
.................... { |
.................... unsigned int8 n; |
.................... |
.................... output_high(SERVO); |
* |
0047: BSF 03.5 |
0048: BCF 06.5 |
0049: BCF 03.5 |
004A: BSF 06.5 |
.................... delay_us(1000); |
004B: CLRWDT |
004C: MOVLW 09 |
004D: MOVWF 3C |
004E: MOVLW 6D |
004F: MOVWF 3D |
0050: CALL 037 |
0051: DECFSZ 3C,F |
0052: GOTO 04E |
.................... for(n=uhel; n>0; n--) Delay_us(2); |
0053: MOVF 2C,W |
0054: MOVWF 3B |
0055: MOVF 3B,F |
0056: BTFSC 03.2 |
0057: GOTO 05E |
0058: CLRWDT |
0059: NOP |
005A: NOP |
005B: NOP |
005C: DECF 3B,F |
005D: GOTO 055 |
.................... output_low(SERVO); |
005E: BSF 03.5 |
005F: BCF 06.5 |
0060: BCF 03.5 |
0061: BCF 06.5 |
.................... } |
.................... |
.................... //////////////////////////////////////////////////////////////////////////////// |
0062: BCF 0C.1 |
0063: BCF 0A.3 |
0064: GOTO 022 |
.................... void main() |
.................... { |
* |
007D: CLRF 04 |
007E: MOVLW 1F |
007F: ANDWF 03,F |
0080: MOVLW 70 |
0081: BSF 03.5 |
0082: MOVWF 0F |
0083: BCF 1F.4 |
0084: BCF 1F.5 |
0085: MOVF 1B,W |
0086: ANDLW 80 |
0087: MOVWF 1B |
0088: MOVLW 07 |
0089: MOVWF 1C |
.................... |
.................... unsigned int8 n; |
.................... unsigned int8 i,j; |
.................... unsigned int8 last_sensors; |
.................... unsigned int8 RozumnaRychlost; |
.................... |
.................... setup_adc_ports(sAN5|sAN2|sAN4|sAN6|VSS_VDD); // AD pro kroutitka |
* |
008C: BSF 03.5 |
008D: BCF 1F.4 |
008E: BCF 1F.5 |
008F: MOVF 1B,W |
0090: ANDLW 80 |
0091: IORLW 74 |
0092: MOVWF 1B |
.................... setup_adc(ADC_CLOCK_INTERNAL); |
0093: BCF 1F.6 |
0094: BCF 03.5 |
0095: BSF 1F.6 |
0096: BSF 1F.7 |
0097: BSF 03.5 |
0098: BCF 1F.7 |
0099: BCF 03.5 |
009A: BSF 1F.0 |
.................... setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_16); |
009B: BCF 14.5 |
009C: BSF 03.5 |
009D: BCF 06.2 |
009E: BSF 06.1 |
009F: BCF 06.4 |
00A0: MOVLW 31 |
00A1: BCF 03.5 |
00A2: MOVWF 14 |
00A3: MOVLW 00 |
00A4: BSF 03.5 |
00A5: MOVWF 14 |
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
00A6: MOVF 01,W |
00A7: ANDLW C7 |
00A8: IORLW 08 |
00A9: MOVWF 01 |
.................... setup_timer_1(T1_DISABLED|T1_DIV_BY_8); |
00AA: MOVLW 30 |
00AB: BCF 03.5 |
00AC: MOVWF 10 |
.................... setup_timer_2(T2_DIV_BY_16,140,16); |
00AD: MOVLW 78 |
00AE: MOVWF 78 |
00AF: IORLW 06 |
00B0: MOVWF 12 |
00B1: MOVLW 8C |
00B2: BSF 03.5 |
00B3: MOVWF 12 |
.................... setup_oscillator(OSC_8MHZ|OSC_INTRC); |
00B4: MOVLW 72 |
00B5: MOVWF 0F |
.................... |
.................... STOPR; STOPL; // zastav motory |
00B6: BCF 05.6 |
00B7: BCF 03.5 |
00B8: BCF 05.6 |
00B9: BSF 03.5 |
00BA: BCF 05.7 |
00BB: BCF 03.5 |
00BC: BCF 05.7 |
00BD: BSF 03.5 |
00BE: BCF 05.0 |
00BF: BCF 03.5 |
00C0: BCF 05.0 |
00C1: BSF 03.5 |
00C2: BCF 05.1 |
00C3: BCF 03.5 |
00C4: BCF 05.1 |
.................... Lmotor=0;Rmotor=0; |
00C5: CLRF 31 |
00C6: CLRF 30 |
00C7: CLRF 33 |
00C8: CLRF 32 |
.................... |
.................... uhel = STRED; // nastav zadni kolecko na stred |
00C9: MOVLW 80 |
00CA: MOVWF 2C |
.................... rovinka = 0; |
00CB: CLRF 2F |
.................... |
.................... enable_interrupts(INT_TIMER2); |
00CC: BSF 03.5 |
00CD: BSF 0C.1 |
.................... enable_interrupts(GLOBAL); |
00CE: MOVLW C0 |
00CF: BCF 03.5 |
00D0: IORWF 0B,F |
.................... |
.................... output_low(IRTX); // zapni IR vysilac |
00D1: BSF 03.5 |
00D2: BCF 06.2 |
00D3: BCF 03.5 |
00D4: BCF 06.2 |
.................... |
.................... delay_ms(2000); // musime pockat na diagnostiku slave CPU |
00D5: MOVLW 08 |
00D6: MOVWF 39 |
00D7: MOVLW FA |
00D8: MOVWF 3A |
00D9: CALL 065 |
00DA: DECFSZ 39,F |
00DB: GOTO 0D7 |
.................... |
.................... //nastaveni rychlosti |
.................... set_adc_channel(CERVENA); |
00DC: MOVLW 20 |
00DD: MOVWF 78 |
00DE: MOVF 1F,W |
00DF: ANDLW C7 |
00E0: IORWF 78,W |
00E1: MOVWF 1F |
.................... |
.................... Delay_ms(1); |
00E2: MOVLW 01 |
00E3: MOVWF 3A |
00E4: CALL 065 |
.................... speed=R+(read_adc()>>2); // rychlost rovne +63; kroutitko dava 0-63 |
00E5: BSF 1F.2 |
00E6: BTFSC 1F.2 |
00E7: GOTO 0E6 |
00E8: MOVF 1E,W |
00E9: MOVWF 77 |
00EA: RRF 77,F |
00EB: RRF 77,F |
00EC: MOVLW 3F |
00ED: ANDWF 77,F |
00EE: MOVF 77,W |
00EF: ADDLW 64 |
00F0: MOVWF 2D |
.................... set_adc_channel(MODRA); |
00F1: MOVLW 10 |
00F2: MOVWF 78 |
00F3: MOVF 1F,W |
00F4: ANDLW C7 |
00F5: IORWF 78,W |
00F6: MOVWF 1F |
.................... Delay_ms(1); |
00F7: MOVLW 01 |
00F8: MOVWF 3A |
00F9: CALL 065 |
.................... turn=speed-32+(read_adc()>>2); // rychlost toceni +-32; kroutitko dava 0-63 |
00FA: MOVLW 20 |
00FB: SUBWF 2D,W |
00FC: MOVWF 39 |
00FD: BSF 1F.2 |
00FE: BTFSC 1F.2 |
00FF: GOTO 0FE |
0100: MOVF 1E,W |
0101: MOVWF 77 |
0102: RRF 77,F |
0103: RRF 77,F |
0104: MOVLW 3F |
0105: ANDWF 77,F |
0106: MOVF 77,W |
0107: ADDWF 39,W |
0108: MOVWF 2E |
.................... |
.................... |
.................... while(true) |
.................... { |
.................... |
.................... GO(L,F,Lmotor);GO(R,F,Rmotor); // zapni motory PWM podle promenych Lmotor a Rmotor |
0109: MOVF 01,W |
010A: BTFSS 00.7 |
010B: GOTO 10F |
010C: BTFSS 31.7 |
010D: GOTO 117 |
010E: GOTO 111 |
010F: BTFSC 31.7 |
0110: GOTO 120 |
0111: MOVF 31,F |
0112: BTFSS 03.2 |
0113: GOTO 117 |
0114: SUBWF 30,W |
0115: BTFSS 03.0 |
0116: GOTO 120 |
0117: BSF 03.5 |
0118: BCF 05.1 |
0119: BCF 03.5 |
011A: BCF 05.1 |
011B: BSF 03.5 |
011C: BCF 05.0 |
011D: BCF 03.5 |
011E: BSF 05.0 |
011F: GOTO 128 |
0120: BSF 03.5 |
0121: BCF 05.0 |
0122: BCF 03.5 |
0123: BCF 05.0 |
0124: BSF 03.5 |
0125: BCF 05.1 |
0126: BCF 03.5 |
0127: BCF 05.1 |
0128: MOVF 01,W |
0129: BTFSS 00.7 |
012A: GOTO 12E |
012B: BTFSS 33.7 |
012C: GOTO 136 |
012D: GOTO 130 |
012E: BTFSC 33.7 |
012F: GOTO 13F |
0130: MOVF 33,F |
0131: BTFSS 03.2 |
0132: GOTO 136 |
0133: SUBWF 32,W |
0134: BTFSS 03.0 |
0135: GOTO 13F |
0136: BSF 03.5 |
0137: BCF 05.7 |
0138: BCF 03.5 |
0139: BCF 05.7 |
013A: BSF 03.5 |
013B: BCF 05.6 |
013C: BCF 03.5 |
013D: BSF 05.6 |
013E: GOTO 147 |
013F: BSF 03.5 |
0140: BCF 05.6 |
0141: BCF 03.5 |
0142: BCF 05.6 |
0143: BSF 03.5 |
0144: BCF 05.7 |
0145: BCF 03.5 |
0146: BCF 05.7 |
.................... |
.................... delay_us(2000); // cekani na SLAVE, nez pripravi data od cidel |
0147: CLRWDT |
0148: MOVLW 01 |
0149: MOVWF 3A |
014A: CALL 065 |
014B: MOVLW 09 |
014C: MOVWF 39 |
014D: CLRF 29 |
014E: BTFSC 0B.7 |
014F: BSF 29.7 |
0150: BCF 0B.7 |
0151: MOVLW 6D |
0152: MOVWF 3D |
0153: CALL 037 |
0154: BTFSC 29.7 |
0155: BSF 0B.7 |
0156: DECFSZ 39,F |
0157: GOTO 14D |
.................... |
.................... last_sensors=sensors; |
0158: MOVF 2A,W |
0159: MOVWF 37 |
.................... |
.................... output_low(STROBE); // vypni zobrazovani na posuvnem registru |
015A: BSF 03.5 |
015B: BCF 06.0 |
015C: BCF 03.5 |
015D: BCF 06.0 |
.................... sensors = spi_read(0); // cteni senzoru |
015E: MOVF 13,W |
015F: CLRF 13 |
0160: BSF 03.5 |
0161: BTFSC 14.0 |
0162: GOTO 165 |
0163: BCF 03.5 |
0164: GOTO 160 |
0165: BCF 03.5 |
0166: MOVF 13,W |
0167: MOVWF 2A |
.................... sensors=~sensors; // neguj prijata data |
0168: COMF 2A,F |
.................... output_high(STROBE); // zobraz data na posuvnem registru |
0169: BSF 03.5 |
016A: BCF 06.0 |
016B: BCF 03.5 |
016C: BSF 06.0 |
.................... |
.................... i=0; // havarijni kod |
016D: CLRF 35 |
.................... for (n=0; n<=6; n++) |
016E: CLRF 34 |
016F: MOVF 34,W |
0170: SUBLW 06 |
0171: BTFSS 03.0 |
0172: GOTO 181 |
.................... { |
.................... if(bit_test(sensors,n)) i++; |
0173: MOVF 2A,W |
0174: MOVWF 77 |
0175: MOVF 34,W |
0176: MOVWF 78 |
0177: BTFSC 03.2 |
0178: GOTO 17D |
0179: BCF 03.0 |
017A: RRF 77,F |
017B: DECFSZ 78,F |
017C: GOTO 179 |
017D: BTFSC 77.0 |
017E: INCF 35,F |
.................... } |
017F: INCF 34,F |
0180: GOTO 16F |
.................... if (i>4) // zastavi, kdyz je cerno pod vice nez tremi cidly |
0181: MOVF 35,W |
0182: SUBLW 04 |
0183: BTFSC 03.0 |
0184: GOTO 1AD |
.................... { |
.................... BL; BR; |
0185: BSF 03.5 |
0186: BCF 05.0 |
0187: BCF 03.5 |
0188: BCF 05.0 |
0189: BSF 03.5 |
018A: BCF 05.1 |
018B: BCF 03.5 |
018C: BSF 05.1 |
018D: BSF 03.5 |
018E: BCF 05.6 |
018F: BCF 03.5 |
0190: BCF 05.6 |
0191: BSF 03.5 |
0192: BCF 05.7 |
0193: BCF 03.5 |
0194: BSF 05.7 |
.................... delay_ms(300); |
0195: MOVLW 02 |
0196: MOVWF 39 |
0197: MOVLW 96 |
0198: MOVWF 3A |
0199: CALL 065 |
019A: DECFSZ 39,F |
019B: GOTO 197 |
.................... STOPR; STOPL; |
019C: BSF 03.5 |
019D: BCF 05.6 |
019E: BCF 03.5 |
019F: BCF 05.6 |
01A0: BSF 03.5 |
01A1: BCF 05.7 |
01A2: BCF 03.5 |
01A3: BCF 05.7 |
01A4: BSF 03.5 |
01A5: BCF 05.0 |
01A6: BCF 03.5 |
01A7: BCF 05.0 |
01A8: BSF 03.5 |
01A9: BCF 05.1 |
01AA: BCF 03.5 |
01AB: BCF 05.1 |
.................... While(true); |
01AC: GOTO 1AC |
.................... }; |
.................... |
.................... if (bit_test(sensors,7)) // detekce cihly |
01AD: BTFSS 2A.7 |
01AE: GOTO 1D9 |
.................... { |
.................... BR;BL; |
01AF: BSF 03.5 |
01B0: BCF 05.6 |
01B1: BCF 03.5 |
01B2: BCF 05.6 |
01B3: BSF 03.5 |
01B4: BCF 05.7 |
01B5: BCF 03.5 |
01B6: BSF 05.7 |
01B7: BSF 03.5 |
01B8: BCF 05.0 |
01B9: BCF 03.5 |
01BA: BCF 05.0 |
01BB: BSF 03.5 |
01BC: BCF 05.1 |
01BD: BCF 03.5 |
01BE: BSF 05.1 |
.................... Delay_ms(100); |
01BF: MOVLW 64 |
01C0: MOVWF 3A |
01C1: CALL 065 |
.................... STOPR;STOPL; |
01C2: BSF 03.5 |
01C3: BCF 05.6 |
01C4: BCF 03.5 |
01C5: BCF 05.6 |
01C6: BSF 03.5 |
01C7: BCF 05.7 |
01C8: BCF 03.5 |
01C9: BCF 05.7 |
01CA: BSF 03.5 |
01CB: BCF 05.0 |
01CC: BCF 03.5 |
01CD: BCF 05.0 |
01CE: BSF 03.5 |
01CF: BCF 05.1 |
01D0: BCF 03.5 |
01D1: BCF 05.1 |
.................... Delay_ms(1000); |
01D2: MOVLW 04 |
01D3: MOVWF 39 |
01D4: MOVLW FA |
01D5: MOVWF 3A |
01D6: CALL 065 |
01D7: DECFSZ 39,F |
01D8: GOTO 1D4 |
.................... } |
.................... |
.................... if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu |
01D9: BTFSS 2A.0 |
01DA: GOTO 1E7 |
.................... { |
.................... uhel=STRED - BEAR3; |
01DB: MOVLW 53 |
01DC: MOVWF 2C |
.................... Lmotor=0; |
01DD: CLRF 31 |
01DE: CLRF 30 |
.................... Rmotor=turn; |
01DF: CLRF 7A |
01E0: MOVF 2E,W |
01E1: MOVWF 32 |
01E2: MOVF 7A,W |
01E3: MOVWF 33 |
.................... line=L3; |
01E4: MOVLW 03 |
01E5: MOVWF 2B |
.................... continue; |
01E6: GOTO 109 |
.................... } |
.................... |
.................... if(bit_test(sensors,6)) //......|// |
01E7: BTFSS 2A.6 |
01E8: GOTO 1F5 |
.................... { |
.................... uhel=STRED + BEAR3; |
01E9: MOVLW AD |
01EA: MOVWF 2C |
.................... Rmotor=0; |
01EB: CLRF 33 |
01EC: CLRF 32 |
.................... Lmotor=turn; |
01ED: CLRF 7A |
01EE: MOVF 2E,W |
01EF: MOVWF 30 |
01F0: MOVF 7A,W |
01F1: MOVWF 31 |
.................... line=R3; |
01F2: MOVLW FD |
01F3: MOVWF 2B |
.................... continue; |
01F4: GOTO 109 |
.................... } |
.................... |
.................... if(bit_test(sensors,1)) //.|.....// |
01F5: BTFSS 2A.1 |
01F6: GOTO 207 |
.................... { |
.................... uhel=STRED - BEAR2; |
01F7: MOVLW 67 |
01F8: MOVWF 2C |
.................... Lmotor=speed-70; |
01F9: MOVLW 46 |
01FA: SUBWF 2D,W |
01FB: CLRF 7A |
01FC: MOVWF 30 |
01FD: MOVF 7A,W |
01FE: MOVWF 31 |
.................... Rmotor=speed; |
01FF: CLRF 7A |
0200: MOVF 2D,W |
0201: MOVWF 32 |
0202: MOVF 7A,W |
0203: MOVWF 33 |
.................... line=L2; |
0204: MOVLW 02 |
0205: MOVWF 2B |
.................... continue; |
0206: GOTO 109 |
.................... } |
.................... |
.................... if(bit_test(sensors,5)) //.....|.// |
0207: BTFSS 2A.5 |
0208: GOTO 219 |
.................... { |
.................... uhel=STRED + BEAR2; |
0209: MOVLW 99 |
020A: MOVWF 2C |
.................... Rmotor=speed-70; |
020B: MOVLW 46 |
020C: SUBWF 2D,W |
020D: CLRF 7A |
020E: MOVWF 32 |
020F: MOVF 7A,W |
0210: MOVWF 33 |
.................... Lmotor=speed; |
0211: CLRF 7A |
0212: MOVF 2D,W |
0213: MOVWF 30 |
0214: MOVF 7A,W |
0215: MOVWF 31 |
.................... line=R2; |
0216: MOVLW FE |
0217: MOVWF 2B |
.................... continue; |
0218: GOTO 109 |
.................... } |
.................... |
.................... if (bit_test(sensors,2)) //..|....// |
0219: BTFSS 2A.2 |
021A: GOTO 22F |
.................... { |
.................... uhel=STRED - BEAR1; |
021B: MOVLW 76 |
021C: MOVWF 2C |
.................... Lmotor=speed-20; |
021D: MOVLW 14 |
021E: SUBWF 2D,W |
021F: CLRF 7A |
0220: MOVWF 30 |
0221: MOVF 7A,W |
0222: MOVWF 31 |
.................... Rmotor=speed; |
0223: CLRF 7A |
0224: MOVF 2D,W |
0225: MOVWF 32 |
0226: MOVF 7A,W |
0227: MOVWF 33 |
.................... line=L2; |
0228: MOVLW 02 |
0229: MOVWF 2B |
.................... if (rovinka<255) rovinka++; |
022A: INCFSZ 2F,W |
022B: GOTO 22D |
022C: GOTO 22E |
022D: INCF 2F,F |
.................... continue; |
022E: GOTO 109 |
.................... } |
.................... |
.................... if (bit_test(sensors,4)) //....|..// |
022F: BTFSS 2A.4 |
0230: GOTO 245 |
.................... { |
.................... uhel=STRED + BEAR1; |
0231: MOVLW 8A |
0232: MOVWF 2C |
.................... Rmotor=speed-20; |
0233: MOVLW 14 |
0234: SUBWF 2D,W |
0235: CLRF 7A |
0236: MOVWF 32 |
0237: MOVF 7A,W |
0238: MOVWF 33 |
.................... Lmotor=speed; |
0239: CLRF 7A |
023A: MOVF 2D,W |
023B: MOVWF 30 |
023C: MOVF 7A,W |
023D: MOVWF 31 |
.................... line=L2; |
023E: MOVLW 02 |
023F: MOVWF 2B |
.................... if (rovinka<255) rovinka++; |
0240: INCFSZ 2F,W |
0241: GOTO 243 |
0242: GOTO 244 |
0243: INCF 2F,F |
.................... continue; |
0244: GOTO 109 |
.................... } |
.................... |
.................... if(bit_test(sensors,3)) //...|...// |
0245: BTFSS 2A.3 |
0246: GOTO 259 |
.................... { |
.................... uhel=STRED; |
0247: MOVLW 80 |
0248: MOVWF 2C |
.................... Lmotor=speed; |
0249: CLRF 7A |
024A: MOVF 2D,W |
024B: MOVWF 30 |
024C: MOVF 7A,W |
024D: MOVWF 31 |
.................... Rmotor=speed; |
024E: CLRF 7A |
024F: MOVF 2D,W |
0250: MOVWF 32 |
0251: MOVF 7A,W |
0252: MOVWF 33 |
.................... line=S; |
0253: CLRF 2B |
.................... if (rovinka < 255) rovinka++; |
0254: INCFSZ 2F,W |
0255: GOTO 257 |
0256: GOTO 258 |
0257: INCF 2F,F |
.................... continue; |
0258: GOTO 109 |
.................... } |
.................... |
.................... |
.................... |
.................... if ((L3==line) || (R3==line)) // Brzdeni pri vyjeti z trate |
0259: MOVF 2B,W |
025A: SUBLW 03 |
025B: BTFSC 03.2 |
025C: GOTO 261 |
025D: MOVF 2B,W |
025E: SUBLW FD |
025F: BTFSS 03.2 |
0260: GOTO 284 |
.................... { |
.................... if (rovinka>50) |
0261: MOVF 2F,W |
0262: SUBLW 32 |
0263: BTFSC 03.0 |
0264: GOTO 283 |
.................... { |
.................... BL; BR; |
0265: BSF 03.5 |
0266: BCF 05.0 |
0267: BCF 03.5 |
0268: BCF 05.0 |
0269: BSF 03.5 |
026A: BCF 05.1 |
026B: BCF 03.5 |
026C: BSF 05.1 |
026D: BSF 03.5 |
026E: BCF 05.6 |
026F: BCF 03.5 |
0270: BCF 05.6 |
0271: BSF 03.5 |
0272: BCF 05.7 |
0273: BCF 03.5 |
0274: BSF 05.7 |
.................... Delay_ms(70); |
0275: MOVLW 46 |
0276: MOVWF 3A |
0277: CALL 065 |
.................... if (rovinka > 250 || speed > 170) delay_ms(50); |
0278: MOVF 2F,W |
0279: SUBLW FA |
027A: BTFSS 03.0 |
027B: GOTO 280 |
027C: MOVF 2D,W |
027D: SUBLW AA |
027E: BTFSC 03.0 |
027F: GOTO 283 |
0280: MOVLW 32 |
0281: MOVWF 3A |
0282: CALL 065 |
.................... }; |
.................... rovinka=0; |
0283: CLRF 2F |
.................... }; |
.................... } |
0284: GOTO 109 |
.................... } |
0285: SLEEP |
|
Configuration Fuses: |
Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IO |
Word 2: 3FFC NOFCMEN NOIESO |