witamy!
takie komunikat otrzymujemy podczas próby kompilacji oprogramowania do mikroprocesora
input ma wynosić 1 gdy napięcie z czujników CNY70 jest >2,5 a 0 gdy mniejsze, dlatego nie zamieniamy sygnału na analogowy (próbowałyśmy w sumie, ale błąd był ten sam)
problem pojawia się przy wszystkich if-ach:
if((value1) && (!value2)) && (value3))
zamiana int na short int przy deklaracji value nie pomogła
jak można rozwiązać ten problem?
takie komunikat otrzymujemy podczas próby kompilacji oprogramowania do mikroprocesora
input ma wynosić 1 gdy napięcie z czujników CNY70 jest >2,5 a 0 gdy mniejsze, dlatego nie zamieniamy sygnału na analogowy (próbowałyśmy w sumie, ale błąd był ten sam)
problem pojawia się przy wszystkich if-ach:
if((value1) && (!value2)) && (value3))
zamiana int na short int przy deklaracji value nie pomogła
jak można rozwiązać ten problem?
#include <16F88.h>
#use delay(clock=4000000)
#define SEN1 PIN_A0
#define SEN2 PIN_A1
#define SEN3 PIN_A2
#define SER1 PIN_B6
#define SER2 PIN_B7
//PORTA //0000000
//TRISA = 0b00000111
void delay_min (void);
void delay_var (char n);
void pause (void);
void main(){
int value1;
int value2;
int value3;
int pos1=127;
int pos2=127;
setup_ccp1(CCP_PWM);
//setup_port_a(ALL_ANALOG);
//setup_adc(ADC_CLOCK_INTERNAL);
//ANSEL=0b00000001;
//CCP1CON=0b01100000; //- 01100000 - Put into PWM mode - 8 bit mode
while(1)
{
value1=input(SEN1);
value2=input(SEN2);
value2=input(SEN3);
if((value1) & (value2) & (~value3))) //w lewo
{
output_high(SER1);
pos1=57;
delay_var(pos1);
output_low(SER1);
output_high(SER2);
pos2=127;
delay_var(pos2);
output_low(SER1);
};
if((value1) && (!value2)) && (value3)) //centralnie
{
output_high(SER1);
pos1=57;
delay_var(pos1);
output_low(SER1);
output_high(SER2);
pos2=57;
delay_var(pos2);
output_low(SER2);
};
if((value1) && (!value2) && (!value3))) //lekko w lewo
{
output_high(SER1);
pos1=57;
delay_var(pos1);
output_low(SER1);
output_high(SER2););
pos2=127;
delay_var(pos2);
output_low(SER2);
};
if((!value1) && (value2)) && (value3)) //w prawo
{
output_high(SER1);
pos1=127;
delay_var(pos1);
output_low(SER1);
output_high(SER2);
pos2=57;
delay_var(pos2);
output_low(SER2);
};
if((!value1)) && (!value2)) && (value3)) // lekko w prawo
{
output_high(SER1);
pos1=127;
delay_var(pos1);
output_low(SER1);
output_high(SER2);
pos2=57;
delay_var(pos2);
output_low(SER2);
};
pause();
} //od while
} // od main
void delay_min (void) // 750 uS including overhead
{
char n=248;
do ; while(--n>0);
delay_ms(1); // padding to produce precise time
}
// delay = 2 + 2 + (n x 3) -1 +1 +2 = 750us @ 4MHz
// 2 for call, 2 for preset n, (n x 3)-1 for loop, 1 padding, 2 for return
void delay_var (char n) // adc x 7 uS = 1790us max.
{
do {delay_ms(4);} while(--n>0);
}
// delay= 2 + 2 + (t x 7) -1 +2 us @ 4MHz
void pause (void) // delay between pulses approx 20 ms
{
char n;
for (n=0;n<26;n++)
{
delay_min(); // 750 us
}
}