Bienvenido a Hardcore Modding

 Vivir el modding / Iniciarse en el modding 29 de marzo de 2024 13:28   Modding  ·  Artículos  ·  Guías  ·  Guías de los usuarios  ·  Reviews  ·  Enviar Noticia ·  Top 10 ·  Temas

Minichat

El_Nene :Feliz año dos meses tarde!!! Aqui el tiempo pasa mas lento
xenon :Feliz año 2024. Me embargó la nostalgia al ver que aun existe el foro :)
Cyg :Feliz Navidad 2023
DjSalva :02/10/2023 Saludos chicos cuanto tiempo, El_ Nene cuanta razon :)
Jesmasco :2023
Steam :Saludos! Iniciar sesión despues de 13 años, que recuerdos!
El_Nene :y aún así algo te llama para volver a entrar :)
djmax :saludos años t años que no entraba a esta pagina
El_Nene :Acabo de empezar un nuevo proyecto, a ver si los demás os animais.
El_Nene :cuanto tiempo!!!
aulex51 :Buen año a todos!
unkdememoria :Hola Locos
Cyg :Saludos-28-oct-2022
Cyg :Saludos-28-oct-2022
Chinoka :Aloha. 14/Sept/2022
TELOR5 :No veo como enviar mensaje
TELOR5 :No veo como enviar mensaje
alvaro :Hola 2022!!
el_friky :Buenas Mundo!!! 31/12/21
Tpm :Buenas tardes.... 25/11/21 Saludos!!!
CR6302428 :un buen dia para el que lea esto :)
CR6302428 :un buen dia para el que lea esto :)
:)8):eek::(:@;):P9):O

 FAQFAQ   BuscarBuscar   Grupos de UsuariosGrupos de Usuarios   PerfilPerfil   Entre para ver sus mensajes privadosEntre para ver sus mensajes privados   ConectarConectar 

Pulsador para un 16F84
Ir a página   
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Electronica
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Meta
modder
modder



País:
Sexo:
Registrado: 20 enero 2008
Mensajes: 202
Ubicación: http://electronica-pic.blogspot.com

MensajePublicado: Jue, 21 Ago 2008 6:39 pm    Asunto: Pulsador para un 16F84 Responder citando

Hola:

Se hacer con un PIC 16F84A apagar y encender un led con un interruptor. No me sale hacerlo con un pulsador. Mi idea es con un pulsador si lo pulso se enciende un led y si lo dejo de pulsar siga encendido, luego al volver a pulsarlo que se apague.



Código:
   ORG    0               ; El programa comienza en la dirección 0 de memoria de
Inicio                     ; programa.
      bsf      STATUS,RP0         ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
      clrf   PORTB            ; Las líneas del Puerto B se configuran como salidas.
      movlw   b'11111111'
      movwf   PORTA            ; Las líneas del Puerto A se configuran como entradas.
      bcf      STATUS,RP0         ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.
      clrf   PORTB
      clrf   PORTA

Principal
   btfss   PORTA,0            ; ¿Bit 0 del PORTA es "1"?
   goto   hola

   bsf      PORTB,7
   goto   Principal
hola

   bcf      PORTB,7
   goto    Principal
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
TheGameMaster
modder
modder



País:
Sexo:
Registrado: 28 julio 2007
Mensajes: 1148

MensajePublicado: Jue, 21 Ago 2008 7:44 pm    Asunto: Responder citando

Buenas Meta

tienes un pequeño problema con los pulsadores: Los rebotes; sol los picos que hay cuando pulsas hasta que se estabiliza la señal.

Se pueden correguir por software.

Tu lo que quieres es encender un led por un pulsador:
Código:


Principal
   call Retardo_20ms        ;espera 20ms para ke pase el rebote
   btfss   PORTA,0            ; ¿Bit 0 del PORTA es "1"?
   goto    Principal            ;no  pulsado
   goto    Enciende

Enciende
   bsf      PORTB,7
   goto   Principal

END
include <Retardos>  ; tendras q copiar la libreria de retardos del librito morado jeje
DADO DE BAJA
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Meta
modder
modder



País:
Sexo:
Registrado: 20 enero 2008
Mensajes: 202
Ubicación: http://electronica-pic.blogspot.com

MensajePublicado: Jue, 21 Ago 2008 7:55 pm    Asunto: Responder citando

