Hab ein Problem. Aufgabe: Für den 8051 Mikoprozessor soll ein Programm entworfen werden, das einen gewichteten Mittelwert von 3 Input-Ports berechnet werden und auf den einzigen noch freien Port ausgibt. Die Eingabekanäle für die Variablen X0,X1,X2 sind die entsprechenden Ports P1,P2,P3. Die Messwerte der Eingabekanäle werden von A/D-Umsetzern mit 7Bit Auflösung gespeist. (Lösungshinweise: Die LSB der Eingabesignale stimmen mit den LSB der Ports überein. Die Darstellung der Messwerte ist vorzeichenlos. Die Ausgabe Y erfolgt auf dem noch freien Port. Beachten Sie erforderliche Maskierung! Die Multiplikation mit 2 ist durch den RLC-Befehl zu implementieren.) Wie mach ich sowas???? Die Formel dafür :-) Y= (X0-9*X2-2*X1) / 11 Hab leider keinen Ahnung davon und muss es für ein Referat fertig machen. Danke für eure Hilfe.
Du musst die Formel "von innen heraus" entwickeln.
> Y= (X0-(9*X2)-(2*X1)) / 11
Du liest X0, X1 und X2 erstmal in 3 Register ein.
X1 wird nun rechts rotiert(das ist die Multiplikationsgeschichte).
X2 wird in ein weiteres Register gerettet, ich nenne es mal X2a.
X2 wird dreimal rechts rotiert(= mal 8).
Zu X2 wird nun X2a hinzuaddiert(jetzt sind es 9 mal das alte X2).
Von X0 wird erst X1 und dann X2 abgezogen.
Von X0 wird in einer Schleife sooft 11 abgezogen, wie der Registerinhalt
größer 10 ist(das ist die Division). Für die bedingte Sprunganweisung
brauchst du ein weiteres Register, in das der für den aktuellen
Schleifendurchlauf gültige Wert von X0 gerettet wird, 10 abgezogen wird
und auf größer 0 geprüft wird(brhi->anfang schleife). zusätzlich
brauchst du ein Register zum Zählen der Schleifendurchläufe.
Um die tatsächliche Implementierung musst du dich nun selbst kümmern.
Dieses Forum ist kein Hausaufgabenlösungsautomat.
mfg mf
So also? clr A clear akku clr C clear carry mov A,P1 lade P1=X1 in akku LLC A multipliziere akku mit 2 mov R1,A sicher akku in R1 mov A,#9 lade 9 in akku mov B,A sicher akku in B mov A,P2 lade P2=X2 in akku mul AB multipliziere A mit B mov R2,A sicher akku in R2 mov A,P0 lade P0=X0 in akku clr C clear carry subb A,R1 subtrarie vom akku R1 subb A,R2 subtrariere vom akku R2 mov B,#11 lade 11 in B div AB teile akku durch B mov P3,A ausgabe von akku an port 3
Doppelt hält besser? Viel hilft viel? Warum postest Du doppelt? Kann ein Admin einen Thread schließen? V. D.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.