TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: beto0350 en 13 de Noviembre de 2009, 09:02:10
-
tengo un 18f4550 y no me reconoce si un pin tiene un (0) o un (1), siempre
reconoce (0).
No quiero usar la sentencia Button de Mikroc ya que ocupa bastante memoria.
adjunto una parte del programa y los valores del oscilador.
Alquien tendria alguna sugerencia.
Gracias.
void main(void)
{
unsigned char a;
TRISB.F0=1;
TRISB.F1=0;
if(PORTB.F0==0) {
PORTB.F1=1;
}else {
PORTB.F1=0;
}
while(1);
}
osc = 20 MHz
PPLDIV_5S = ON
CPUDIV_OSC1_PLL2 = ON
USBDIV2 = ON
FOSC_HS_1H
FCMEN_OFF
IESO_OFF
PWRT_ON_2L
BOR_ON_2L
BORV_43_2L
WDT_OFF
WDTPS_256
MCLRE_ON
LPT1OSC_OFF
PBADEN_OFF
CCP2MX_ON
STRVEN_ON
LVP_OFF
XINST_OFF
-
Prueba esto:
void main(void)
{
unsigned char a;
TRISB.F0=1;
TRISB.F1=0;
while(1)
if(PORTB.F0==0) {
PORTB.F1=1;
}else {
PORTB.F1=0;
};
}
-
Gracias por tu pronta respuesta.
Me di cuenta del que problema que tenia era que me tomaba los ADC y/o los comparadores, porque
probe con el TRISB.F5 en lugar del TRISB.F0 y funciona.
Gracias
-
void main(void)
{
unsigned char a;
TRISB.F0=1;
TRISB.F1=0;
if(PORTB.F0==0) {
PORTB.F1=1;
}else {
PORTB.F1=0;
}
while(1);//*
}
Resulta que el PIC se queda enclavado en el bucle infinito que has puesto, como lo pone el maestro Nocturno, el escaneo del pin se realiza dentro del bucle infinito.
Saludos
-
if(PORTB.F0==0) {
PORTB.F1=1;
}else {
PORTB.F1=0;
}
En MikroC no es necesario preguntar si el bit es igual a 1 o 0 solo necesitas hacer lo siguiente
if(PORTB.F0)
PORTB.F1=1;
else
PORTB.F1=0;
También es recomendable que agregues un pequeño retardo para evitar rebotes