TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: RODOLFIN HPM en 31 de Julio de 2018, 22:31:39
-
Hola amigos.
AYUDENME. :lol:
Quiero enlazar dos o más PICs 16F628A para que trabajen de manera sincronizada con mikroBasic, para duplicar o triplicar el numero de salidas y entradas. Este código es para el PIC 1, el PIC 2 tiene otro tanto de instrucciones. En total requiero 40 entradas y 30 salidas aproximadamente.
¿Sera posible lograrlo?, gracias.
SYMBOL CERRAR = PORTB.0 'renombramos el pin 0 del puerto B
SYMBOL ABRIR = PORTB.1 'renombramos el pin 1 del puerto B
SYMBOL EJECTF = PORTB.2 'renombramos el pin 2 del puerto B
SYMBOL EJECTR = PORTB.3 'renombramos el pin 3 del puerto B
SYMBOL PRESION = PORTB.7 'renombramos el pin 7 del puerto B
SYMBOL VEAPIC2 = PORTA.6 'renombramos el pin 6 del puerto A
main: ' Main program
CMCON = 7 ' PIC operando en forma digital
TRISA = %00011111 'configurando los pines del puerto A en I/O
TRISB = %00000000 ' Todos los pines del puerto B son salidas
PORTB = 0 ' se ponen en cero todas las salidas del puerto B
IF PORTA.4 = 1 THEN '¿está mandando señal PIC2?
GOTO CLOSE 'si, ve a CLOSE
ELSE GOTO AUX5 'no, ve a AUX5
END IF
CLOSE:
IF PORTA.0 = 1 THEN '¿está el boton CLOSE accionado?
GOTO AUX1 'si, ve a AUX1
ELSE PORTB = 0 'no, se ponen en cero todas las salidas del puerto B
GOTO OPEN 've a OPEN
END IF
AUX1:
CERRAR = 1 'cierra la prensa
PRESION = 1 'aplica PRESION en el sistema
GOTO CLOSE 'regresa a CLOSE
OPEN:
IF PORTA.1 = 1 THEN '¿está el boton OPEN accionado?
GOTO AUX2 'si, ve a AUX2
ELSE PORTB = 0 'no, se ponen en cero todas las salidas del puerto B
GOTO EJECTORF 've a EJECTORF
END IF
AUX2:
ABRIR = 1 'abre la prensa
PRESION = 1 'aplica PRESION en el sistema
GOTO OPEN 'regresa a OPEN
EJECTORF:
IF PORTA.2 = 1 THEN '¿está el boton de EJECT. FWD accionado?
GOTO AUX3 'si, ve a AUX3
ELSE PORTB = 0 'no, se ponen en cero todas las salidas del puerto B
GOTO EJECTORR 've a EJECTORR
END IF
AUX3:
EJECTF = 1 'empuja ejector
PRESION = 1 'aplica PRESION en el sistema
GOTO EJECTORF 'regresa a EJECTORF
EJECTORR:
IF PORTA.3 = 1 THEN '¿está el boton de EJECT. RET accionado?
GOTO AUX4 'si, ve a AUX4
ELSE PORTB = 0 'no, se ponen en cero todas las salidas del puerto B
GOTO AUX5 've a AUX5
END IF
AUX4:
EJECTR = 1 'retrae el ejector
PRESION = 1 'aplica PRESION en el sistema
GOTO EJECTORR 'regresa a EJECTORR
AUX5:
VEAPIC2 = 1 've a PIC2
end.
-
Que tal, si es posible. Pero cual es tu aplicacion final? Ya que hay algunos circuitos integrados que te proveen de mas salidas de manera serial.
Saludos
-
Hola. La aplicación es para automatizar una inyectora para plástico.
gracias por tu atención.
-
Tal como lo menciona pinolillo16, creo que la mejor opción sería usar el MCP23017 que es un expansor de 16 puertos de entrada-salida por I2C y pueden colocarse hasta 8 de estos en el mismo bus permitiendo así tener hasta 128 puertos de entrada salida.
Espero eso te sirva.
Elreypic
-
Trabajo en un proyecto igual, cuáles son tus pasos a seguir.? Y también porque ese micro? Es muy limitado en cuanto a control. Con lo que he avanzado utilizaré 6 micros para tareas distintas y los comunico vía I2C.