Gracias, lo de retardo lo se.

Quiero hacer que en un mismo pulsador encender y apagar el led. Cosa que el libro morado no te viene.

jejejjejeje

Gracias de nuevo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
TheGameMaster
modder
modder



País:
Sexo:
Registrado: 28 julio 2007
Mensajes: 1148

MensajePublicado: Jue, 21 Ago 2008 8:00 pm    Asunto: Responder citando

vale
Código:


Principal
PulsadorEnciende
   call Retardo_20ms        ;espera 20ms para ke pase el rebote
   btfss   PORTA,0            ; ¿Bit 0 del PORTA es "1"?
   goto    PulsadorApaga   ;no  pulsado
   goto    Enciende

PulsadorApaga
   call Retardo_20ms        ;espera 20ms para ke pase el rebote
   btfss   PORTA,0            ; ¿Bit 0 del PORTA es "1"?
   goto    PulsadorEnciende   ;no  pulsado
   goto    Apaga

Enciende
   bsf      PORTB,7
   goto   Principal

Apaga
   bcf      PORTB,7
   goto   Principal

END
include <Retardos>  ; tendras q copiar la libreria de retardos del librito ;morado jeje


el pulsador tiene ke activarse por +Vcc(5v) y tienes ke mantenerl la patilla siempre a un nivel negativo, con una resistencia (para evitar el corto) de 10k vale. Me imagino ke lo tienes asi
DADO DE BAJA
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Meta
modder
modder



País:
Sexo:
Registrado: 20 enero 2008
Mensajes: 202
Ubicación: http://electronica-pic.blogspot.com

MensajePublicado: Jue, 21 Ago 2008 8:15 pm    Asunto: Responder citando

Parece que si pulso se enciende y desde que deje de pulsar se apaga. Espero que no pase eso a lo plan de un timbre de una casa.

Voy a examinarlo bien y te comento.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
TheGameMaster
modder
modder



País:
Sexo:
Registrado: 28 julio 2007
Mensajes: 1148

MensajePublicado: Jue, 21 Ago 2008 8:23 pm    Asunto: Responder citando

Código:


Principal
PulsadorEnciende
   call Retardo_20ms        ;espera 20ms para ke pase el rebote
   btfss   PORTA,0            ; ¿Bit 0 del PORTA es "1"?
   goto    PulsadorApaga   ;no  pulsado
   goto    Enciende

PulsadorApaga
   call Retardo_20ms        ;espera 20ms para ke pase el rebote
   btfss   PORTA,0            ; ¿Bit 0 del PORTA es "1"?
   goto    PulsadorEnciende   ;no  pulsado
   goto    Apaga

Enciende
   bsf      PORTB,7
   call Retardo_500ms
   goto   Principal

Apaga
   bcf      PORTB,7
   call Retardo_500ms
   goto   Principal

END
include <Retardos>  ; tendras q copiar la libreria de retardos del librito ;morado jeje




meti 500ms para ke sueltes el pulsador jeje
DADO DE BAJA
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Meta
modder
modder



País:
Sexo:
Registrado: 20 enero 2008
Mensajes: 202
Ubicación: http://electronica-pic.blogspot.com

MensajePublicado: Vie, 22 Ago 2008 12:27 pm    Asunto: Responder citando

No he probado el tuyo, pero he utilizado este método manejando el STATUS,Z. Aún así voy a probar el tuyo.

Los retardos ya se los pondré.

Código:

   ORG    0                  ; El programa comienza en la dirección 0 de memoria de
Inicio                        ; programa.
      bsf      STATUS,RP0         ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
      clrf   PORTB            ; Las líneas del Puerto B se configuran como salidas.
      movlw   b'00011111'
      movwf   PORTA            ; Las líneas del Puerto A se configuran como entradas.
      bcf      STATUS,RP0         ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.

Principal

btfss PORTA,0
goto Loco
goto Principal

Loco
btfsc STATUS,Z ; ¿Es = 0?
goto Enciende
goto Apaga

Enciende
bcf STATUS,Z
bsf PORTB,7
goto Principal

Apaga
bsf STATUS,Z
bcf PORTB,7
goto Principal
END
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Meta
modder
modder



País:
Sexo:
Registrado: 20 enero 2008
Mensajes: 202
Ubicación: http://electronica-pic.blogspot.com

