Blame | Last modification | View Log | Download
CCS PCM C Compiler, Version 3.245, 27853 03-IV-06 20:04Filename: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\main.lstROM used: 463 words (11%)Largest free fragment is 2048RAM used: 30 (17%) at main() level36 (21%) worst caseStack: 4 worst case (2 in main + 2 for interrupts)*0000: MOVLW 000001: MOVWF 0A0002: GOTO 1120003: NOP.................... #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)000C: MOVLW 3C000D: MOVWF 04000E: MOVF 00,W000F: BTFSC 03.20010: GOTO 0230011: MOVLW 020012: MOVWF 780013: MOVLW BF0014: MOVWF 770015: CLRWDT0016: DECFSZ 77,F0017: GOTO 0150018: DECFSZ 78,F0019: GOTO 013001A: MOVLW 96001B: MOVWF 77001C: DECFSZ 77,F001D: GOTO 01C001E: NOP001F: NOP0020: CLRWDT0021: DECFSZ 00,F0022: GOTO 0110023: RETLW 000024: MOVLW 080025: SUBWF 3E,F0026: BTFSS 03.00027: GOTO 0330028: MOVLW 3E0029: MOVWF 04002A: BCF 03.0002B: RRF 00,F002C: MOVF 00,W002D: BTFSC 03.2002E: GOTO 033002F: GOTO 0310030: CLRWDT0031: DECFSZ 00,F0032: GOTO 0300033: RETLW 00................................................................................ #use rtos (timer=2, minor_cycle=2ms)........................................ 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........................................ signed int16 Lmotor; // promene, ktere urcuji velikost vykonu na levem.................... signed int16 Rmotor; // a pravem motoru........................................ #define STRED 128 // sredni poloha zadniho kolecka.................... #define BEAR1 20 // 3 stupne zataceni.................... #define BEAR2 40.................... #define BEAR3 60.................... // servo.................... #define SERVO PIN_A2........................................ //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........................................ // makro pro PWM.................... #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);.................... }.................... */.................... ////////////////////////////////////////////////////////////////////////////////.................... #task (rate=16ms,max=2ms).................... void zatoc() // ridi servo ktere otaci kolem.................... {.................... unsigned int8 n;........................................ output_high(SERVO);0034: BSF 03.50035: BCF 05.20036: BCF 03.50037: BSF 05.2.................... delay_us(1100);0038: CLRWDT0039: MOVLW 01003A: MOVWF 3C003B: CALL 00C003C: MOVLW 63003D: MOVWF 3E003E: CALL 024.................... for(n=uhel; n>0; n--);003F: MOVF 24,W0040: MOVWF 3B0041: MOVF 3B,F0042: BTFSC 03.20043: GOTO 0460044: DECF 3B,F0045: GOTO 041.................... output_low(SERVO);0046: BSF 03.50047: BCF 05.20048: BCF 03.50049: BCF 05.2.................... }004A: MOVLW 34004B: MOVWF 2E004C: MOVLW 00004D: MOVWF 2F004E: BCF 0A.3004F: GOTO 1BF0050: RETLW 00............................................................ void diag() // ridi servo ktere otaci kolem.................... {.................... unsigned int8 n;........................................ output_high(SERVO);*00FA: BSF 03.500FB: BCF 05.200FC: BCF 03.500FD: BSF 05.2.................... delay_us(1100);00FE: CLRWDT00FF: MOVLW 010100: MOVWF 3C0101: CALL 00C0102: MOVLW 630103: MOVWF 3E0104: CALL 024.................... for(n=uhel; n>0; n--);0105: MOVF 24,W0106: MOVWF 390107: MOVF 39,F0108: BTFSC 03.20109: GOTO 10C010A: DECF 39,F010B: GOTO 107.................... output_low(SERVO);010C: BSF 03.5010D: BCF 05.2010E: BCF 03.5010F: BCF 05.2.................... }0110: BCF 0A.30111: GOTO 15B (RETURN)........................................ ////////////////////////////////////////////////////////////////////////////////.................... #task (rate=2ms, max=1ms).................... void rizeni().................... {.................... GO(L,F,Lmotor);GO(R,F,Rmotor);*0051: MOVF 01,W0052: BTFSS 00.70053: GOTO 0570054: BTFSS 26.70055: GOTO 05F0056: GOTO 0590057: BTFSC 26.70058: GOTO 0680059: MOVF 26,F005A: BTFSS 03.2005B: GOTO 05F005C: SUBWF 25,W005D: BTFSS 03.0005E: GOTO 068005F: BSF 03.50060: BCF 05.10061: BCF 03.50062: BCF 05.10063: BSF 03.50064: BCF 05.00065: BCF 03.50066: BSF 05.00067: GOTO 0700068: BSF 03.50069: BCF 05.0006A: BCF 03.5006B: BCF 05.0006C: BSF 03.5006D: BCF 05.1006E: BCF 03.5006F: BCF 05.10070: MOVF 01,W0071: BTFSS 00.70072: GOTO 0760073: BTFSS 28.70074: GOTO 07E0075: GOTO 0780076: BTFSC 28.70077: GOTO 0870078: MOVF 28,F0079: BTFSS 03.2007A: GOTO 07E007B: SUBWF 27,W007C: BTFSS 03.0007D: GOTO 087007E: BSF 03.5007F: BCF 05.70080: BCF 03.50081: BCF 05.70082: BSF 03.50083: BCF 05.60084: BCF 03.50085: BSF 05.60086: GOTO 08F0087: BSF 03.50088: BCF 05.60089: BCF 03.5008A: BCF 05.6008B: BSF 03.5008C: BCF 05.7008D: BCF 03.5008E: BCF 05.7........................................ delay_us(500);008F: CLRWDT0090: MOVLW 020091: MOVWF 3D0092: MOVLW F70093: MOVWF 3E0094: CALL 0240095: DECFSZ 3D,F0096: GOTO 092........................................ output_low(STROBE);0097: BSF 03.50098: BCF 06.00099: BCF 03.5009A: BCF 06.0.................... sensors = spi_read(0); // cteni senzoru na caru009B: MOVF 13,W009C: CLRF 13009D: BSF 03.5009E: BTFSC 14.0009F: GOTO 0A200A0: BCF 03.500A1: GOTO 09D00A2: BCF 03.500A3: MOVF 13,W00A4: MOVWF 21.................... output_high(STROBE);00A5: BSF 03.500A6: BCF 06.000A7: BCF 03.500A8: BSF 06.0........................................ if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu00A9: BTFSS 21.000AA: GOTO 0B3.................... {.................... uhel=STRED+BEAR3;00AB: MOVLW BC00AC: MOVWF 24.................... Lmotor=0;Rmotor=190;00AD: CLRF 2600AE: CLRF 2500AF: CLRF 2800B0: MOVLW BE00B1: MOVWF 27.................... return;00B2: GOTO 0F3.................... }........................................ if(bit_test(sensors,6)) //......|//00B3: BTFSS 21.600B4: GOTO 0BD.................... {.................... Rmotor=0;Lmotor=190;00B5: CLRF 2800B6: CLRF 2700B7: CLRF 2600B8: MOVLW BE00B9: MOVWF 25.................... uhel=STRED-BEAR3;00BA: MOVLW 4400BB: MOVWF 24.................... return;00BC: GOTO 0F3........................................ }........................................ if(bit_test(sensors,1)) //.|.....//00BD: BTFSS 21.100BE: GOTO 0C8.................... {.................... uhel=STRED+BEAR2;00BF: MOVLW A800C0: MOVWF 24.................... Lmotor=150;Rmotor=190;00C1: CLRF 2600C2: MOVLW 9600C3: MOVWF 2500C4: CLRF 2800C5: MOVLW BE00C6: MOVWF 27.................... return;00C7: GOTO 0F3.................... }........................................ if(bit_test(sensors,5)) //.....|.//00C8: BTFSS 21.500C9: GOTO 0D3.................... {.................... uhel=STRED-BEAR2;00CA: MOVLW 5800CB: MOVWF 24.................... Rmotor=150;Lmotor=190;00CC: CLRF 2800CD: MOVLW 9600CE: MOVWF 2700CF: CLRF 2600D0: MOVLW BE00D1: MOVWF 25.................... return;00D2: GOTO 0F3.................... }........................................ if (bit_test(sensors,2)) //..|....//00D3: BTFSS 21.200D4: GOTO 0DE.................... {.................... uhel=STRED+BEAR1;00D5: MOVLW 9400D6: MOVWF 24.................... Lmotor=150;Rmotor=190;00D7: CLRF 2600D8: MOVLW 9600D9: MOVWF 2500DA: CLRF 2800DB: MOVLW BE00DC: MOVWF 27.................... return;00DD: GOTO 0F3.................... }........................................ if (bit_test(sensors,4)) //....|..//00DE: BTFSS 21.400DF: GOTO 0E9.................... {.................... uhel=STRED-BEAR1;00E0: MOVLW 6C00E1: MOVWF 24.................... Rmotor=150;Lmotor=190;00E2: CLRF 2800E3: MOVLW 9600E4: MOVWF 2700E5: CLRF 2600E6: MOVLW BE00E7: MOVWF 25.................... return;00E8: GOTO 0F3.................... }........................................ if(bit_test(sensors,3)) //...|...//00E9: BTFSS 21.300EA: GOTO 0F3.................... {.................... uhel=STRED;00EB: MOVLW 8000EC: MOVWF 24.................... Lmotor=190;Rmotor=190;00ED: CLRF 2600EE: MOVLW BE00EF: MOVWF 2500F0: CLRF 2800F1: MOVWF 27.................... return;00F2: GOTO 0F3.................... }........................................ /*STOPL;STOPR;.................... if(bit_test(sensors,7)).................... {........................................ }*/.................... }00F3: MOVLW 5100F4: MOVWF 3500F5: MOVLW 0000F6: MOVWF 3600F7: BCF 0A.300F8: GOTO 1BF00F9: RETLW 00............................................................ ////////////////////////////////////////////////////////////////////////////////.................... void main().................... {*0112: CLRF 040113: MOVLW 1F0114: ANDWF 03,F0115: MOVLW 700116: BSF 03.50117: MOVWF 0F0118: BCF 1F.40119: BCF 1F.5011A: MOVF 1B,W011B: ANDLW 80011C: MOVWF 1B011D: MOVLW 07011E: MOVWF 1C.................... unsigned int16 i;........................................ setup_adc_ports(NO_ANALOGS);011F: BCF 1F.40120: BCF 1F.50121: MOVF 1B,W0122: ANDLW 800123: MOVWF 1B.................... setup_adc(ADC_CLOCK_INTERNAL);0124: BCF 1F.60125: BCF 03.50126: BSF 1F.60127: BSF 1F.70128: BSF 03.50129: BCF 1F.7012A: BCF 03.5012B: BSF 1F.0.................... setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_4);012C: BCF 14.5012D: BSF 03.5012E: BCF 06.2012F: BSF 06.10130: BCF 06.40131: MOVLW 300132: BCF 03.50133: MOVWF 140134: MOVLW 000135: BSF 03.50136: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);0137: MOVF 01,W0138: ANDLW C70139: IORLW 08013A: MOVWF 01.................... setup_timer_1(T1_DISABLED);013B: BCF 03.5013C: CLRF 10.................... setup_oscillator(OSC_8MHZ|OSC_INTRC);013D: MOVLW 72013E: BSF 03.5013F: MOVWF 0F........................................ STOPR; STOPL;0140: BCF 05.60141: BCF 03.50142: BCF 05.60143: BSF 03.50144: BCF 05.70145: BCF 03.50146: BCF 05.70147: BSF 03.50148: BCF 05.00149: BCF 03.5014A: BCF 05.0014B: BSF 03.5014C: BCF 05.1014D: BCF 03.5014E: BCF 05.1.................... uhel=STRED;014F: MOVLW 800150: MOVWF 24........................................ for(i=0;i<100;i++)0151: CLRF 380152: CLRF 370153: MOVF 38,F0154: BTFSS 03.20155: GOTO 1620156: MOVF 37,W0157: SUBLW 630158: BTFSS 03.00159: GOTO 162.................... {.................... diag();015A: GOTO 0FA.................... delay_ms(16);015B: MOVLW 10015C: MOVWF 3C015D: CALL 00C.................... }015E: INCF 37,F015F: BTFSC 03.20160: INCF 38,F0161: GOTO 153.................... // diagnostika();.................... Lmotor=0;0162: CLRF 260163: CLRF 25.................... Rmotor=0;0164: CLRF 280165: CLRF 27.................... rtos_run();0166: CLRF 290167: CLRF 2B0168: MOVLW 080169: MOVWF 2A016A: CLRF 2D016B: CLRF 2C016C: MOVLW 34016D: MOVWF 2E016E: MOVLW 00016F: MOVWF 2F0170: CLRF 300171: CLRF 320172: MOVLW 010173: MOVWF 310174: CLRF 340175: CLRF 330176: MOVLW 510177: MOVWF 350178: MOVLW 000179: MOVWF 36017A: CLRF 20017B: MOVLW 00017C: MOVWF 78017D: IORLW 06017E: MOVWF 12017F: MOVLW FA0180: BSF 03.50181: MOVWF 120182: BCF 03.50183: BCF 0C.10184: MOVLW 000185: MOVWF 780186: IORLW 060187: MOVWF 120188: MOVLW FA0189: BSF 03.5018A: MOVWF 12018B: BCF 03.5018C: BCF 0C.1018D: BCF 03.0018E: RLF 20,W018F: MOVWF 770190: CALL 0040191: MOVWF 790192: MOVLW 010193: ADDWF 77,W0194: CALL 0040195: MOVWF 7A0196: MOVF 79,W0197: MOVWF 040198: MOVF 00,W0199: MOVWF 79019A: INCF 04,F019B: MOVF 00,W019C: MOVWF 77019D: INCF 04,F019E: MOVF 00,W019F: MOVWF 7801A0: INCF 04,F01A1: INCF 00,F01A2: MOVF 00,W01A3: MOVWF 7A01A4: BTFSS 03.201A5: GOTO 1A901A6: INCF 04,F01A7: INCF 00,F01A8: DECF 04,F01A9: INCF 04,F01AA: MOVF 00,W01AB: SUBWF 78,W01AC: BTFSS 03.201AD: GOTO 1C101AE: MOVF 77,W01AF: SUBWF 7A,W01B0: BTFSS 03.201B1: GOTO 1C101B2: DECF 04,F01B3: CLRF 0001B4: INCF 04,F01B5: CLRF 0001B6: INCF 04,F01B7: BTFSC 79.701B8: GOTO 1C101B9: INCF 04,F01BA: MOVF 00,W01BB: MOVWF 0A01BC: DECF 04,F01BD: MOVF 00,W01BE: MOVWF 0201BF: BCF 03.501C0: BCF 03.601C1: INCF 20,F01C2: MOVLW 0201C3: SUBWF 20,W01C4: BTFSS 03.201C5: GOTO 18D01C6: CLRF 2001C7: BTFSS 0C.101C8: GOTO 1CB01C9: BSF 03.501CA: GOTO 18B01CB: GOTO 1C701CC: MOVLW FF01CD: MOVWF 20........................................ }01CE: SLEEPConfiguration Fuses:Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IOWord 2: 3FFC NOFCMEN NOIESO