Forum: Mikrocontroller und Digitale Elektronik 8051 Programm schreiben


von Axel (Gast)


Lesenswert?

Die Formel dafür :-)
Y= (X0-9*X2-2*X1) / 11


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????


Vielen Dank für eure Hilfe

von Andreas B. (andreasb)


Lesenswert?

Ich glaube nicht das hier deine Hausaufgaben gelöst werden.

Du solltest das Skript lesen, das du mit ziemlicher Sicherheit von 
deinem Dozent gekriegt hast, dann löst du deine Aufgaben selbst, oder 
wenn es Probleme gibt kannst du hier fragen, die werden dann auch meist 
beantwortet.

Anderer Post von Alex:
Beitrag "8051 Programm schreiben"



mfg Andreas

von Axel (Gast)


Lesenswert?

Wie geh ich da überhaupt vor??

von Lehrer (Gast)


Lesenswert?

Axel schrieb:
> Wie geh ich da überhaupt vor?

Zum Unterricht gehen und aufpassen.

von Tipgeber (Gast)


Lesenswert?

Du brauchst keine Math-Lib dazulinken,

das geht mit ein paar ASM-Befehlen locker, der 8051 kennt "div" und 
"mul",
(nicht für "mal 2" hernehmen) und mit den vorgegebenen Größen
geht es mit den vorhandenen ASM-Befehlen.

Und nun bitte selber! denken.

von Axel (Gast)


Lesenswert?

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

von Axel (Gast)


Lesenswert?

Na. Keine Antwort?

von Peter D. (peda)


Lesenswert?

Axel schrieb:
> Y= (X0-9*X2-2*X1) / 11

9*X2 überschreitet 8Bit, d.h. die Rechnungen müssen 16bittig erfolgen.
Die 12Bit/4Bit Division ist etwas tricky, wenn man den Divisionsbefehl 
verwenden will.
Auch kann es ein negatives Ergebnis geben, d.h. vor der Division muß 
eine Betragsbildung erfolgen und danach das Vorzeichen wieder 
hinzugefügt werden.


Peter

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
Noch kein Account? Hier anmelden.