Paso 7: Codificación - las funciones motoras
En primer lugar, crear un nuevo.s archivo para su motricidad. Te está haciendo referencia a estas funciones en nuestro código más adelante, por lo que es bueno meterlas todas en un solo lugar. -Recuerde que en conjunto los valores de entrada a las funciones se pasan en r4, r5, r6, r7 y luego en la pila. Nos va asumiendo que pasarán a la dirección de control del motor con r4.Para ahorrar espacio, solo te refieren a reventar todos y empujando de la pila con el #pop y #push respectivamente. Para aclarar para alguien nuevo en la Asamblea, haciendo estallar y empujando se refiere a guardar registro de datos en memoria para que los registros pueden utilizarse para otra cosa, y poner los valores de vuelta cuando esa cosa se hace :)
.global motors_forward # recuerde la .global! Si no, usted se preguntará por qué no puede utilizar sus funciones.
motors_forward:
#push
movia r9, 0x004000008
stwio r9,0(r4)
#pop
RET
.global motors_forward
motors_reverse:
#push
movia r9, 0x00400000a
stwio r9,0(r4)
#pop
RET
.global motors_forward
motors_stop:
#push
movia r9, 0x004000ff
stwio r9,0(r4)
#pop
RET
.global motors_forward
motors_turn_left:
#push
movia r9, 0x0040000b
stwio r9,0(r4)
#pop
RET
.global motors_forward
motors_turn_right:
#push
movia r9, 0x0040000c
stwio r9,0(r4)
#pop
RET
Ahora, cualquier persona que conozca estos motores dentro y fuera a mencionar ahora que estamos usando sólo una pierna al girar, y que esto es ineficiente. Estoy de acuerdo, y nos contaba con ambas piernas ayudará a la vuelta. Por desgracia nuestras piernas sufrieron de una falta de rigidez, y en superficies de alta fricción (clásico buenas para caminar robots), Hecaton casi quebró a sí mismo. Por lo tanto, nos pegan con una cara vuelta. Siéntase libre modificar esto, o añadir a esto como mejor parezca.
Para mayor comodidad, he incluido el archivo motors.s, que escribimos para nuestro robot a continuación: