TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: rnelson en 07 de Enero de 2010, 21:20:45
-
Ante todo un cordial saludo,
El siguiente Codigo trata de una tarjeta que controla banda transportadora donde tiene un sensor al inicio y al final (PortB2 y Portb3), para saber que llego a los extremos, y un boton en Porta1 que cuando se activa debe abrir unos reles conectados en los puertos Porta2 y Porta3, la apertura de estos rele va a depender de que sensor este activado, por ejemplo si esta activado el sensor abierto (Portb2) debe accionar el rele de cerrar (Porta3) y viceversa.
El tema es que lo estoy tratando de simular en el proteus y no hace nada, y lo quisiera simularen el microcode pero no tengo ni idea de como se hace.
En lo que me puedan ayudar a conseguir el error se los agradezco.
DEFINE Osc 4 'Definicion de Oscilador
AB var byte
CE var byte
TRISA = %00010 'Puerto A como salida
TRISB = %00000000 'Puerto B como salida
PORTA = 0 'inicializado los puertos
PORTB = 0
ab = 0
ce = 0
SYMBOL ENTRADA = PORTA.1
SYMBOL RELEABRE = PORTA.2
SYMBOL RELECIERRE = PORTA.3
SYMBOL SABIERTO = PORTB.2
Symbol SCERRADO = PORTB.3
SYMBOL DIP1 = PORTB.4
SYMBOL DIP2 = PORTB.5
SYMBOL DIP3 = PORTB.6
SYMBOL DIP4 = PORTB.7
inicio:
IF entrada = 1 THEN
CALL CONSULTAs
else
goto inicio
endif
Consultas:
if sabierto = 0 or scerrado = 0 then
call medio
if sabierto = 1 or ab = 1 then
call cerrar
if scerrado = 1 or ce = 1 then
call abre
endif
endif
endif
return
Medio:
low releabre
low relecierre
if ab = 1 then
call cerrar
if ce = 1 then
call abre
pause 500
endif
endif
return
Cerrar:
ab = 0
while scerrado = 0
high relecierre
wend
ce = 1
return
Abre:
ce = 0
pause 1000
while sabierto = 0
high releabre
wend
ab = 1
return
end
-
Asi en la primera ojeada me ha entrado una duda: como haces para controlar un rele con dos pines? A mi entender activando la salida activas el rele y desactivando la salida desactivas el rele no? O acaso hay mas de un rele?
Por otra parte he visto que pones esto:
if sabierto = 0 or scerrado = 0 then
call medio
if sabierto = 1 or ab = 1 then
call cerrar
if scerrado = 1 or ce = 1 then
call abre
endif
No se si en el compilador que usas tu sera asi, pero despues del primer IF los siguientes (segundo y tercero) deberian de ser elseif no? Y ese "fallo" lo he visto varias veces en diferentes subrutinas. Prueba a cambiarlo y a robar suerte! :D
Un saludo!
-
Gracias por tu respuesta.
En efecto son dos rele lo que se conectaran al pic, y ya me funciono, lo unico que hice fue cambiar los pines de entradas al pueto B, y todo funciono bien, ahora porque no me funcionaba con las entradas en el puerto A?, no se.
El compilador que uso es el Microcode plus, ysi lo permite asi.
De todas formas muchisimas gracias por tus consejos nunca estan de mas
Saludos..