Stap 7: Codering - de motorische functies
Ten eerste, het maken van een nieuwe.s bestand voor uw motorische functies. Wij zullen worden verwijzingen naar deze functies in onze code later, dus het is leuk om ze allemaal op een plaats. -Niet vergeten dat in de vergadering invoerwaarden tot functies worden doorgegeven in de r4, r5, r6, r7, en vervolgens op de stack. Wij zullen ervan uit dat het adres van de motorische controle zal worden doorgegeven met de r4.Om ruimte te besparen, zal ik gewoon verwijzen naar alle popping en duwen van de stapel met #pop & #push respectievelijk. Om te verduidelijken voor iedereen nieuwe vergadering, verwijst popping en duwen naar het opslaan van registergegevens op geheugen, zodat de registers kunnen worden gebruikt voor iets anders, en zetten de waarden terug toen dat er iets anders gebeurt :)
.Global motors_forward # REMEMBER THE .global! Als u dat niet doet, zult u zich afvragen waarom u uw functies niet gebruiken.
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
Nu, wie kent deze motoren binnen en uit noem nu dat we alleen gebruik van een been maken instellen bij het draaien, en dat dit is inefficiënt. Ik ben het eens, en oorspronkelijk hadden we beide benen helpen bij het draaien. Helaas onze benen leed aan een gebrek aan stevigheid en op hoge wrijving oppervlakken (klassiek goed voor wandelen van robots), Hecaton bijna scheurde zelf uit elkaar. Dus, we zitten met een dubbelzijdige beurt. Voel je vrij om dit te wijzigen of toevoegen aan dit, zoals u goeddunkt.
Voor het gemak heb ik het motors.s-bestand die we voor onze robot hieronder schreven opgenomen: