TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: fanloeb 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!
-
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