Navaismo la idea es hacer una maqueta de un taladro automatico o uns sistema parecido que va emplear 4 motores que pienso controlar con dos bits para cada uno a través del puerto B de un 870 y empleando entradas digitales de interruptores de fin de carrera o detectores ópticos que me entreguen niveles altos o bajos cuando el recorrido es terminado este será el puerto A y parte del puerto C ya que llego a 8 entradasrelicé un programa que estoy viendo y lo estoy checando por partes y he encontrado algunos detalles solo los dos primeros pasos hace y después de aloca con estados generados sin que se den las entradas, si tienen un código en MKB les agradecería me lo facilitarán ya que pretendo hacer en el mismso programa una rutina para un motor siempre y cuando sea posible, anexo el programa que hice, no tengo experiencia en esto pero lo hago por el gusto de hacerlo y aprender,
program Automatismo
main: 'Aquí comienza el programa principal
ADCON1= %00000111 'PUERTA COMO DIGITAL
TRISA = %11111111 'PUERTA COMO ENTRADA
TRISB = %00000000 'PUERTB COMO SALIDA
TRISC = %00000111 'PARTE BAJA ENTRADA ALTA SALIDA
PORTA = 0
PORTB = 0
PORTC = 0
MOV_1:
CLRWDT
IF (PORTA.0=1)AND(PORTA.1=1) THEN
DELAY_MS(500) 'DAMOS PAUSA QUE RETARDA LA ACCION DE LA SALIDA
PORTB = $03
ELSE
GOTO MOV_1
END IF
MOV_2:
CLRWDT
IF (PORTA.2=1)AND(PORTA.3=1) THEN
DELAY_MS(500) 'IGUAL QUE ANTES, SI NO SE PONE LA PAUSA ENTRA INSTANTANEO
PORTB = $0C
ELSE
GOTO MOV_2
END IF
MOV_3:
CLRWDT
IF (PORTA.4=1)AND(PORTA.5=1) THEN
DELAY_MS(500) 'IGUAL QUE ANTES, SI NO SE PONE LA PAUSA ENTRA INSTANTANEO
PORTB = $30
ELSE
GOTO MOV_3
END IF
MOV_4:
CLRWDT
IF (PORTC.0=1)AND(PORTC.1=1) THEN
DELAY_MS(500) 'IGUAL QUE ANTES, SI NO SE PONE LA PAUSA ENTRA INSTANTANEO
PORTB = $C0
ELSE
GOTO MOV_4
END IF
MOV_5:
CLRWDT
IF (PORTC.2=1)THEN
DELAY_MS(500) 'IGUAL QUE ANTES, SI NO SE PONE LA PAUSA ENTRA INSTANTANEO
PORTB = $02
ELSE
GOTO MOV_5
END IF
MOV_6:
CLRWDT
IF (PORTA.1=1)THEN
DELAY_MS(500) 'IGUAL QUE ANTES, SI NO SE PONE LA PAUSA ENTRA INSTANTANEO
PORTB = $10
ELSE
GOTO MOV_6
END IF
MOV_7:
CLRWDT
IF (PORTA.5=1)THEN
DELAY_MS(500) 'IGUAL QUE ANTES, SI NO SE PONE LA PAUSA ENTRA INSTANTANEO
PORTB = $20
ELSE
GOTO MOV_7
END IF
MOV_8:
CLRWDT
IF (PORTA.3=1)THEN
DELAY_MS(500) 'IGUAL QUE ANTES, SI NO SE PONE LA PAUSA ENTRA INSTANTANEO
PORTB = $40
ELSE
GOTO MOV_8
END IF
MOV_9:
CLRWDT
IF (PORTC.1=1)THEN
DELAY_MS(50) 'IGUAL QUE ANTES, SI NO SE PONE LA PAUSA ENTRA INSTANTANEO
PORTB = $00
ELSE
GOTO MOV_9
END IF
GOTO MOV_1
END.
tal vez no sea la forma más práctica de hacerlo pero estoy a disposición de realizar cambios que me puedan señalar, un saludo ..........Gracias