Autor Tema: ALMACENAR EN EL PIC SI SE A PULSADO UN BUTON  (Leído 2011 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
ALMACENAR EN EL PIC SI SE A PULSADO UN BUTON
« en: 12 de Febrero de 2005, 06:25:00 »
les quento lo que qiero es usar un pic 16f84 con dos push buton conectados a A0 e A1 que indica si pulsamos A1 entregamos 5v al pic el pic lo detecta e lo guarda en su eeprom se desconecta la alimentacion del pic e quando se conecta este devera saber que se abia pulsado el push buton conectado a A0 e activaria un rele conectado a B0 durante 1 segundo e se dormia pero quando se pulsara el push buton conectado a A1 el pic decteraria los 5v en A1 e lo guardaria en la eeprom quando se desconectara la alimentacion del pic e luego se volviera a conectar el pic sabria que se abria pulsado el push buton conectado a A1 e activaria el rele en B0 durante 1 segundo luego desconectaria el rele por otro segundo para volver a conectarlo durante otro segundo o sea

1 pulso de 1s de 5v en B0 si se a pulsado A0

2 pulsos de 1s de 5v en B0 si se a pulsado A1

esto es lo que estoi aciendo pero me lio como guardar los datos en la eepron del pic para que quando se desconet e vuelva a conectar el pic sepa que pulsador se habia pulsado

#include <16F84.h>
#fuses xt,nowdt,put,noprotect
#use delay(clock=4000000)
#define RELE PIN_B0
#define INVERNO PIN_A0
#define VERAO PIN_A1
void main()
{
if ( input ( INVERNO ) == 1)
                {
                write_eeprom ( INVERNO,INVERNO/ 256 );        // save speed to EEPROM
                write_eeprom ( INVERNO, INVERNO % 256 );
                break;                      // drop out to main menu
                }
if ( input ( VERAO ) == 1)
                {
                write_eeprom ( VERAO, VERAO/ 256 );        // save speed to EEPROM
                write_eeprom ( VERAO, VERAO % 256 );
                break;        
                }
  read_eeprom (INVERNO );
    if ( INVERNO==1 )
 output_HIGH ( RELE );




}      

Desconectado akydes_

  • PIC12
  • **
  • Mensajes: 68
RE: ALMACENAR EN EL PIC SI SE A PULSADO UN BUTON
« Respuesta #1 en: 12 de Febrero de 2005, 07:12:00 »
hola amigos!!
no estoy muy seguro de haber entendido lo que pides, pero creo que deberías declarar una variable booleana, y asignarle 0 o 1 dependiendo del botón que pulses:

boolean Estacion;

Cuando pulsas uno de los botones:

Estacion=0;

Cuando pulses el otro:

Estacion=1;

y lo guardas en eeprom, con la función write_eeprom().

Para que al comenzar el programa sepa cuál es el botón que habías pulsado, pon al principio del main():

Estacion=read_eeprom(...);

con lo cual cargas el valor que tenías almacenado en la eeprom.


no sé si era ésto a lo que te referías. en cualquier caso, buena suerte!

Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
RE: ALMACENAR EN EL PIC SI SE A PULSADO UN BUTON
« Respuesta #2 en: 12 de Febrero de 2005, 09:38:00 »
hee para un gran problema una gran solucion ya lo resolvi no uso la eepron del pic pero un comutador conectado a B1 quando lo pongo a +5V el pin B0 da dos pulsos con un segundo de retraso quando pongo B1 a massa o 0V el pin B0 da solo un pulso con duracion de 1 seg e es igual que se desconecte la alimentacion del pic porque ara sienpre lo que este definido en el comutador


#include <12C509.h>
#fuses INTRC,NOWDT,NOPROTECT, NOMCLR
#use delay(clock=4000000)
#define GP0 PIN_B0
#define GP1 PIN_B1
void INVERNO ( void );
void VERAO( void );

void main()
{
   if ( input (GP1) == 0 )
   {
      INVERNO();
      delay_ms(80);
      break;
   }
   if ( input (GP1) == 1 )
   {
      VERAO();
      delay_ms(80);
      break;  
   }
}
void INVERNO ( void )
{
   if ( input (GP1) == 0 )
      delay_ms(7000);
   output_high (GP0);
   delay_ms(1000);
   output_low (GP0);
   break;
sleep();
}
void VERAO( void )
{
   if ( input (GP1) == 1 )
      delay_ms(4000);
   output_high (GP0);
   delay_ms(1000);
   output_low (GP0);
   DELAY_MS(1000);
   output_high (GP0);
   delay_ms(1000);
   output_low (GP0);
   break;
  sleep();  
}



pero la verdad es que me gustaria entender como almacenar este 1 e 0 en la eepron del pic e luego ir a buscarla siempre que yo quisiera