TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: poeta3d en 06 de Abril de 2012, 19:40:48
-
Tengo este programa:
TRISA.0=0
TRISA.1=0
TRISA.2=0
TRISA.3=0
TRISA.4=1
TRISA.5=1
TRISA.6=1
TRISA.7=1
SYMBOL SALIDA1=PORTA.0
SYMBOL SALIDA2=PORTA.1
SYMBOL SALIDA3=PORTA.2
SYMBOL SALIDA4=PORTA.3
SYMBOL BOTON1=PORTA.4
SYMBOL BOTON2=PORTA.5
SYMBOL BOTON3=PORTA.6
SYMBOL BOTON4=PORTA.7
INICIO:
WHILE BOTON1=1
GOSUB SALIDAS1
WEND
WHILE BOTON1=1 AND BOTON2=1
GOSUB SALIDAS2
WEND
GOSUB INICIO
SALIDAS1:
SALIDA1=1
SALIDA2=0
SALIDA3=0
SALIDA4=0
RETURN
SALIDAS2:
SALIDA1=1
SALIDA2=1
RETURN
SALIDAS3:
SALIDA1=1
SALIDA2=1
SALIDA3=0
SALIDA4=1
RETURN
SALIDAS4:
SALIDA1=0
SALIDA2=1
SALIDA3=0
SALIDA4=1
RETURN
Para no complicarme he hecho el circuito en proteus el 16f882 tiene entradas por medio de unos botones y las salidas van a un uln2003 que maneja un motor paso a paso y solo he probado la entrada1 y se me activa la salida sola sin que apriete el boton, yo lo veo bien al programa diganme si hay algo que le falte por favor.
-
Prueba de esta manera:
Define CONF_WORD = 0x23c4 'Configuración de fuses
Define CONF_WORD_2 = 0x3eff 'Configuración de fueses
AllDigital 'Indica que las entradas que pueden trabajar por defecto como analogicas, trabajarán como digitales.
TRISA.0 = 0
TRISA.1 = 0
TRISA.2 = 0
TRISA.3 = 0
TRISA.4 = 1
TRISA.5 = 1
TRISA.6 = 1
TRISA.7 = 1
Symbol salida1 = PORTA.0
Symbol salida2 = PORTA.1
Symbol salida3 = PORTA.2
Symbol salida4 = PORTA.3
Symbol boton1 = PORTA.4
Symbol boton2 = PORTA.5
Symbol boton3 = PORTA.6
Symbol boton4 = PORTA.7
main:
While boton1 = 1
Gosub salidas1
Wend
While boton1 = 1 And boton2 = 1
Gosub salidas2
Wend
Gosub main
End 'El manual es claro, hay que ponerlo.
salidas1:
salida1 = 1
salida2 = 0
salida3 = 0
salida4 = 0
Return
salidas2:
salida1 = 1
salida2 = 1
Return
salidas3:
salida1 = 1
salida2 = 1
salida3 = 0
salida4 = 1
Return
salidas4:
salida1 = 0
salida2 = 1
salida3 = 0
salida4 = 1
Return
-
EN CONF_WORD SE PUEDE PONER EN DECIMAL O EN BINARIO?? NO ME AGRADA MUCHO EL HEXADECIMAL.me suigue pasando lo mismo el pin RA0 se pone a uno solo, cuando lo simulo y el motor gira sin que apriete ningun boton. tenganme pacienciaa porfa que soy re novato en pic basic pro.
-
He corregido un par de fallos, prueba de nuevo.
En teoria puedes poner la palabra de configuración (CONF_WORD...2) como quieras, pero en este caso no se recomienda porque no aclaras nada y el PSI ya la inserta de forma automática en hex. Pero como tu quieras.
Define CONF_WORD = 0x23c4 'Configuración de fuses
Define CONF_WORD_2 = 0x3eff 'Configuración de fueses
AllDigital 'Indica que las entradas que pueden trabajar por defecto como analogicas, trabajarán como digitales.
TRISA.0 = 0
TRISA.1 = 0
TRISA.2 = 0
TRISA.3 = 0
TRISA.4 = 1
TRISA.5 = 1
TRISA.6 = 1
TRISA.7 = 1
TRISB = 0
TRISC = 0
Symbol salida1 = PORTA.0
Symbol salida2 = PORTA.1
Symbol salida3 = PORTA.2
Symbol salida4 = PORTA.3
Symbol boton1 = PORTA.4
Symbol boton2 = PORTA.5
Symbol boton3 = PORTA.6
Symbol boton4 = PORTA.7
main:
While boton1 = 1 And boton2 = 0
Gosub salidas1
Wend
While boton1 = 1 And boton2 = 1
Gosub salidas2
Wend
Goto main 'Gosub main
End 'El manual es claro, hay que ponerlo.
salidas1:
salida1 = 1
salida2 = 0
salida3 = 0
salida4 = 0
Return
salidas2:
salida1 = 1
salida2 = 1
Return
salidas3:
salida1 = 1
salida2 = 1
salida3 = 0
salida4 = 1
Return
salidas4:
salida1 = 0
salida2 = 1
salida3 = 0
salida4 = 1
Return
PD: Lo he simulado con el PSI y no da fallos.
-
BUENO YO LO SIMULO EN PROTEUS Y LA SALIDA RA0 SE SIGUE ACTIVANDO SOLA
-
adjunto archivo mostrando como se activa sola la patita de RA0 y como gira solo el motor
-
¿Donde están las resistencias de polarización de las teclas?.
-
bueno, probe con un 16F84 y me pasa lo mismo RA0 se activa sola sin apretar ningun pulsador, esto me lleva a pensar que esta mal el programa. Alguien me puede ayudar?? gracias por las respuestas pero el problema sigue.
Aqui esta el programa con un 16f882 quiero mover un motor por medio de un uln2003a pulsando un boton pero la salida RA0 del 16f882 se activa sola sin que presione el boton.
Define CONF_WORD = 0x23c4 'Configuración de fuses
Define CONF_WORD_2 = 0x3eff 'Configuración de fueses
AllDigital 'Indica que las entradas que pueden trabajar por defecto como analogicas, trabajarán como digitales.
TRISA.0 = 0
TRISA.1 = 0
TRISA.2 = 0
TRISA.3 = 0
TRISA.4 = 1
TRISA.5 = 1
TRISA.6 = 1
TRISA.7 = 1
TRISB = 0
TRISC = 0
Symbol salida1 = PORTA.0
Symbol salida2 = PORTA.1
Symbol salida3 = PORTA.2
Symbol salida4 = PORTA.3
Symbol boton1 = PORTA.4
Symbol boton2 = PORTA.5
Symbol boton3 = PORTA.6
Symbol boton4 = PORTA.7
main:
While boton1 = 1 And boton2 = 0
Gosub salidas1
Wend
While boton1 = 1 And boton2 = 1
Gosub salidas2
Wend
Goto main 'Gosub main
End 'El manual es claro, hay que ponerlo.
salidas1:
salida1 = 1
salida2 = 0
salida3 = 0
salida4 = 0
Return
salidas2:
salida1 = 1
salida2 = 1
Return
salidas3:
salida1 = 1
salida2 = 1
salida3 = 0
salida4 = 1
Return
salidas4:
salida1 = 0
salida2 = 1
salida3 = 0
salida4 = 1
Return
-
Te recomiendo que preguntes directamente en el foro de Simuladores.
http://www.todopic.com.ar/foros/index.php?board=22.0
PD. Veo que ya preguntaste, es cuestión de esperar a ver si te puede ayudar alguien.
-
logre que el motor gire 45 grados. Pero ya no me gira mas que eso.aqui esta el programa:
TRISA.0=0
TRISA.1=0
TRISA.2=0
TRISA.3=0
SYMBOL PULSADOR1=PORTB.0
SYMBOL PULSADOR2=PORTB.1
SYMBOL SALIDA1=PORTA.0
SYMBOL SALIDA2=PORTA.1
SYMBOL SALIDA3=PORTA.2
SYMBOL SALIDA4=PORTA.3
INICIO:
SALIDA1=0 'esto se lo agregue y me permitio que gire 45 grados
IF PULSADOR1=1 THEN
GOTO SALIDAS1
ENDIF
IF PULSADOR1=0 THEN
GOTO SALIDAS1A
ENDIF
IF PULSADOR1=1 && PULSADOR2=1 THEN
GOSUB SALIDAS2
ENDIF
IF PULSADOR1=0 && PULSADOR2=0 THEN
GOSUB SALIDAS1A
ENDIF
END
GOSUB INICIO
SALIDAS1:
SALIDA1=1
SALIDA2=0
SALIDA3=0
SALIDA4=0
RETURN
SALIDAS1A:
SALIDA1=0
SALIDA2=0
SALIDA3=0
SALIDA4=0
RETURN
SALIDAS2:
SALIDA1=1
SALIDA2=1
SALIDA3=0
SALIDA4=0
RETURN
pero salidas2 no me funciona