MensajePublicado: Vie, 22 Ago 2008 12:55 pm    Asunto: Responder citando

Probando en Proteus ni en MPLAB 8.14 funciona tu código.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
TheGameMaster
modder
modder



País:
Sexo:
Registrado: 28 julio 2007
Mensajes: 1148

MensajePublicado: Vie, 22 Ago 2008 3:32 pm    Asunto: Responder citando

Meta escribió:
Probando en Proteus ni en MPLAB 8.14 funciona tu código.


eee bueno lo he echo de cabeza, pero en el proteus funciona mal con leds, hay ke ponerle retardos pa ke funcionen.

yo lo probare yo.

salu2!
DADO DE BAJA
Volver arriba
Ver perfil de usuario Enviar mensaje privado
TheGameMaster
modder
modder



País:
Sexo:
Registrado: 28 julio 2007
Mensajes: 1148

MensajePublicado: Vie, 22 Ago 2008 6:27 pm    Asunto: Responder citando

mmm

Meta tienes mal el codigo:

la operacion btfss es una operacion de salto y no afecta a ningun flag, como el Z, ya que este se enciende (o se pone a 1) cuando alguna operacion matemetica es 0.

es decir
Loco
btfsc STATUS,Z ; ¿Es = 0?
goto Enciende
goto Apaga

no te funcionara
DADO DE BAJA
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Kaisermart
modder
modder



País:
Sexo:
Registrado: 14 junio 2006
Mensajes: 611

MensajePublicado: Vie, 22 Ago 2008 8:02 pm    Asunto: Responder citando

TheGameMaster escribió:
mmm

Meta tienes mal el codigo:

la operacion btfss es una operacion de salto y no afecta a ningun flag, como el Z, ya que este se enciende (o se pone a 1) cuando alguna operacion matemetica es 0.

es decir
Loco
btfsc STATUS,Z ; ¿Es = 0?
goto Enciende
goto Apaga

no te funcionara


Yo tb creo que es cierto. Me sonaba raro el código pero como hace la ostia que no programo nada pues como que no dije nada.
Kaisermart
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Meta
modder
modder



País:
Sexo:
Registrado: 20 enero 2008
Mensajes: 202
Ubicación: http://electronica-pic.blogspot.com

MensajePublicado: Sab, 23 Ago 2008 3:55 am    Asunto: Responder citando

Pruébalo en el proteus.

Y eso que no incluí antirrebotes.

Código:
:020000040000FA
:10000000831686011F3085008312051C08280528E9
:1000100003190B280E2803118617052803158613CC
:020020000528B1
:02400E00F13F80
:00000001FF
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
TheGameMaster
modder
modder



País:
Sexo:
Registrado: 28 julio 2007
Mensajes: 1148

MensajePublicado: Sab, 23 Ago 2008 3:57 am    Asunto: Responder citando

si pegas el codigo del mplab mejor, ke no soy como Neo en matrix xD!

jeje
DADO DE BAJA
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Meta
modder
modder



País:
Sexo:
Registrado: 20 enero 2008
Mensajes: 202
Ubicación: http://electronica-pic.blogspot.com

MensajePublicado: Sab, 23 Ago 2008 4:40 am    Asunto: Responder citando

Es el mismo de arriba. Pruébalo en Proteus, en el MPLAB parece que no funciona como uno quiere, pero ponlo en el Proteus y funciona, eso si, no he incluido retardos,,,

Código:

ORG    0                  ; El programa comienza en la dirección 0 de memoria de
Inicio                        ; programa.
      bsf      STATUS,RP0         ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
      clrf   PORTB            ; Las líneas del Puerto B se configuran como salidas.
      movlw   b'00011111'
      movwf   PORTA            ; Las líneas del Puerto A se configuran como entradas.
      bcf      STATUS,RP0         ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.

Principal

   btfss PORTA,0
   goto Loco
   goto Principal

Loco
   btfsc STATUS,Z ; ¿Es = 0?
   goto Enciende
   goto Apaga

Enciende
   bcf STATUS,Z
   bsf PORTB,7
   goto Principal

Apaga
   bsf STATUS,Z
   bcf PORTB,7
   goto Principal
   END
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
TheGameMaster
modder
modder



País:
Sexo:
Registrado: 28 julio 2007
Mensajes: 1148

MensajePublicado: Sab, 23 Ago 2008 2:42 pm    Asunto: Responder citando

