PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro in Assempler



Schmidtzke
05.06.2008, 09:45
hallo ich habe folgendes Problem!! Ich soll ein Asuro programmieren und zwar im Assempler!!

das Thema konnten wir uns selbst aussuchen! Ich dachte eigentlich, das ich mit Linienverfolgung ein leichtes genommen hatte doch nun sehe ich kein Stich mehr!!

Ich habe schon die Macros für die motorsteuerung programmiert und für die LED und Transistoren!! nun ist das Problem was ich habe, wie frage ich das jetzt an den transistoren ab! ich muss ja den Wert von den Transistoren umwandeln in zahlen, welche ich dann beutze um die Motoren zu steuern!! und ich habe keine ahnung wie das geht kann mir da bitte jemand helfen

trapperjohn
05.06.2008, 13:44
Schau dir doch den C-Code der ASURO Library an, daraus lässt sich doch ganz gut ableiten, wie der entsprechende Assembler-Code aussehen müsste.

Bspw. der linke Liniensensor wird per ReadADC(IR_LEFT,0) abgefragt. ReadADC sieht so aus:

unsigned int ReadADC(unsigned int mux, unsigned int sleep)
{
if ((mux) == (BATTERIE))
ADMUX = (1 << REFS0) | (1 << REFS1) | (mux); // interne 2.56V Referenz
else
ADMUX = (1 << REFS0) | (mux); // Referenz mit externer Kapazitaet
if (sleep)
Sleep(sleep);

ADCSRA |= (1 << ADSC); // Starte AD-Wandlung
while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten
;
ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen
return ADC; // Ergebnis als 16-Bit-Wert
}


Die SFRs, die da gesetzt und gelesen werden übernimmst du in Assembler - et voila!

radbruch
05.06.2008, 16:29
Hallo

Prinzipiell würde ich auch die Funktionen aus der Library als Vorlage verwenden und in Assembler übertragen. Dazu sollte man aber etwas C können. Ganz Faule könnten nach dem Kompilieren eines C-Beispiels die .LST-Datei analysieren...

Die Werte der Sensoren schwanken durch Bauteilestreuungen und Fremdlicht. Um die Werte auszugeben müßte man den UART initialisieren und einen PrintInt()-Ersatz in Assembler programmieren. Oder man schaut sich die Werte mit einem C-Programm an und überträgt sie in die Assemblerroutinen.

Gruß

mic

damaltor
05.06.2008, 22:25
Der erste schritt ist, zu wissen dass es "Assembler" und nicht "Assempler" heisst ;)

HAst du überhaupt schonmal mit Assembler gearbeitet? verstehst du den c-code der library soweit, dass du ihn umsetzen könntest?

Schmidtzke
10.06.2008, 14:55
also ich kann bisel damit umgehen!! weiss wie ich die Motoren und LED und alles anspreche