Autor Tema: PROBLEMA CON PROGRAMA PARA PIC16F882 Y PROTEUS.  (Leído 2886 veces)

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

Desconectado poeta3d

  • PIC10
  • *
  • Mensajes: 33
PROBLEMA CON PROGRAMA PARA PIC16F882 Y PROTEUS.
« 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.
« Última modificación: 10 de Abril de 2012, 12:46:08 por dogflu66 »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PROBLEMITA CON 16F882 Y PROGRAMA
« Respuesta #1 en: 06 de Abril de 2012, 21:27:08 »
Prueba de esta manera:

Código: [Seleccionar]
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
Saludos desde Granada, España.

Desconectado poeta3d

  • PIC10
  • *
  • Mensajes: 33
Re: PROBLEMITA CON 16F882 Y PROGRAMA
« Respuesta #2 en: 06 de Abril de 2012, 21:59:34 »
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.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PROBLEMITA CON 16F882 Y PROGRAMA
« Respuesta #3 en: 07 de Abril de 2012, 08:15:13 »
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.

Código: [Seleccionar]
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.
Saludos desde Granada, España.

Desconectado poeta3d

  • PIC10
  • *
  • Mensajes: 33
Re: PROBLEMITA CON 16F882 Y PROGRAMA
« Respuesta #4 en: 07 de Abril de 2012, 10:37:36 »
BUENO YO LO SIMULO EN PROTEUS Y LA SALIDA RA0 SE SIGUE ACTIVANDO SOLA

Desconectado poeta3d

  • PIC10
  • *
  • Mensajes: 33
Re: PROBLEMITA CON 16F882 Y PROGRAMA
« Respuesta #5 en: 07 de Abril de 2012, 11:08:35 »
adjunto archivo mostrando como se activa sola la patita de RA0 y como gira solo el motor

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PROBLEMITA CON 16F882 Y PROGRAMA
« Respuesta #6 en: 07 de Abril de 2012, 18:47:26 »
¿Donde están las resistencias de polarización de las teclas?.
Saludos desde Granada, España.

Desconectado poeta3d

  • PIC10
  • *
  • Mensajes: 33
PROBLEMA CON PROGRAMA PARA PIC16F882 Y PROTEUS.
« Respuesta #7 en: 08 de Abril de 2012, 06:31:30 »
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.

Código: [Seleccionar]
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
« Última modificación: 10 de Abril de 2012, 12:24:04 por dogflu66 »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PROBLEMA CON PROGRAMA PARA PIC16F882 Y PROTEUS.
« Respuesta #8 en: 10 de Abril de 2012, 12:49:20 »
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.
« Última modificación: 10 de Abril de 2012, 14:17:47 por dogflu66 »
Saludos desde Granada, España.

Desconectado poeta3d

  • PIC10
  • *
  • Mensajes: 33
Re: PROBLEMA CON PROGRAMA PARA PIC16F882 Y PROTEUS.
« Respuesta #9 en: 12 de Abril de 2012, 12:29:26 »
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