TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: letxu2 en 08 de Mayo de 2007, 13:34:55

Título: MikroC
Publicado por: letxu2 en 08 de Mayo de 2007, 13:34:55
Hola, estoy descubriendo mikroC, y os parecera una chorrada, pero no soy capaz de capturar cuando se pulsa un pulsador.
Creo haberlo probado todo, esta bien configuradas las entradas. este es el codigo que he escrito:
                if(PORTDbits.RD0)
                  {
                        if (temperaturaPilotoInterno>16||temperaturaPilotoInterno<25)   {
                         temperaturaPilotoInterno=temperaturaPilotoInterno+1;
                         IntToStr(temperaturaPilotoInterno,mensajeTempPilotoInterno);
                         T6963C_write_text(mensajeTempPilotoInterno,23, 2, T6963C_ROM_MODE_XOR) ;
                          }
                Delay_ms(300) ;
         }

Podria alguien echarme una mano?? Muchas gracias
Título: Re: MikroC
Publicado por: Nocturno en 09 de Mayo de 2007, 02:03:00
¿Sólo te falla esa parte del programa y el resto funciona, o el micro no hace nada?. Habría que ver más partes del programa y un esquema de tu circuito para intentar aproximar una solución.

A pesar de eso, sí que he descubierto algo raro en tu programa:
if (temperaturaPilotoInterno>16||temperaturaPilotoInterno<25)   {

Esa condición será cierta SIEMPRE, puesto que has utilizado el operador || (OR) en lugar de && (AND).
Yo lo pondría así:
if  ((temperaturaPilotoInterno>16) && (temperaturaPilotoInterno<25))   {

Por cierto, creo que tu programa ganaría bastante en "legibilidad" si utilizaras más los espacios en blanco.
Título: Re: MikroC
Publicado por: letxu2 en 09 de Mayo de 2007, 06:26:28
Si el resto el programa funciona perfectamente, lo unico q no hace es entrar en el if cada vez que se pulsa el pulsador. gracias por lo de la condicion. El problema q tengo es q no se si lo de PORT<> es correcto para detectar q se ha pulsador el pulsador.gracias
Título: Re: MikroC
Publicado por: Milo en 11 de Mayo de 2007, 15:19:50
Buennass:

Yo no programo en MikroC, no se como es tu programa pero a lo mejor necesitas meter el if dentro de un while para esperar ese evento en el puerto RD0 para que no se pase la instrucción, otra opción que tienes es programar alguna interrupción de ese puerto. Espero haberte ayudado,

suerte,