/roboti/istrobot/3Orbis/vystava/cidla/cidla.BAK |
---|
0,0 → 1,169 |
#include ".\cidla.h" |
//#include <stdlib.h> |
#use rs232(baud=9600,parity=N,xmit=PIN_B3,bits=8,restart_wdt) |
#define IRRX PIN_B0 |
#define TRESHOLD_MAX 70 // rozhodovaci uroven pro cidla cerna/bila |
#define TRESHOLD_MIN 50 |
#define CIHLA 10 // doba, po kterou musi byt detekovana cihla |
#define SW2 PIN_A7 |
unsigned int8 last_radius; // rozsah |
unsigned int8 last_cidla; // co cidla videla minule |
unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla |
//tuning |
/*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM |
//Vystup PWM je na PIN_B3 |
//////////////////////////////////////////////////////////////////////////////// |
void pulzovani() // postupne rozsvecuje a zhasina podsvetleni |
{ |
unsigned int8 i,n; |
for(n=0;n<=3;n++) |
{ |
for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani |
for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani |
} |
} |
*/ |
//////////////////////////////////////////////////////////////////////////////// |
void main() |
{ |
int8 cidla; |
unsigned int8 a; |
unsigned int8 n; |
unsigned short int negace; |
setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD); |
setup_adc(ADC_CLOCK_INTERNAL); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED); |
setup_timer_2(T2_DISABLED,0,1); |
setup_comparator(NC_NC_NC_NC); |
setup_vref(FALSE); |
Delay_ms(500); |
setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED); |
// diagnostika |
printf("\n\r"); |
Delay_ms(100); |
printf("***\n\r"); |
Delay_ms(100); |
for (n=0; n<=6; n++) |
{ |
set_adc_channel(n); |
Delay_ms(100); |
a=read_adc(); |
printf("sensor %u - %u\n\r",n,a); |
} |
shure=0; |
if(input(SW2)) negace = true; |
else negace = false; |
while(true) |
{ |
set_adc_channel(0); |
cidla=0; |
Delay_us(10); |
a=read_adc(); |
set_adc_channel(1); |
if(a<TRESHOLD_MAX) //hystereze cidel |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00000001); |
} |
else cidla |= 0b00000001; |
} |
a=read_adc(); |
set_adc_channel(2); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00000010); |
} |
else cidla |= 0b00000010; |
} |
a=read_adc(); |
set_adc_channel(3); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00000100); |
} |
else cidla |= 0b00000100; |
} |
a=read_adc(); |
set_adc_channel(4); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00001000); |
} |
else cidla |= 0b00001000; |
} |
a=read_adc(); |
set_adc_channel(5); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00010000); |
} |
else cidla |= 0b00010000; |
} |
a=read_adc(); |
set_adc_channel(6); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00100000); |
} |
else cidla |= 0b00100000; |
} |
a=read_adc(); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |=(last_cidla & 0b01000000); |
} |
else cidla |= 0b01000000; |
} |
last_cidla=cidla; |
if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;}; |
if (shure>CIHLA) cidla|=0b10000000; |
if (negace == true) cidla=~cidla; |
else |
{ |
if(!bit_test(cidla,7)) bit_set(cidla,7); |
else bit_clear(cidla,7); |
} |
spi_write(cidla); |
} |
} |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.HEX |
---|
0,0 → 1,72 |
:1000000000308A00B12800000A108A100A11820705 |
:100010000A340D3400340A108A100A1182072A3477 |
:100020002A342A340A340D3400340A108A100A1192 |
:100030008207733465346E3473346F347234203411 |
:100040002534753420342D342034253475340A3465 |
:100050000D34003428308400000803194028013092 |
:10006000F800BF30F7006400F70B3328F80B312895 |
:100070004A30F700F70B3A2800006400800B2F2865 |
:10008000003483168611831286110830F8000000B0 |
:1000900000000000F8175B28F813AA0C0318861557 |
:1000A000031C861178175B287813F80B4D28000085 |
:1000B0000000000086151C308400840B5D280000C1 |
:1000C00000006400F81B4C28781B542800342B08CF |
:1000D000F8012A0203186F282A08F7007B28F70185 |
:1000E0000830AC00AA0DF70D2B0877020318F700B3 |
:1000F000F80DAC0B7228003478082808AA00643088 |
:10010000AB0067207708A80078083030031D8F28DF |
:10011000A91C9628A9199628291A20309228A911D5 |
:1001200029122914F8077808AA0041202808AA00F3 |
:100130000A30AB0067207708A80078083030031D2C |
:10014000A728A919AB28291CAB28291A2030F807A1 |
:100150007808AA0041203030A8072808AA004120CA |
:10016000003484011F308305603083168F008611B0 |
:100170008312861583161F129F121B0880399B005D |
:1001800007309C001F129F121B0880397F389B008C |
:100190001F1383121F179F1783169F1383121F1499 |
:1001A00083160108C7390838810083129001003096 |
:1001B000F800920000308316920007309C0005087A |
:1001C00064000230F700F70BE328000000001C0871 |
:1001D00083120D1383169D0102308312A700FA309B |
:1001E000A8002A20A70BEF28941283160611861464 |
:1001F0000616353083129400403083169400831223 |
:10020000A70127080420003803190A29A70AAA0011 |
:10021000412001296430A8002A20A70127080B20CB |
:10022000003803191729A70AAA0041200E296430B3 |
:10023000A8002A20A5012508063C031C5729250DE6 |
:10024000F700F70DF70DF830F7051F08C7397704E9 |
:100250009F006430A8002A201F151F192D291E0891 |
:10026000A400A70127081520A70AF700AA0041202B |
:1002700007302702031D32292508A8001B30A900DA |
:100280007C202030AA0041202D30AA0041202030BF |
:10029000AA0041202408A8001B30A9007C200A30B5 |
:1002A000AA0041200D30AA004120A50A1B29A20165 |
:1002B0000030F8001F08C73978049F00A3016400CC |
:1002C0000230F700F70B6229000000001F151F190C |
:1002D00067291E08A4000830F8001F08C7397804F1 |
:1002E0009F002408453C031C7E292408323C031847 |
:1002F0007D2921080139A3047E2923141F151F1904 |
:100300007F291E08A4001030F8001F08C7397804A0 |
:100310009F002408453C031C96292408323C0318FE |
:10032000952921080239A3049629A3141F151F1922 |
:1003300097291E08A4001830F8001F08C739780450 |
:100340009F002408453C031CAE292408323C0318B6 |
:10035000AD2921080439A304AE2923151F151F193F |
:10036000AF291E08A4002030F8001F08C739780400 |
:100370009F002408453C031CC6292408323C03186E |
:10038000C52921080839A304C629A3151F151F195B |
:10039000C7291E08A4002830F8001F08C7397804B0 |
:1003A0009F002408453C031CDE292408323C031826 |
:1003B000DD2921081039A304DE2923161F151F1972 |
:1003C000DF291E08A4003030F8001F08C739780460 |
:1003D0009F002408453C031CF6292408323C0318DE |
:1003E000F52921082039A304F629A3161F151F1982 |
:1003F000F7291E08A4002408453C031C082A2408E9 |
:10040000323C0318072A21084039A304082A23177D |
:100410002308A1008316061483120618142A220F3B |
:10042000122A132AA20A152AA20122080A3C031C36 |
:10043000A317A3092308930083161418212A8312F3 |
:080440001C2A831258296300F5 |
:04400E00383FFC3FFC |
:00000001FF |
;PIC16F88 |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.LST |
---|
0,0 → 1,634 |
CCS PCM C Compiler, Version 3.245, 27853 13-V-06 00:33 |
Filename: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.lst |
ROM used: 548 words (13%) |
Largest free fragment is 2048 |
RAM used: 13 (7%) at main() level |
18 (10%) worst case |
Stack: 2 locations |
* |
0000: MOVLW 00 |
0001: MOVWF 0A |
0002: GOTO 0B1 |
0003: NOP |
.................... #include ".\cidla.h" |
.................... #include <16F88.h> |
.................... //////// Standard Header file for the PIC16F88 device //////////////// |
.................... #device PIC16F88 |
.................... #list |
.................... |
.................... #device adc=8 |
.................... #fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO |
.................... #use delay(clock=4000000,RESTART_WDT) |
* |
002A: MOVLW 28 |
002B: MOVWF 04 |
002C: MOVF 00,W |
002D: BTFSC 03.2 |
002E: GOTO 040 |
002F: MOVLW 01 |
0030: MOVWF 78 |
0031: MOVLW BF |
0032: MOVWF 77 |
0033: CLRWDT |
0034: DECFSZ 77,F |
0035: GOTO 033 |
0036: DECFSZ 78,F |
0037: GOTO 031 |
0038: MOVLW 4A |
0039: MOVWF 77 |
003A: DECFSZ 77,F |
003B: GOTO 03A |
003C: NOP |
003D: CLRWDT |
003E: DECFSZ 00,F |
003F: GOTO 02F |
0040: RETLW 00 |
.................... |
.................... |
.................... //#include <stdlib.h> |
.................... |
.................... #use rs232(baud=9600,parity=N,xmit=PIN_B3,bits=8,restart_wdt) |
0041: BSF 03.5 |
0042: BCF 06.3 |
0043: BCF 03.5 |
0044: BCF 06.3 |
0045: MOVLW 08 |
0046: MOVWF 78 |
0047: NOP |
0048: NOP |
0049: NOP |
004A: BSF 78.7 |
004B: GOTO 05B |
004C: BCF 78.7 |
004D: RRF 2A,F |
004E: BTFSC 03.0 |
004F: BSF 06.3 |
0050: BTFSS 03.0 |
0051: BCF 06.3 |
0052: BSF 78.6 |
0053: GOTO 05B |
0054: BCF 78.6 |
0055: DECFSZ 78,F |
0056: GOTO 04D |
0057: NOP |
0058: NOP |
0059: NOP |
005A: BSF 06.3 |
005B: MOVLW 1C |
005C: MOVWF 04 |
005D: DECFSZ 04,F |
005E: GOTO 05D |
005F: NOP |
0060: NOP |
0061: CLRWDT |
0062: BTFSC 78.7 |
0063: GOTO 04C |
0064: BTFSC 78.6 |
0065: GOTO 054 |
0066: RETLW 00 |
.................... |
.................... #define IRRX PIN_B0 |
.................... |
.................... #define TRESHOLD_MAX 70 // rozhodovaci uroven pro cidla cerna/bila |
.................... #define TRESHOLD_MIN 50 |
.................... #define CIHLA 10 // doba, po kterou musi byt detekovana cihla |
.................... #define SW2 PIN_A7 |
.................... |
.................... |
.................... unsigned int8 last_radius; // rozsah |
.................... unsigned int8 last_cidla; // co cidla videla minule |
.................... unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla |
.................... |
.................... //tuning |
.................... /*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM |
.................... |
.................... //Vystup PWM je na PIN_B3 |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... void pulzovani() // postupne rozsvecuje a zhasina podsvetleni |
.................... { |
.................... unsigned int8 i,n; |
.................... for(n=0;n<=3;n++) |
.................... { |
.................... for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani |
.................... for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani |
.................... } |
.................... } |
.................... */ |
.................... //////////////////////////////////////////////////////////////////////////////// |
.................... void main() |
.................... { |
* |
00B1: CLRF 04 |
00B2: MOVLW 1F |
00B3: ANDWF 03,F |
00B4: MOVLW 60 |
00B5: BSF 03.5 |
00B6: MOVWF 0F |
00B7: BCF 06.3 |
00B8: BCF 03.5 |
00B9: BSF 06.3 |
00BA: BSF 03.5 |
00BB: BCF 1F.4 |
00BC: BCF 1F.5 |
00BD: MOVF 1B,W |
00BE: ANDLW 80 |
00BF: MOVWF 1B |
00C0: MOVLW 07 |
00C1: MOVWF 1C |
.................... int8 cidla; |
.................... unsigned int8 a; |
.................... unsigned int8 n; |
.................... unsigned short int negace; |
.................... |
.................... setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD); |
00C2: BCF 1F.4 |
00C3: BCF 1F.5 |
00C4: MOVF 1B,W |
00C5: ANDLW 80 |
00C6: IORLW 7F |
00C7: MOVWF 1B |
.................... setup_adc(ADC_CLOCK_INTERNAL); |
00C8: BCF 1F.6 |
00C9: BCF 03.5 |
00CA: BSF 1F.6 |
00CB: BSF 1F.7 |
00CC: BSF 03.5 |
00CD: BCF 1F.7 |
00CE: BCF 03.5 |
00CF: BSF 1F.0 |
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
00D0: BSF 03.5 |
00D1: MOVF 01,W |
00D2: ANDLW C7 |
00D3: IORLW 08 |
00D4: MOVWF 01 |
.................... setup_timer_1(T1_DISABLED); |
00D5: BCF 03.5 |
00D6: CLRF 10 |
.................... setup_timer_2(T2_DISABLED,0,1); |
00D7: MOVLW 00 |
00D8: MOVWF 78 |
00D9: MOVWF 12 |
00DA: MOVLW 00 |
00DB: BSF 03.5 |
00DC: MOVWF 12 |
.................... setup_comparator(NC_NC_NC_NC); |
00DD: MOVLW 07 |
00DE: MOVWF 1C |
00DF: MOVF 05,W |
00E0: CLRWDT |
00E1: MOVLW 02 |
00E2: MOVWF 77 |
00E3: DECFSZ 77,F |
00E4: GOTO 0E3 |
00E5: NOP |
00E6: NOP |
00E7: MOVF 1C,W |
00E8: BCF 03.5 |
00E9: BCF 0D.6 |
.................... setup_vref(FALSE); |
00EA: BSF 03.5 |
00EB: CLRF 1D |
.................... |
.................... Delay_ms(500); |
00EC: MOVLW 02 |
00ED: BCF 03.5 |
00EE: MOVWF 27 |
00EF: MOVLW FA |
00F0: MOVWF 28 |
00F1: CALL 02A |
00F2: DECFSZ 27,F |
00F3: GOTO 0EF |
.................... setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED); |
00F4: BCF 14.5 |
00F5: BSF 03.5 |
00F6: BCF 06.2 |
00F7: BSF 06.1 |
00F8: BSF 06.4 |
00F9: MOVLW 35 |
00FA: BCF 03.5 |
00FB: MOVWF 14 |
00FC: MOVLW 40 |
00FD: BSF 03.5 |
00FE: MOVWF 14 |
.................... |
.................... // diagnostika |
.................... printf("\n\r"); |
00FF: BCF 03.5 |
0100: CLRF 27 |
0101: MOVF 27,W |
0102: CALL 004 |
0103: IORLW 00 |
0104: BTFSC 03.2 |
0105: GOTO 10A |
0106: INCF 27,F |
0107: MOVWF 2A |
0108: CALL 041 |
0109: GOTO 101 |
.................... Delay_ms(100); |
010A: MOVLW 64 |
010B: MOVWF 28 |
010C: CALL 02A |
.................... printf("***\n\r"); |
010D: CLRF 27 |
010E: MOVF 27,W |
010F: CALL 00B |
0110: IORLW 00 |
0111: BTFSC 03.2 |
0112: GOTO 117 |
0113: INCF 27,F |
0114: MOVWF 2A |
0115: CALL 041 |
0116: GOTO 10E |
.................... Delay_ms(100); |
0117: MOVLW 64 |
0118: MOVWF 28 |
0119: CALL 02A |
.................... |
.................... for (n=0; n<=6; n++) |
011A: CLRF 25 |
011B: MOVF 25,W |
011C: SUBLW 06 |
011D: BTFSS 03.0 |
011E: GOTO 157 |
.................... { |
.................... set_adc_channel(n); |
011F: RLF 25,W |
0120: MOVWF 77 |
0121: RLF 77,F |
0122: RLF 77,F |
0123: MOVLW F8 |
0124: ANDWF 77,F |
0125: MOVF 1F,W |
0126: ANDLW C7 |
0127: IORWF 77,W |
0128: MOVWF 1F |
.................... Delay_ms(100); |
0129: MOVLW 64 |
012A: MOVWF 28 |
012B: CALL 02A |
.................... a=read_adc(); |
012C: BSF 1F.2 |
012D: BTFSC 1F.2 |
012E: GOTO 12D |
012F: MOVF 1E,W |
0130: MOVWF 24 |
.................... printf("sensor %u - %u\n\r",n,a); |
0131: CLRF 27 |
0132: MOVF 27,W |
0133: CALL 015 |
0134: INCF 27,F |
0135: MOVWF 77 |
0136: MOVWF 2A |
0137: CALL 041 |
0138: MOVLW 07 |
0139: SUBWF 27,W |
013A: BTFSS 03.2 |
013B: GOTO 132 |
013C: MOVF 25,W |
013D: MOVWF 28 |
013E: MOVLW 1B |
013F: MOVWF 29 |
0140: CALL 07C |
0141: MOVLW 20 |
0142: MOVWF 2A |
0143: CALL 041 |
0144: MOVLW 2D |
0145: MOVWF 2A |
0146: CALL 041 |
0147: MOVLW 20 |
0148: MOVWF 2A |
0149: CALL 041 |
014A: MOVF 24,W |
014B: MOVWF 28 |
014C: MOVLW 1B |
014D: MOVWF 29 |
014E: CALL 07C |
014F: MOVLW 0A |
0150: MOVWF 2A |
0151: CALL 041 |
0152: MOVLW 0D |
0153: MOVWF 2A |
0154: CALL 041 |
.................... } |
0155: INCF 25,F |
0156: GOTO 11B |
.................... |
.................... shure=0; |
0157: CLRF 22 |
.................... // if(input(SW2)) negace = true; |
.................... // else negace = false; |
.................... while(true) |
.................... { |
.................... set_adc_channel(0); |
0158: MOVLW 00 |
0159: MOVWF 78 |
015A: MOVF 1F,W |
015B: ANDLW C7 |
015C: IORWF 78,W |
015D: MOVWF 1F |
.................... cidla=0; |
015E: CLRF 23 |
.................... Delay_us(10); |
015F: CLRWDT |
0160: MOVLW 02 |
0161: MOVWF 77 |
0162: DECFSZ 77,F |
0163: GOTO 162 |
0164: NOP |
0165: NOP |
.................... a=read_adc(); |
0166: BSF 1F.2 |
0167: BTFSC 1F.2 |
0168: GOTO 167 |
0169: MOVF 1E,W |
016A: MOVWF 24 |
.................... |
.................... set_adc_channel(1); |
016B: MOVLW 08 |
016C: MOVWF 78 |
016D: MOVF 1F,W |
016E: ANDLW C7 |
016F: IORWF 78,W |
0170: MOVWF 1F |
.................... if(a<TRESHOLD_MAX) //hystereze cidel |
0171: MOVF 24,W |
0172: SUBLW 45 |
0173: BTFSS 03.0 |
0174: GOTO 17E |
.................... { |
.................... if(a>TRESHOLD_MIN) |
0175: MOVF 24,W |
0176: SUBLW 32 |
0177: BTFSC 03.0 |
0178: GOTO 17D |
.................... { |
.................... cidla |= (last_cidla & 0b00000001); |
0179: MOVF 21,W |
017A: ANDLW 01 |
017B: IORWF 23,F |
.................... } |
.................... else cidla |= 0b00000001; |
017C: GOTO 17E |
017D: BSF 23.0 |
.................... } |
.................... |
.................... a=read_adc(); |
017E: BSF 1F.2 |
017F: BTFSC 1F.2 |
0180: GOTO 17F |
0181: MOVF 1E,W |
0182: MOVWF 24 |
.................... |
.................... set_adc_channel(2); |
0183: MOVLW 10 |
0184: MOVWF 78 |
0185: MOVF 1F,W |
0186: ANDLW C7 |
0187: IORWF 78,W |
0188: MOVWF 1F |
.................... if(a<TRESHOLD_MAX) |
0189: MOVF 24,W |
018A: SUBLW 45 |
018B: BTFSS 03.0 |
018C: GOTO 196 |
.................... { |
.................... if(a>TRESHOLD_MIN) |
018D: MOVF 24,W |
018E: SUBLW 32 |
018F: BTFSC 03.0 |
0190: GOTO 195 |
.................... { |
.................... cidla |= (last_cidla & 0b00000010); |
0191: MOVF 21,W |
0192: ANDLW 02 |
0193: IORWF 23,F |
.................... } |
.................... else cidla |= 0b00000010; |
0194: GOTO 196 |
0195: BSF 23.1 |
.................... } |
.................... |
.................... a=read_adc(); |
0196: BSF 1F.2 |
0197: BTFSC 1F.2 |
0198: GOTO 197 |
0199: MOVF 1E,W |
019A: MOVWF 24 |
.................... |
.................... set_adc_channel(3); |
019B: MOVLW 18 |
019C: MOVWF 78 |
019D: MOVF 1F,W |
019E: ANDLW C7 |
019F: IORWF 78,W |
01A0: MOVWF 1F |
.................... if(a<TRESHOLD_MAX) |
01A1: MOVF 24,W |
01A2: SUBLW 45 |
01A3: BTFSS 03.0 |
01A4: GOTO 1AE |
.................... { |
.................... if(a>TRESHOLD_MIN) |
01A5: MOVF 24,W |
01A6: SUBLW 32 |
01A7: BTFSC 03.0 |
01A8: GOTO 1AD |
.................... { |
.................... cidla |= (last_cidla & 0b00000100); |
01A9: MOVF 21,W |
01AA: ANDLW 04 |
01AB: IORWF 23,F |
.................... } |
.................... else cidla |= 0b00000100; |
01AC: GOTO 1AE |
01AD: BSF 23.2 |
.................... } |
.................... |
.................... a=read_adc(); |
01AE: BSF 1F.2 |
01AF: BTFSC 1F.2 |
01B0: GOTO 1AF |
01B1: MOVF 1E,W |
01B2: MOVWF 24 |
.................... |
.................... set_adc_channel(4); |
01B3: MOVLW 20 |
01B4: MOVWF 78 |
01B5: MOVF 1F,W |
01B6: ANDLW C7 |
01B7: IORWF 78,W |
01B8: MOVWF 1F |
.................... if(a<TRESHOLD_MAX) |
01B9: MOVF 24,W |
01BA: SUBLW 45 |
01BB: BTFSS 03.0 |
01BC: GOTO 1C6 |
.................... { |
.................... if(a>TRESHOLD_MIN) |
01BD: MOVF 24,W |
01BE: SUBLW 32 |
01BF: BTFSC 03.0 |
01C0: GOTO 1C5 |
.................... { |
.................... cidla |= (last_cidla & 0b00001000); |
01C1: MOVF 21,W |
01C2: ANDLW 08 |
01C3: IORWF 23,F |
.................... } |
.................... else cidla |= 0b00001000; |
01C4: GOTO 1C6 |
01C5: BSF 23.3 |
.................... } |
.................... a=read_adc(); |
01C6: BSF 1F.2 |
01C7: BTFSC 1F.2 |
01C8: GOTO 1C7 |
01C9: MOVF 1E,W |
01CA: MOVWF 24 |
.................... |
.................... set_adc_channel(5); |
01CB: MOVLW 28 |
01CC: MOVWF 78 |
01CD: MOVF 1F,W |
01CE: ANDLW C7 |
01CF: IORWF 78,W |
01D0: MOVWF 1F |
.................... |
.................... if(a<TRESHOLD_MAX) |
01D1: MOVF 24,W |
01D2: SUBLW 45 |
01D3: BTFSS 03.0 |
01D4: GOTO 1DE |
.................... { |
.................... if(a>TRESHOLD_MIN) |
01D5: MOVF 24,W |
01D6: SUBLW 32 |
01D7: BTFSC 03.0 |
01D8: GOTO 1DD |
.................... { |
.................... cidla |= (last_cidla & 0b00010000); |
01D9: MOVF 21,W |
01DA: ANDLW 10 |
01DB: IORWF 23,F |
.................... } |
.................... else cidla |= 0b00010000; |
01DC: GOTO 1DE |
01DD: BSF 23.4 |
.................... } |
.................... a=read_adc(); |
01DE: BSF 1F.2 |
01DF: BTFSC 1F.2 |
01E0: GOTO 1DF |
01E1: MOVF 1E,W |
01E2: MOVWF 24 |
.................... |
.................... set_adc_channel(6); |
01E3: MOVLW 30 |
01E4: MOVWF 78 |
01E5: MOVF 1F,W |
01E6: ANDLW C7 |
01E7: IORWF 78,W |
01E8: MOVWF 1F |
.................... if(a<TRESHOLD_MAX) |
01E9: MOVF 24,W |
01EA: SUBLW 45 |
01EB: BTFSS 03.0 |
01EC: GOTO 1F6 |
.................... { |
.................... if(a>TRESHOLD_MIN) |
01ED: MOVF 24,W |
01EE: SUBLW 32 |
01EF: BTFSC 03.0 |
01F0: GOTO 1F5 |
.................... { |
.................... cidla |= (last_cidla & 0b00100000); |
01F1: MOVF 21,W |
01F2: ANDLW 20 |
01F3: IORWF 23,F |
.................... } |
.................... else cidla |= 0b00100000; |
01F4: GOTO 1F6 |
01F5: BSF 23.5 |
.................... } |
.................... a=read_adc(); |
01F6: BSF 1F.2 |
01F7: BTFSC 1F.2 |
01F8: GOTO 1F7 |
01F9: MOVF 1E,W |
01FA: MOVWF 24 |
.................... |
.................... if(a<TRESHOLD_MAX) |
01FB: MOVF 24,W |
01FC: SUBLW 45 |
01FD: BTFSS 03.0 |
01FE: GOTO 208 |
.................... { |
.................... if(a>TRESHOLD_MIN) |
01FF: MOVF 24,W |
0200: SUBLW 32 |
0201: BTFSC 03.0 |
0202: GOTO 207 |
.................... { |
.................... cidla |=(last_cidla & 0b01000000); |
0203: MOVF 21,W |
0204: ANDLW 40 |
0205: IORWF 23,F |
.................... } |
.................... else cidla |= 0b01000000; |
0206: GOTO 208 |
0207: BSF 23.6 |
.................... } |
.................... |
.................... last_cidla=cidla; |
0208: MOVF 23,W |
0209: MOVWF 21 |
.................... |
.................... if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;}; |
020A: BSF 03.5 |
020B: BSF 06.0 |
020C: BCF 03.5 |
020D: BTFSC 06.0 |
020E: GOTO 214 |
020F: INCFSZ 22,W |
0210: GOTO 212 |
0211: GOTO 213 |
0212: INCF 22,F |
0213: GOTO 215 |
0214: CLRF 22 |
.................... if (shure>CIHLA) cidla|=0b10000000; |
0215: MOVF 22,W |
0216: SUBLW 0A |
0217: BTFSS 03.0 |
0218: BSF 23.7 |
.................... |
.................... /* if (negace == true) cidla=~cidla; |
.................... else |
.................... { |
.................... if(!bit_test(cidla,7)) bit_set(cidla,7); |
.................... else bit_clear(cidla,7); |
.................... }*/ |
.................... |
.................... cidla=~cidla; |
0219: COMF 23,F |
.................... |
.................... spi_write(cidla); |
021A: MOVF 23,W |
021B: MOVWF 13 |
021C: BSF 03.5 |
021D: BTFSC 14.0 |
021E: GOTO 221 |
021F: BCF 03.5 |
0220: GOTO 21C |
.................... } |
0221: BCF 03.5 |
0222: GOTO 158 |
.................... } |
0223: SLEEP |
Configuration Fuses: |
Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IO |
Word 2: 3FFC NOFCMEN NOIESO |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.PJT |
---|
0,0 → 1,44 |
[PROJECT] |
Target=cidla.HEX |
Development_Mode= |
Processor=0x688F |
ToolSuite=CCS |
[Directories] |
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\dr |
Library= |
LinkerScript= |
[Target Data] |
FileList=D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.c |
BuildTool=C-COMPILER |
OptionString=+FM |
AdditionalOptionString= |
BuildRequired=1 |
[cidla.c] |
Type=4 |
Path= |
FileList= |
BuildTool= |
OptionString= |
AdditionalOptionString= |
[mru-list] |
1=cidla.c |
[Windows] |
0=0000 cidla.c 0 0 796 451 3 0 |
[Opened Files] |
1=D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.c |
2=D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.h |
3=C:\Program Files\PICC\devices\16F88.h |
4= |
5=C:\Program Files\PICC\drivers\string.h |
6=C:\Program Files\PICC\drivers\ctype.h |
7=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.h |
8= |
[Units] |
Count=1 |
1=D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.c (main) |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.SYM |
---|
0,0 → 1,60 |
015 CCP_1_LOW |
015-016 CCP_1 |
016 CCP_1_HIGH |
020 last_radius |
021 last_cidla |
022 shure |
023 main.cidla |
024 main.a |
025 main.n |
026.0 main.negace |
027 main.@SCRATCH |
028 @delay_ms1.P1 |
028 @PRINTF_U_9600_51_41.P2 |
029 @PRINTF_U_9600_51_41.P1 |
02A @DIV88.P1 |
02A @PUTCHAR_1_.P2 |
02B @DIV88.P1 |
02C @DIV88.@SCRATCH |
077 @SCRATCH |
078 @SCRATCH |
078 _RETURN_ |
079 @SCRATCH |
07A @SCRATCH |
07B @SCRATCH |
09C.6 C1OUT |
09C.7 C2OUT |
002A @delay_ms1 |
0041 @PUTCHAR_1_ |
00B1 main |
0004 @const10062 |
000B @const10067 |
0015 @const10080 |
0067 @DIV88 |
007C @PRINTF_U_9600_51_41 |
00B1 @cinit |
Project Files: |
D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.c |
D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.h |
C:\Program Files\PICC\devices\16F88.h |
Units: |
D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.c (main) |
Compiler Settings: |
Processor: PIC16F88 |
Pointer Size: 8 |
ADC Range: 0-255 |
Opt Level: 9 |
Short,Int,Long: 1,8,16 |
Output Files: |
Errors: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.err |
INHX8: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.hex |
Symbols: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.sym |
List: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.lst |
Debug/COFF: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.cof |
Call Tree: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.tre |
Statistics: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.sta |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.c |
---|
0,0 → 1,171 |
#include ".\cidla.h" |
//#include <stdlib.h> |
#use rs232(baud=9600,parity=N,xmit=PIN_B3,bits=8,restart_wdt) |
#define IRRX PIN_B0 |
#define TRESHOLD_MAX 70 // rozhodovaci uroven pro cidla cerna/bila |
#define TRESHOLD_MIN 50 |
#define CIHLA 10 // doba, po kterou musi byt detekovana cihla |
#define SW2 PIN_A7 |
unsigned int8 last_radius; // rozsah |
unsigned int8 last_cidla; // co cidla videla minule |
unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla |
//tuning |
/*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM |
//Vystup PWM je na PIN_B3 |
//////////////////////////////////////////////////////////////////////////////// |
void pulzovani() // postupne rozsvecuje a zhasina podsvetleni |
{ |
unsigned int8 i,n; |
for(n=0;n<=3;n++) |
{ |
for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani |
for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani |
} |
} |
*/ |
//////////////////////////////////////////////////////////////////////////////// |
void main() |
{ |
int8 cidla; |
unsigned int8 a; |
unsigned int8 n; |
unsigned short int negace; |
setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD); |
setup_adc(ADC_CLOCK_INTERNAL); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED); |
setup_timer_2(T2_DISABLED,0,1); |
setup_comparator(NC_NC_NC_NC); |
setup_vref(FALSE); |
Delay_ms(500); |
setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED); |
// diagnostika |
printf("\n\r"); |
Delay_ms(100); |
printf("***\n\r"); |
Delay_ms(100); |
for (n=0; n<=6; n++) |
{ |
set_adc_channel(n); |
Delay_ms(100); |
a=read_adc(); |
printf("sensor %u - %u\n\r",n,a); |
} |
shure=0; |
// if(input(SW2)) negace = true; |
// else negace = false; |
while(true) |
{ |
set_adc_channel(0); |
cidla=0; |
Delay_us(10); |
a=read_adc(); |
set_adc_channel(1); |
if(a<TRESHOLD_MAX) //hystereze cidel |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00000001); |
} |
else cidla |= 0b00000001; |
} |
a=read_adc(); |
set_adc_channel(2); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00000010); |
} |
else cidla |= 0b00000010; |
} |
a=read_adc(); |
set_adc_channel(3); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00000100); |
} |
else cidla |= 0b00000100; |
} |
a=read_adc(); |
set_adc_channel(4); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00001000); |
} |
else cidla |= 0b00001000; |
} |
a=read_adc(); |
set_adc_channel(5); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00010000); |
} |
else cidla |= 0b00010000; |
} |
a=read_adc(); |
set_adc_channel(6); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |= (last_cidla & 0b00100000); |
} |
else cidla |= 0b00100000; |
} |
a=read_adc(); |
if(a<TRESHOLD_MAX) |
{ |
if(a>TRESHOLD_MIN) |
{ |
cidla |=(last_cidla & 0b01000000); |
} |
else cidla |= 0b01000000; |
} |
last_cidla=cidla; |
if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;}; |
if (shure>CIHLA) cidla|=0b10000000; |
/* if (negace == true) cidla=~cidla; |
else |
{ |
if(!bit_test(cidla,7)) bit_set(cidla,7); |
else bit_clear(cidla,7); |
}*/ |
cidla=~cidla; |
spi_write(cidla); |
} |
} |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.cof |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.err |
---|
0,0 → 1,2 |
No Errors |
0 Errors, 0 Warnings. |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.h |
---|
0,0 → 1,5 |
#include <16F88.h> |
#device adc=8 |
#fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO |
#use delay(clock=4000000,RESTART_WDT) |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.sta |
---|
0,0 → 1,35 |
ROM used: 548 (13%) |
548 (13%) including unused fragments |
1 Average locations per line |
6 Average locations per statement |
RAM used: 13 (7%) at main() level |
18 (10%) worst case |
Lines Stmts % Files |
----- ----- --- ----- |
172 92 100 D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.c |
6 0 0 D:\KAKLIK\roboti\istrobot\3Orbis\vystava\cidla\cidla.h |
279 0 0 C:\Program Files\PICC\devices\16F88.h |
----- ----- |
914 184 Total |
Page ROM % RAM Functions: |
---- --- --- --- ---------- |
0 23 4 1 @delay_ms1 |
0 38 7 1 @PUTCHAR_1_ |
0 371 68 5 main |
0 7 1 0 @const10062 |
0 10 2 0 @const10067 |
0 21 4 0 @const10080 |
0 21 4 3 @DIV88 |
0 53 10 2 @PRINTF_U_9600_51_41 |
Segment Used Free |
--------- ---- ---- |
00000-00003 4 0 |
00004-007FF 544 1500 |
00800-00FFF 0 2048 |
/roboti/istrobot/3Orbis/vystava/cidla/cidla.tre |
---|
0,0 → 1,30 |
ÀÄcidla |
ÀÄmain 0/371 Ram=5 |
ÃÄ??0?? |
ÃÄ@delay_ms1 0/23 Ram=1 |
ÃÄ@const10062 0/7 Ram=0 |
ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÃÄ@delay_ms1 0/23 Ram=1 |
ÃÄ@const10067 0/10 Ram=0 |
ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÃÄ@delay_ms1 0/23 Ram=1 |
ÃÄ@delay_ms1 0/23 Ram=1 |
ÃÄ@const10080 0/21 Ram=0 |
ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÃÄ@PRINTF_U_9600_51_41 0/53 Ram=2 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÃÄ@PRINTF_U_9600_51_41 0/53 Ram=2 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/38 Ram=1 |
ÀÄ@PUTCHAR_1_ 0/38 Ram=1 |
/roboti/istrobot/3Orbis/vystava/cidla/macro.ini |
---|
/roboti/istrobot/3Orbis/vystava/main.BAK |
---|
0,0 → 1,222 |
#include ".\main.h" |
#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 |
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); |
delay_us(1000); |
for(n=uhel; n>0; n--) Delay_us(2); |
output_low(SERVO); |
} |
//////////////////////////////////////////////////////////////////////////////// |
void main() |
{ |
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 |
setup_adc(ADC_CLOCK_INTERNAL); |
setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_16); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED|T1_DIV_BY_8); |
setup_timer_2(T2_DIV_BY_16,140,16); |
setup_oscillator(OSC_8MHZ|OSC_INTRC); |
STOPR; STOPL; // zastav motory |
Lmotor=0;Rmotor=0; |
uhel = STRED; // nastav zadni kolecko na stred |
rovinka = 0; |
enable_interrupts(INT_TIMER2); |
enable_interrupts(GLOBAL); |
output_low(IRTX); // zapni IR vysilac |
delay_ms(2000); // musime pockat na diagnostiku slave CPU |
//nastaveni rychlosti |
set_adc_channel(CERVENA); |
Delay_ms(1); |
RozumnaRychlost=R+(read_adc()>>2); // rychlost rovne +63; kroutitko dava 0-63 |
set_adc_channel(MODRA); |
Delay_ms(1); |
turn=speed-32+(read_adc()>>2); // rychlost toceni +-32; kroutitko dava 0-63 |
while(true) |
{ |
GO(L,F,Lmotor);GO(R,F,Rmotor); // zapni motory PWM podle promenych Lmotor a Rmotor |
delay_us(2000); // cekani na SLAVE, nez pripravi data od cidel |
last_sensors=sensors; |
output_low(STROBE); // vypni zobrazovani na posuvnem registru |
sensors = spi_read(0); // cteni senzoru |
sensors=~sensors; // neguj prijata data |
output_high(STROBE); // zobraz data na posuvnem registru |
i=0; // havarijni kod |
for (n=0; n<=6; n++) |
{ |
if(bit_test(sensors,n)) i++; |
} |
if (i>4) // zastavi, kdyz je cerno pod vice nez tremi cidly |
{ |
BL; BR; |
delay_ms(300); |
STOPR; STOPL; |
While(true); |
}; |
if (bit_test(sensors,7)) // detekce cihly |
{ |
BR;BL; |
Delay_ms(100); |
STOPR;STOPL; |
Delay_ms(1000); |
} |
if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu |
{ |
uhel=STRED - BEAR3; |
Lmotor=0; |
Rmotor=turn; |
line=L3; |
continue; |
} |
if(bit_test(sensors,6)) //......|// |
{ |
uhel=STRED + BEAR3; |
Rmotor=0; |
Lmotor=turn; |
line=R3; |
continue; |
} |
if(bit_test(sensors,1)) //.|.....// |
{ |
uhel=STRED - BEAR2; |
Lmotor=speed-70; |
Rmotor=speed; |
line=L2; |
continue; |
} |
if(bit_test(sensors,5)) //.....|.// |
{ |
uhel=STRED + BEAR2; |
Rmotor=speed-70; |
Lmotor=speed; |
line=R2; |
continue; |
} |
if (bit_test(sensors,2)) //..|....// |
{ |
uhel=STRED - BEAR1; |
Lmotor=speed-20; |
Rmotor=speed; |
line=L2; |
if (rovinka<255) rovinka++; |
continue; |
} |
if (bit_test(sensors,4)) //....|..// |
{ |
uhel=STRED + BEAR1; |
Rmotor=speed-20; |
Lmotor=speed; |
line=L2; |
if (rovinka<255) rovinka++; |
continue; |
} |
if(bit_test(sensors,3)) //...|...// |
{ |
uhel=STRED; |
Lmotor=speed; |
Rmotor=speed; |
line=S; |
if (rovinka < 255) rovinka++; |
continue; |
} |
if ((L3==line) || (R3==line)) // Brzdeni pri vyjeti z trate |
{ |
if (rovinka>50) |
{ |
BL; BR; |
Delay_ms(100); |
if (rovinka > 250 || speed > 170) delay_ms(50); |
}; |
rovinka=0; |
}; |
} |
} |
/roboti/istrobot/3Orbis/vystava/main.HEX |
---|
0,0 → 1,84 |
:1000000000308A007D280000FF00030E8301A1005C |
:100010007F08A0000A08A8008A01A00E0408A20018 |
:100020007708A3007808A4007908A5007A08A6003C |
:100030007B08A700831383128C308400801C222845 |
:100040008C183528220884002308F7002408F800BB |
:100050002508F9002608FA002708FB0028088A006E |
:10006000210E8300FF0E7F0E09008A1147280830F9 |
:10007000BD02031C46283D3084000310800C00089C |
:100080000319462844286400800B43280034831653 |
:1000900086128312861664000930BC006D30BD00E4 |
:1000A0003720BC0B4E282C08BB00BB0803195E2868 |
:1000B0006400000000000000BB0355288316861270 |
:1000C000831286128C108A1122283A30840000088C |
:1000D00003197C280230F800BF30F7006400F70BEA |
:1000E0006E28F80B6C289630F700F70B7528000087 |
:1000F00000006400800B6A28003484011F308305EF |
:10010000703083168F001F129F121B0880399B00CE |
:1001100007309C008312AB0183161F129F121B082D |
:10012000803974389B001F1383121F179F17831683 |
:100130009F1383121F14941283160611861406123D |
:100140003130831294000030831694000108C739BF |
:10015000083881003030831290007830F80006387B |
:1001600092008C308316920072308F000513831238 |
:1001700005138316851383128513831605108312C6 |
:1001800005108316851083128510B101B001B301EB |
:10019000B2018030AC00AF0183168C14C0308312E2 |
:1001A0008B0483160611831206110830B900FA3049 |
:1001B000BA006520B90BD7282030F8001F08C739CE |
:1001C00078049F000130BA0065201F151F19E6282A |
:1001D0001E08F700F70CF70C3F30F7057708643E70 |
:1001E000AD001030F8001F08C73978049F000130B7 |
:1001F000BA00652020302D02B9001F151F19FE28F6 |
:100200001E08F700F70CF70C3F30F70577083907A1 |
:10021000AE000108801F0F29B11F17291129B11B3A |
:100220002029B108031D17293002031C2029831639 |
:100230008510831285108316051083120514282952 |
:1002400083160510831205108316851083128510FE |
:100250000108801F2E29B31F36293029B31B3F29DF |
:10026000B308031D36293202031C3F298316851368 |
:1002700083128513831605138312051747298316E6 |
:1002800005138312051383168513831285136400E7 |
:100290000130BA0065200930B900A9018B1BA917EC |
:1002A0008B136D30BD003720A91B8B17B90B4D295F |
:1002B0002A08B7008316061083120610130893014C |
:1002C0008316141865298312602983121308AA0063 |
:1002D000AA098316061083120614B501B401340866 |
:1002E000063C031C81292A08F7003408F80003198A |
:1002F0007D290310F70CF80B79297718B50AB40A91 |
:100300006F293508043C0318AD29831605108312A4 |
:100310000510831685108312851483160513831226 |
:10032000051383168513831285170230B9009630A2 |
:10033000BA006520B90B972983160513831205139C |
:1003400083168513831285138316051083120510F7 |
:100350008316851083128510AC29AA1FD92983160C |
:1003600005138312051383168513831285178316CD |
:1003700005108312051083168510831285146430CE |
:10038000BA0065208316051383120513831685139F |
:1003900083128513831605108312051083168510AA |
:1003A000831285100430B900FA30BA006520B90B09 |
:1003B000D4292A1CE7295330AC00B101B001FA015D |
:1003C0002E08B2007A08B3000330AB0009292A1FB7 |
:1003D000F529AD30AC00B301B201FA012E08B0002E |
:1003E0007A08B100FD30AB000929AA1C072A673042 |
:1003F000AC0046302D02FA01B0007A08B100FA01D3 |
:100400002D08B2007A08B3000230AB000929AA1EF9 |
:10041000192A9930AC0046302D02FA01B2007A0850 |
:10042000B300FA012D08B0007A08B100FE30AB002D |
:1004300009292A1D2F2A7630AC0014302D02FA012A |
:10044000B0007A08B100FA012D08B2007A08B300B2 |
:100450000230AB002F0F2D2A2E2AAF0A09292A1E9F |
:10046000452A8A30AC0014302D02FA01B2007A0815 |
:10047000B300FA012D08B0007A08B1000230AB00D9 |
:100480002F0F432A442AAF0A0929AA1D592A80306E |
:10049000AC00FA012D08B0007A08B100FA012D086D |
:1004A000B2007A08B300AB012F0F572A582AAF0ABF |
:1004B00009292B08033C0319612A2B08FD3C031D65 |
:1004C000842A2F08323C0318832A831605108312CE |
:1004D0000510831685108312851483160513831265 |
:1004E000051383168513831285174630BA006520DD |
:1004F0002F08FA3C031C802A2D08AA3C0318832AE3 |
:0C0500003230BA006520AF010929630009 |
:04400E00383FFC3FFC |
:00000001FF |
;PIC16F88 |
/roboti/istrobot/3Orbis/vystava/main.LST |
---|
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 |
/roboti/istrobot/3Orbis/vystava/main.PJT |
---|
0,0 → 1,41 |
[PROJECT] |
Target=main.HEX |
Development_Mode= |
Processor=0x688F |
ToolSuite=CCS |
[Directories] |
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\dr |
Library= |
LinkerScript= |
[Target Data] |
FileList=D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.c |
BuildTool=C-COMPILER |
OptionString=+FM |
AdditionalOptionString= |
BuildRequired=1 |
[main.c] |
Type=4 |
Path= |
FileList= |
BuildTool= |
OptionString= |
AdditionalOptionString= |
[mru-list] |
1=main.c |
[Windows] |
0=0000 main.c 0 0 796 451 3 0 |
[Opened Files] |
1=D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.c |
2=D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.h |
3=C:\Program Files\PICC\devices\16F88.h |
4= |
5= |
[Units] |
Count=1 |
1=D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.c (main) |
/roboti/istrobot/3Orbis/vystava/main.SYM |
---|
0,0 → 1,70 |
015-016 CCP_1 |
015 CCP_1_LOW |
016 CCP_1_HIGH |
020 @INTERRUPT_AREA |
021 @INTERRUPT_AREA |
022 @INTERRUPT_AREA |
023 @INTERRUPT_AREA |
024 @INTERRUPT_AREA |
025 @INTERRUPT_AREA |
026 @INTERRUPT_AREA |
027 @INTERRUPT_AREA |
028 @INTERRUPT_AREA |
029 @INTERRUPT_AREA |
02A sensors |
02B line |
02C uhel |
02D speed |
02E turn |
02F rovinka |
030-031 Lmotor |
032-033 Rmotor |
034 main.n |
035 main.i |
036 main.j |
037 main.last_sensors |
038 main.RozumnaRychlost |
039 main.@SCRATCH |
03A @delay_ms1.P1 |
03A main.@SCRATCH |
03B TIMER2_isr.n |
03C TIMER2_isr.@SCRATCH |
03D @delay_us1.P1 |
077 @SCRATCH |
078 @SCRATCH |
078 _RETURN_ |
079 @SCRATCH |
07A @SCRATCH |
07B @SCRATCH |
09C.6 C1OUT |
09C.7 C2OUT |
0065 @delay_ms1 |
0037 @delay_us1 |
0047 TIMER2_isr |
007D main |
007D @cinit |
Project Files: |
D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.c |
D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.h |
C:\Program Files\PICC\devices\16F88.h |
Units: |
D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.c (main) |
Compiler Settings: |
Processor: PIC16F88 |
Pointer Size: 8 |
ADC Range: 0-255 |
Opt Level: 9 |
Short,Int,Long: 1,8,16 |
Output Files: |
Errors: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.err |
INHX8: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.hex |
Symbols: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.sym |
List: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.lst |
Debug/COFF: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.cof |
Call Tree: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.tre |
Statistics: D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.sta |
/roboti/istrobot/3Orbis/vystava/main.c |
---|
0,0 → 1,222 |
#include ".\main.h" |
#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 |
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); |
delay_us(1000); |
for(n=uhel; n>0; n--) Delay_us(2); |
output_low(SERVO); |
} |
//////////////////////////////////////////////////////////////////////////////// |
void main() |
{ |
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 |
setup_adc(ADC_CLOCK_INTERNAL); |
setup_spi(SPI_MASTER|SPI_H_TO_L|SPI_XMIT_L_TO_H|SPI_CLK_DIV_16); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED|T1_DIV_BY_8); |
setup_timer_2(T2_DIV_BY_16,140,16); |
setup_oscillator(OSC_8MHZ|OSC_INTRC); |
STOPR; STOPL; // zastav motory |
Lmotor=0;Rmotor=0; |
uhel = STRED; // nastav zadni kolecko na stred |
rovinka = 0; |
enable_interrupts(INT_TIMER2); |
enable_interrupts(GLOBAL); |
output_low(IRTX); // zapni IR vysilac |
delay_ms(2000); // musime pockat na diagnostiku slave CPU |
//nastaveni rychlosti |
set_adc_channel(CERVENA); |
Delay_ms(1); |
speed=R+(read_adc()>>2); // rychlost rovne +63; kroutitko dava 0-63 |
set_adc_channel(MODRA); |
Delay_ms(1); |
turn=speed-32+(read_adc()>>2); // rychlost toceni +-32; kroutitko dava 0-63 |
while(true) |
{ |
GO(L,F,Lmotor);GO(R,F,Rmotor); // zapni motory PWM podle promenych Lmotor a Rmotor |
delay_us(2000); // cekani na SLAVE, nez pripravi data od cidel |
last_sensors=sensors; |
output_low(STROBE); // vypni zobrazovani na posuvnem registru |
sensors = spi_read(0); // cteni senzoru |
sensors=~sensors; // neguj prijata data |
output_high(STROBE); // zobraz data na posuvnem registru |
i=0; // havarijni kod |
for (n=0; n<=6; n++) |
{ |
if(bit_test(sensors,n)) i++; |
} |
if (i>4) // zastavi, kdyz je cerno pod vice nez tremi cidly |
{ |
BL; BR; |
delay_ms(300); |
STOPR; STOPL; |
While(true); |
}; |
if (bit_test(sensors,7)) // detekce cihly |
{ |
BR;BL; |
Delay_ms(100); |
STOPR;STOPL; |
Delay_ms(1000); |
} |
if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu |
{ |
uhel=STRED - BEAR3; |
Lmotor=0; |
Rmotor=turn; |
line=L3; |
continue; |
} |
if(bit_test(sensors,6)) //......|// |
{ |
uhel=STRED + BEAR3; |
Rmotor=0; |
Lmotor=turn; |
line=R3; |
continue; |
} |
if(bit_test(sensors,1)) //.|.....// |
{ |
uhel=STRED - BEAR2; |
Lmotor=speed-70; |
Rmotor=speed; |
line=L2; |
continue; |
} |
if(bit_test(sensors,5)) //.....|.// |
{ |
uhel=STRED + BEAR2; |
Rmotor=speed-70; |
Lmotor=speed; |
line=R2; |
continue; |
} |
if (bit_test(sensors,2)) //..|....// |
{ |
uhel=STRED - BEAR1; |
Lmotor=speed-20; |
Rmotor=speed; |
line=L2; |
if (rovinka<255) rovinka++; |
continue; |
} |
if (bit_test(sensors,4)) //....|..// |
{ |
uhel=STRED + BEAR1; |
Rmotor=speed-20; |
Lmotor=speed; |
line=L2; |
if (rovinka<255) rovinka++; |
continue; |
} |
if(bit_test(sensors,3)) //...|...// |
{ |
uhel=STRED; |
Lmotor=speed; |
Rmotor=speed; |
line=S; |
if (rovinka < 255) rovinka++; |
continue; |
} |
if ((L3==line) || (R3==line)) // Brzdeni pri vyjeti z trate |
{ |
if (rovinka>50) |
{ |
BL; BR; |
Delay_ms(70); |
if (rovinka > 250 || speed > 170) delay_ms(50); |
}; |
rovinka=0; |
}; |
} |
} |
/roboti/istrobot/3Orbis/vystava/main.cof |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/roboti/istrobot/3Orbis/vystava/main.err |
---|
0,0 → 1,2 |
No Errors |
0 Errors, 0 Warnings. |
/roboti/istrobot/3Orbis/vystava/main.h |
---|
0,0 → 1,18 |
#include <16F88.h> |
#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) |
/roboti/istrobot/3Orbis/vystava/main.sta |
---|
0,0 → 1,32 |
ROM used: 646 (16%) |
646 (16%) including unused fragments |
1 Average locations per line |
4 Average locations per statement |
RAM used: 32 (18%) at main() level |
35 (20%) worst case |
Lines Stmts % Files |
----- ----- --- ----- |
223 154 100 D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.c |
19 0 0 D:\KAKLIK\roboti\istrobot\3Orbis\vystava\main.h |
279 0 0 C:\Program Files\PICC\devices\16F88.h |
----- ----- |
1042 308 Total |
Page ROM % RAM Functions: |
---- --- --- --- ---------- |
0 24 4 1 @delay_ms1 |
0 16 2 1 @delay_us1 |
0 30 5 2 TIMER2_isr |
0 521 81 7 main |
Segment Used Free |
--------- ---- ---- |
00000-00003 4 0 |
00004-00036 51 0 |
00037-007FF 591 1402 |
00800-00FFF 0 2048 |
/roboti/istrobot/3Orbis/vystava/main.tre |
---|
0,0 → 1,15 |
ÀÄmain |
ÃÄmain 0/521 Ram=7 |
³ ÃÄ??0?? |
³ ÃÄ@delay_ms1 0/24 Ram=1 |
³ ÃÄ@delay_ms1 0/24 Ram=1 |
³ ÃÄ@delay_ms1 0/24 Ram=1 |
³ ÃÄ@delay_ms1 0/24 Ram=1 |
³ ÃÄ@delay_us1 0/16 Ram=1 |
³ ÃÄ@delay_ms1 0/24 Ram=1 |
³ ÃÄ@delay_ms1 0/24 Ram=1 |
³ ÃÄ@delay_ms1 0/24 Ram=1 |
³ ÃÄ@delay_ms1 0/24 Ram=1 |
³ ÀÄ@delay_ms1 0/24 Ram=1 |
ÀÄTIMER2_isr 0/30 Ram=2 |
ÀÄ@delay_us1 0/16 Ram=1 |