Hola a todos! A ver si me podeis echar una mano con esto:
¿Cómo es posible que el valor de la variable "cont" se me vaya a -3?
Sólo mirad el "SWITCH" y la variable "CONT" ,lo demás es indiferente.
No entiendo cómo se puede ir la variable a valores negativos.
¿Cómo es posible que el valor de la variable "cont" se me vaya a -3?
Sólo mirad el "SWITCH" y la variable "CONT" ,lo demás es indiferente.
No entiendo cómo se puede ir la variable a valores negativos.
PHP:
#include <16f877.h>
#device adc=10
#fuses xt,nowdt
#use delay(clock=4000000)
#include <lcd.c>
#use standard_io(b)
#use standard_io(d)
void main(){
int16 q;
int16 j;
int l,bitaux,cont=0;
float p;
port_b_pullups(true);
setup_adc_ports(an0);
setup_adc(adc_clock_internal);
set_tris_b(0x00);
lcd_init();
for(;{
set_adc_channel(0);
delay_us(20);
q=read_adc();//Valor ADC
p=5.0*q/1024.0;//Voltage
printf(lcd_putc,"\fcont= %6d",cont);
printf(lcd_putc,"\nVoltage= %01.2fV",p);
delay_ms(100);
if(cont<=0)
cont=0;
switch(cont){
case(0):
output_high(pin_d5);
if((input(pin_a1)==1)&&(input(pin_a2)==0)){
output_low(pin_d0);
delay_ms(500);
output_high(pin_d1);
cont++;
delay_ms(5);}
else
output_high(pin_d0);
break;
case(1):
if((input(pin_a1)==1)&&(input(pin_a2)==0)){
output_low(pin_d0);
delay_ms(500);
output_high(pin_d2);
cont++;
delay_ms(5);}
else if((input(pin_a1)==0)&&(input(pin_a2)==1)){
output_high(pin_d0);
output_low(pin_d5);
delay_ms(500);
output_low(pin_d1);
cont--;
delay_ms(5);}
else{
output_high(pin_d0);
output_high(pin_d5);}
case(2):
if((input(pin_a1)==1)&&(input(pin_a2)==0)){
output_low(pin_d0);
delay_ms(500);
output_high(pin_d3);
cont++;
delay_ms(5);}
else if((input(pin_a1)==0)&&(input(pin_a2)==1)){
output_high(pin_d0);
output_low(pin_d5);
delay_ms(500);
output_low(pin_d2);
cont--;
delay_ms(5);}
else{
output_high(pin_d0);
output_high(pin_d5);}
case(3):
if((input(pin_a1)==1)&&(input(pin_a2)==0)){
output_low(pin_d0);
delay_ms(500);
output_high(pin_d4);
cont++;
delay_ms(5);}
else if((input(pin_a1)==0)&&(input(pin_a2)==1)){
output_high(pin_d0);
output_low(pin_d5);
delay_ms(500);
output_low(pin_d3);
cont--;
delay_ms(5);}
else{
output_high(pin_d0);
output_high(pin_d5);}
case(4):
if((input(pin_a1)==0)&&(input(pin_a2)==1)){
output_high(pin_d0);
output_low(pin_d5);
delay_ms(500);
output_low(pin_d4);
cont--;
delay_ms(5);}
else{
output_high(pin_d0);
output_high(pin_d5);}
}
}}
Última edición por un moderador: