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

Temas similares

24/03/2012 #1


¿Cómo configurar pic16f84a para que un push boton funcione para encendido y apagado?
ola necesito ayuda para configurar el pic16f84a usando una sola entrada (RA0), en este caso un push boton; el cual cuando sea accionado me encienda un led, y si vuelve ser accionado este mismo debe apagarlo...

el lenguaje que necesito debe de ser en microcode o mplab


ayudenme es urgente para mi proyecto
24/03/2012 #2

Avatar de Meta

Hola:

Apagar o encender los LEd.

Código:
LIST     p=16f887    ; Procesador.     #INCLUDE             ; Directivas del procesador.        __CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF &  _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON &  _WDT_OFF & _XT_OSC     __CONFIG    _CONFIG2, _WRT_OFF & _BOR21V   ;**********************************************************************     ORG     0x000 Inicio     clrf    PORTA     clrf    PORTB     clrf    PORTC     clrf    PORTD     clrf    PORTE                          bsf     STATUS,RP0     bsf     STATUS,RP1     clrf    ANSEL     clrf    ANSELH     bcf     STATUS,RP1     clrf    TRISA     clrf    TRISB     movlw   b'11111111'     movwf   TRISC     clrf    TRISD     clrf    TRISE     bcf     STATUS,RP0   Principal     movf    PORTC,W    ; Lee las entradas del puerto C.     movwf    PORTB     ; Las mismas entradas se pasan en la salida del puerto B.     goto    Principal       END
Si aún quieres el PIC16F84A es igual, solo cambias la palabra de configuración. Aún así si te interesa, te lo paso en PIC16F84A. En este caso en cada puerto que encienda, un led enciende.

Un saludo.
24/03/2012 #3


muchas gracias, de hecho me interesa mucho...a ver si me lo envias porfavor...el codigo que necesito es para el circuito en adjunto...que el push boton encienda y apague a la vez...gracias
Archivos Adjuntos
Tipo de Archivo: rar push boton.rar (6,8 KB (Kilobytes), 665 visitas)
24/03/2012 #4

Avatar de Meta

¿Apague y encienda a la vez?

¿Alto y bajo a la vez?

¿Noche y día a la vez?

¿Gordo y flaco a la vez?

No tengo instalado el proteus.
24/03/2012 #5


Aqui esta para el 16f84a, push button en RA0 y el led se enciende o apaga en RB0. Pero lo puedes adaptar a lo que quieres, simplemente copias en orden desde la figura 1 a la 3.

Imágenes Adjuntas
Tipo de Archivo: png ON_OFF1.png (1,5 KB (Kilobytes), 443 visitas)
Tipo de Archivo: png ON_OFF2.png (1,1 KB (Kilobytes), 319 visitas)
Tipo de Archivo: png ON_OFF3.png (409 Bytes, 238 visitas)
24/03/2012 #6
Moderador

Avatar de D@rkbytes

renx92 dijo: Ver Mensaje
ola necesito ayuda para configurar el pic16f84a usando una sola entrada (RA0), en este caso un push boton; el cual cuando sea accionado me encienda un led, y si vuelve ser accionado este mismo debe apagarlo...
el lenguaje que necesito debe de ser en microcode o mplab
ayudenme es urgente para mi proyecto
Saludos.
Aqui un ejemplo para PBP usando MicroCode Studio.
Con tres formas diferentes de lograr lo que quieres.

PD. Incluye simulación en ISIS de PROTEUS

Suerte y hasta luego.
Archivos Adjuntos
Tipo de Archivo: rar FLAG_BUTTON.rar (9,7 KB (Kilobytes), 430 visitas)
25/03/2012 #7

Avatar de Meta

Un ejemplo del PIC16F886.

ASM:
Código:
List    p=16F886        ;Tipo de procesador
        include    "P16F886.INC"    ;Definiciones de registros internos

;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades

        __config    _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF&_BOR_OFF     ;Palabra 1 de configuración
        __config    _CONFIG2, _WRT_OFF                                    ;Palabra 2 de configuración

            org        0x00
            goto    Inicio        ;Vector de reset
            org        0x05

Inicio        clrf     PORTB        ;Borra los latch de salida
            bsf        STATUS,RP0
            bsf        STATUS,RP1    ;Selecciona banco 3
            clrf    ANSEL        ;Puerta A digital
            clrf    ANSELH        ;Puerta B digital
            bcf        STATUS,RP1    ;Selecciona banco 1
            clrf    TRISB        ;RB7:RB0 se configuran como salida
            movlw    b'00111111'        
            movwf    TRISA        ;RA5:RA0 se configuran como entrada
            bcf        STATUS,RP0    ;Selecciona banco 0

Loop        btfsc    PORTA,0        ;RA0 = 1 ??
            goto    RA0_es_1    ;Si
            bcf        PORTB,0        ;No, desconecta RB0
            bsf        PORTB,1        ;Conecta RB1
            goto    Loop        ;Buble sin fin

RA0_es_1    bsf        PORTB,0        ;Activa RB0
            bcf        PORTB,1        ;Activa RB1
            goto    Loop        ;Bucle sin fin

            end                    ;Fin del programa fuente

C:

Código:
/*
                                EJEMPLO 3-2
                        Autor: Mikel Etxebarria
                        Orozko-Bizkaia, Julio 2010

Entradas/salidas digitales

Control de los leds conectados a RB0 y RB1 desde el interruptor RA0. 
RB0 refleja el estado de RA0, RB1 el complemento de RA0 */

#include <16f886.h>

/* Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades */

#fuses     NOLVP,PUT,NOWDT,EC_IO,NOFCMEN,NOBROWNOUT    //Palabra 1 de configuración
#fuses    NOWRT,BORV40                                //Palabra 2 de configuración

/* Con estas directivas las funciones "input" y "output_bit" no reprograman
 el pin de la puerta cada vez que son utilizadas. Si no se indica el
modo fast_io se asume por defecto standard_io el cual reprograma el pin
siempre antes de ser utilizadas estas funciones. */

#use fast_io(A)
#use fast_io(B)

main()
{
    setup_adc_ports(NO_ANALOGS);    //Puertas A y B digitales
      set_tris_a(0b00111111);          // RA0 se configura como entradas
      set_tris_b(0b11111100);         // RB0 y RB1 se configuran como salidas

     while(1)
    {
    if(input(PIN_A0))                 // Leer RA0 y preguntar por su valor
    {                                 // RA0 es 1
      output_high(PIN_B0);             // Poner RB0 a 1
      output_low(PIN_B1);             // Poner RB1 a 0
    }
    else
    {                               // RA0 es 0
      output_low(PIN_B0);             // Poner RB0 a 0
      output_high(PIN_B1);             // Poner RB1 a 1
    }
    }        
}
20/10/2012 #8


ok
pero yo necesito el mismo programa solo que en mikrobasic como seria de antemano gracias
26/10/2012 #9


Hola chicos, estuve revisando los programas, pero no entiendo muy bien... Qué es lo que hace que el programa detecte el pulso del push button... Alguien me podría explicar si no es mucha molestia??
26/10/2012 #10

Avatar de gustavo

Nayelli dijo: Ver Mensaje
Hola chicos, estuve revisando los programas, pero no entiendo muy bien... Qué es lo que hace que el programa detecte el pulso del push button... Alguien me podría explicar si no es mucha molestia??
Suponete que vos conectas el pulsador al puerto RA0 del pic. Cuando lo presionas lo que haces es enviar un "1" al puerto RA0.
La instrccion "if" es un si condicional, consulta si el pin RA0 esta a "1" que es cuando presionas el pulsador.

Uso el ejemplo de Meta:

if(input(PIN_A0)) // Pregunta si el pulsador conectado a RA0 esta presionado

{ // Si RA0 es 1 (Si el pulsador esta presionado)
output_high(PIN_B0); // Entonces pone RB0 a 1 (Enciende el led)
}
else //Si no esta presionado
{
output_low(PIN_B0); //Pone RB0 a 0 (Deja el led apagado)
}

------------------------------------------------------------------------

Si (Pulsador=1)

{
Encender led
}
Si no
{
Apagar led
}
28/10/2012 #11


Gracias por tu respuesta Gustavo, me pareció como C o Visual, es el mismo procedimiento para MPLAB??

Creo que ando revolviendo los programas, disculpa las molestias y gracias por tu tiempo
28/10/2012 #12

Avatar de gustavo

Nayelli dijo: Ver Mensaje
Gracias por tu respuesta Gustavo, me pareció como C o Visual, es el mismo procedimiento para MPLAB??

Creo que ando revolviendo los programas, disculpa las molestias y gracias por tu tiempo

El lenguaje que ultilizas con MPLAB es el Ensamblador pero podes descargarte otros ides como CCS y programas en MPLAB pero en C
10/11/2012 #13


renx92 dijo: Ver Mensaje
ola necesito ayuda para configurar el pic16f84a usando una sola entrada (RA0), en este caso un push boton; el cual cuando sea accionado me encienda un led, y si vuelve ser accionado este mismo debe apagarlo...

el lenguaje que necesito debe de ser en microcode o mplab


ayudenme es urgente para mi proyecto
como solo vas a usar un pulsador para encender y apagar el led;... entonces necesitas un registro lógico

que lo modificas cada vez que oprimes el pulsador de 1 para encendido y 0 para apagado, luego preguntas por el estado de este registro así sabrá el pic si debe encender o pagar el led
08/01/2013 #14


frenado lent
hola tengo este circuito que lo adjunto con el un pulsante arranca el motor y con el otro detiene eso esta bien lo que necesito es que el pulsante de lo detiene lo aga lentamente disminuyendo su velocidad hasta llegar a cero que no apague el motor enseguiga espero que me puedan ayudar gracias la programacion esta echa en ccs.
Archivos Adjuntos
Tipo de Archivo: rar motor.rar (58,4 KB (Kilobytes), 173 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.