Autor Tema: Generar dos pulsos con mismo boton  (Leído 243 veces)

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

Desconectado fanloeb

  • PIC10
  • *
  • Mensajes: 8
Generar dos pulsos con mismo boton
« en: 20 de Abril de 2017, 23:19:03 »
Hola buenas noches. Como el título lo describe, necesito generar dos pulsos negativos a partir de un pulso, también negativo. Es para la central de la alarma del auto. Y la cuestión es que la tecla original tira un solo pulso para trabar y destrabar (como lee el estado de la central del cierre sabe si debe trabar o destrabar) pero al ser una alarma no original usan dos pulsos.. Mi pregunta es como puedo hacer , la cuestión sería que presione una vez y tire un pulso por un cable y si vuelvo a presionar lo haga por otro cable.
Traté de hacer un código, pero no tengo éxito, soy nuevo en los pics y realmente no entiendo cual es el error.
CMCON = 7
abierto var portb.7  ;la central envía un pulso positivo
cerrado var portb.6  ;la central envia un pulso positivo
boton var portb.0    ;swith que traba/destraba
abre var portb.1     ;pulso de salida para destrabar
cierra var portb.3   ;pulso de salida para trabar
estado var portb.2 ;indica con un led el estado de la central  (si está trabado se enciende)
conteopulsos var byte   ;contador de pulsos
rebote var byte
inicio:            ;inicio del programa
if abierto = 0 then  ;pregunta si abierto está en alto
high estado          ;salida a led estado
endif
if cerrado = 1 then  ; pregunta si cerrado está en alto
low estado           ; apaga led estado
endif

Contar:             ;rutina de conteo
conteopulsos = 0     ;conteo está en 0
if boton = 0 then   
endif

    if rebote = 0 then
    conteopulsos = conteopulsos + 1   ;suma un 1 a conteopulsos
    rebote = 0
    endif
    if conteopulsos = 1 then   ;si conteopulsos es 1 enciende salida "cierra"
    high cierra                ; encendio "cierra"
    pause 250                  ;espera 250 milisegundos
    low cierra                 ;apaga "cierra"
    endif
    if conteopulsos = 2 then   ,si conteopulsos es 2 enciende salida #abre
    rebote = 0
    high abre                  ;encendio "abre"
    pause 250                  ; espera 250 milisegundos
    low abre                   ;apaga "abre"

    endif
    rebote = 1

 

    goto inicio                 ;vuelve al inicio


es lo que logro hacer desde mi poco conocimiento, y no alcanza para hacer funcionar un código quizás muy simple..
Cual/es podrían ser los errores?
Gracias!

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3296
    • PICKEY ELECTRÓNICA
Re:Generar dos pulsos con mismo boton
« Respuesta #1 en: 06 de Mayo de 2017, 16:36:24 »
Si todavía te sirve:

'Define SIMULATION_WAITMS_VALUE = 10
AllDigital
CMCON = 7
Symbol abierto = PORTB.7  'la central envía un pulso positivo
Symbol cerrado = PORTB.6  'la central envía un pulso positivo
Symbol boton = PORTB.0  'swith que traba / destraba
Symbol abre = PORTB.1  'pulso de salida para destrabar
Symbol cierra = PORTB.3  'pulso de salida para trabar
Symbol estado = PORTB.2  'indica con un led el estado de la central (si está trabado se enciende)
Dim conteopulsos As Byte  'contador de pulsos
Dim rebote As Byte

conteopulsos = 0
rebote = 0

inicio:  'inicio del programa
   If abierto = 0 Then  'pregunta si abierto está en alto
      High estado  'salida a led estado
   Endif
   If cerrado = 1 Then  'pregunta si cerrado está en alto
      Low estado  'apaga led estado
   Endif

   'rutina de conteo
   'conteopulsos = 0  'conteo está en 0
   If boton = 0 Then
      conteopulsos = conteopulsos + 1
      rebote = 0
   Endif

   'If rebote = 0 Then
      'conteopulsos = conteopulsos + 1  'suma un 1 a conteopulsos
      'rebote = 0
   'Endif
   If conteopulsos = 1 And rebote = 0 Then  'si conteopulsos es 1 enciende salida "cierra"
      High cierra  'encendio "cierra"
      WaitMs 250  'espera 250 milisegundos
      Low cierra  'apaga "cierra"
      rebote = 1
   Endif
   If conteopulsos = 2 Then  'si conteopulsos es 2 enciende salida #abre
      'rebote = 0
      High abre  'encendio "abre"
      WaitMs 250  'espera 250 milisegundos
      Low abre  'apaga "abre"
      conteopulsos = 0
   Endif
   'rebote = 1

Goto inicio  'vuelve al inicio
Saludos desde Granada, España.


 

anything