vamos a ver Meta, es imposible ke funcione, por varias razones:
- el flag Z del registro Status no se ve afectado por un cambio en el puerto de entrada tanto A como B y por la instruccion BTFSS. Este (Z) solo cambia cuando una operacion aritmetica es 0. Por ejemplo yo lo utilizo para controlar contadores:
Código:

CUENTA
incf CONTADOR,f        ;incremento contador
movlw b'00001111'     ;muevo un literal al W
subfw CONTADOR,w   ;resto el literal del W con el registro CONTADOR
btfss SATUS,Z            ;miro si Z es = a 1
goto CUENTA             ;sin Z no es 1 sigue incrementando
goto OTRA_COSA       ;si Z = 1 sale del bucle y hace otra cosa

Z se debe de borrar por soft: bcf STATUS,Z

Mira en el libro al final uno de los apendices q es donde viene les 35 instrucciones y donde veras ke la instruccion BTFSS no acepta a Z.

Por lo tanto probé tu codigo en proteus y el led parpadea solo. Ensamble tu codigo con Mplab 8.14
Código:


   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
   LIST      P=16F84a
   INCLUDE  <P16F84A>

ORG    0                  ; El programa comienza en la dirección 0 de memoria de
Inicio                        ; programa.
      bsf      STATUS,RP0         ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
      clrf   PORTB            ; Las líneas del Puerto B se configuran como salidas.
      movlw   b'00011111'
      movwf   PORTA            ; Las líneas del Puerto A se configuran como entradas.
      bcf      STATUS,RP0         ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.

Principal

   btfss PORTA,0
   goto Loco
   goto Principal

Loco
   btfsc STATUS,Z ; ¿Es = 0?
   goto Enciende
   goto Apaga

Enciende
   bcf STATUS,Z
   bsf PORTB,7
   goto Principal

Apaga
   bsf STATUS,Z
   bcf PORTB,7
   goto Principal
   END


Prueba el mio que si funciona al 100%
Código:


   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
   LIST      P=16F84a
   INCLUDE  <P16F84A>

   ORG    0
   goto   Inicio

Inicio

   bsf   STATUS,RP0      ; Acceso banco 1.
    clrf    PORTB            ; Las líneas del Puerto B se configuran como salidas.
    movlw b'00011111'
    movwf   PORTA            ; Las líneas del Puerto A se configuran como entradas.
   bcf   STATUS,RP0      ; Acceso banco 0.

Principal
PulsadorEnciende
  call Retardo_20ms        ;espera 20ms para ke pase el rebote
   btfss   PORTA,0            ; ¿Bit 0 del PORTA es "1"?
   goto    PulsadorApaga   ;no  pulsado
   goto    Enciende

PulsadorApaga
   call Retardo_20ms        ;espera 20ms para ke pase el rebote
   btfss   PORTA,0            ; ¿Bit 0 del PORTA es "1"?
   goto    PulsadorEnciende   ;no  pulsado
   goto    Apaga

Enciende
   bsf      PORTB,7
   call Retardo_500ms
   goto   Principal

Apaga
   bcf      PORTB,7
   call Retardo_500ms
   goto   Principal


   INCLUDE <RETARDOS>

   END
   
;   ===================================================================



vamos yo estoy aki pa echarte una mano, si tienes algun problema con los pics en Ensamblador preguntame, ke fijo te sabre ayudar. Te lo digo porke me se el libro de memoria, no es coña, y a los pic 16f84a ya se me han kedado pequeños en memoria y recursos.

Si quieres saber sobre mis proyectos preguntame.

Venga animo y no te desesperes.
Guiño Salu2!
DADO DE BAJA
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Publicar nuevo tema   Responder al tema    Foros de discusión -> Electronica Todas las horas son GMT + 2 Horas
Ir a página   
Página 1 de 2

 
Cambiar a:  

Powered by phpBB.


Este sitio no se hace responsable de ningún daño que cause en su ordenador con la información que en el se expone.Todos los productos y marcas están registrados por sus respectivos propietarios. Prohibida la reproducción total o parcial de los textos e imagenes de esta web sin el consentimiento expreso de su autor.
Hardcore-Modding.com 2001-2019 Los comentarios son propiedad de sus autores (ya sean anonimos o registrados).
Portal basado en NukeET, RSS
Página Generada en: 0,146 segundos

π