Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

16/03/2009 #1

Avatar de Meta

Manejos de pulsadores con PIC
Hola:

Con un PIC16F84A-04 en ASM, quiero lograr programar un botón que haga cosas diferentes dependiendo de cómo lo pulses.

Puedes elegir para tu ejemplo los puertos In/Out que desees, las salidas es sólo hay 3 diodos Led. Led_Verde, Led Ambar y otro Led_Rojo.

1º) Si el pulsador (P en adelante) no se está pulsando, ningún Led se enciende, en cambio de que se pulse se enciende el Led Rojo.

2º) Si dejas pulsado el P durante 3 segundos, se apaga el Led Rojo y acto seguido se enciende Led Verde, al final cuando dejes de pulsar el P, se quedará encendido el Led Verde.

3º) Si dejas pulsado el P durante 10 segundos, se apagan todos los Led, acto seguido parpadea el Led Ambar. 200ms y 200ms, ese el el tiempo de parpadeo del Led Ambar y se queda ahí.

4º) Después del punto 3º), en la EEPROM se almacena un valor que identifique si se pierde la energía, pila o batería al iniciar el PIC de nuevo, siga el Led Ambar parpadeando.

Un cordial saludo.
16/03/2009 #2

Avatar de Moyano Jonathan

Te has elejido un tema un poco complicadito meta, podrías llegar a resolver con la interrupción del TMR0. Es decir que cuando sobrepase cierto tiempo haga alguna acción según se haya o no apretado el pulsador.

Es una idea...
16/03/2009 #3

Avatar de Meta

Buenas:

Esto no es para mi, es por parte de un colega y es una actividad que debe hacer él, no perderé tiempo ya que estoy con el puerto serie.

No se si será complicado como parece. En C se hará rápido. El que lo quiera hacer en C que ponga su código aquí, dicen que es más rápido y fácil de hacer.

Saludo.
16/03/2009 #4
Moderador

Avatar de Chico3001

La complicacion estriba en llevar los distintos contadores, junto con las banderas necesarias para saber si el boton se sigue manteniendo pulsado o no y que tiempo transcurrio...

Yo no lo veo tan complicado... pero si hay que ponerle atensión por que es facil equivocarse..., lo mejor es desarrollar un diagrama de flujo para tenerlo una guia al programar..
16/03/2009 #5

Avatar de Meta

Hola:

Los tiempos supuestamente se podrá hacer también con retardos, espero que el PIC16F84A-04 no se quede escalvisado.

http://www.golovchenko.org/cgi-bin/delay

saludo.
07/06/2010 #6


Respuesta: Manejos de pulsadores con PIC
Hola. Tengo un problema. Estoy realizando un medidor de temperatura con un PIC16F877A, que cuando mida 25° se encienda un LED.
En la simulación de proteus me mide bien la temperatura con un LM35, pero no me enciende el LED.
¿Cómo puedo hacer que encienda?

El código es éste y no tiene la opción del encendido del LED, pero funciona la medición de temperatura.
Código:
#include <16F877A.h>
#device *=16
#device adc=10
#fuses NOWDT,XT, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, LVP, CPD, NOWRT
#use delay(clock=4000000)//velocidad del pic
#include <lcd.c>
#byte puerto_b = 06
signed int i;
float CEL,der, FAR;

void main()
   {
    set_tris_b(0xFE);            //portb como salida(RB0,las demas desactivadas)
   disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas

   set_tris_b(0x00);// configuracion de las salidas
   setup_adc_ports(RA0_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
   set_adc_channel(0);
   lcd_init();
   delay_ms(200);
   for(i=16;i>0;i--)
   {
   printf(lcd_putc,"\f");
   lcd_gotoxy(i,1);
   printf(lcd_putc,"medidor de temperatura");
   delay_ms(200);
   }
   for(i=-9;i<2;i++)
   {
   lcd_gotoxy(i,2);
   printf(lcd_putc,"  diseño jimmy Quintero");
   delay_ms(200);
   }
   
   delay_ms(1000);
   while(1)
      {
     
   printf(lcd_putc,"\fTEMPERATURA");
      CEL=(read_adc()/2);
     printf(lcd_putc,"\n%fºC, ",CEL);
      delay_ms(200);
      
        }
}
Este programa maneja varios LED encendidos con pulsadores diferentes, además de tener un pulsador para ver el menú en la LCD.
Es algo sencillo pero bueno, ahí se los mando para que lo disfruten, sé que les servirá mucho.

Anexo los códigos .c y .hex para que puedan editarlos y modificarlos de la manera que lo necesiten.
Archivos Adjuntos
Tipo de Archivo: rar controlador de varios dispositivos..led.rar (47,2 KB (Kilobytes), 79 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.