Diego,
Para hacer esas conversiones desde el teclado hasta la orden que el pic le tiene que dar al motor, Lo primero que debes es aveiguar es de cuantos grados por paso es tu motor... si puedes y lo tienes mandame el datasheet del motor para orientarte mejor, de todos modos trataré de explicarte desde aqui....
Un motor comun que se puede encontrar en algunas impresoras es de 1,8* o de 2,5* etc por paso...
Un ejemplo en este momento es hacer que un motor de 1,8 grados por paso de 360 grados osea una vuelta completa..
siendo esto asi, el motor deberia dar 200 pasos fijate que un paso son 1,8 grados entonces 360 grados son 200 pasos...
al tener esos datos es facil sacar las cuentas por ejemplo tu puedes colocar al motor en 18 grados si le mandas a dar 10 pasos... para colocarlo en 15 exactamente podrias pero te complicarias pero si le dices que de 8 pasos se colocará en 14,4 grados... y asi sucecivamente....
una subrutina para mover estos motorcitos sin muchas complicaciones seria:
ejemplo si el motor esta conectado al puerto D desde D0-D3:
D0 D1 D2 D3
0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0
AL CONCLUIR ESTO EL MOTOR HABRA GIRADO 1,8 GRADOS, esto tambien depende del tipo de motor, donde un paso es una de esas 4 ordenes OK?
hacia el otro lado seria:
D0 D1 D2 D3
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Entonces tu solo debes sacar las cuentas de cuantas veces debes hacer esto para que el motor se posicione donde quieres...
un ejemplito
primero debes carcar en W la cantidad de 1,8 grados que quieres que de el motor, en este caso se supone que lo quieres colocar en 180 grados de su posición inicial, osea donde se encuentre...¡¡
cargas en W el valor ingresado desde el teclado, caes (call muevelo) en esta subrutina y lo demas es cuento de niños
muevelo movwf grados
again bcf portd,3
bsf portd,0
call retard
bsf portd,1
bcf portd,0
call retard
bsf portd,2
bcf portd,1
call retard
bsf portd,3
bcf portd,2
call retard
decfsz grados,1
goto again
return
Aqui ya dio los pasos que tu querias
Lo que debes hacer entonces es tomar un valor desde el teclado externo, pasarlo a W y entrar en esta subrutina.....
ojo Retard es una subrutina de tiempo o retardo como le llames la cual hace que la transicion entre los pasos internos del motor no sea lo enormemente rápida como para que nisiquiera se mueva el motor.....
cuando logres hacer esto de derecha a izquierda a los grados que quieras te sentiras mejor.... jajajajajaja luego te diré como cambiarle la velocidad del giro dese el teclado también, pero primero haz esto... espero no te desiluciones y sigas trabajando en esto.¡¡