Forum: Mikrocontroller und Digitale Elektronik Prüfungsvorbereitung


von Mike (Gast)


Lesenswert?

Hi Leute,

ich hätte ein paar Fragen für meine Prüfungsvorbereitung. Zum einen 
Multiplikation. Nehme folgenden Code an:
1
MOV A, #05h
2
MOV B, #16h
3
MUL A B
Dabei werden die Werte 5d aus A und 22d aus B Multipliziert  = 110d = 
6E.
Wo steht dann das Ergebnis drin? Also wo das Lowbyte, Highbyte und wo 
würde dann ein Midbyte stehen, wäre die Rechnug z.B. #05h * #FFh?

2. Frage: Wie funktioniert Division? Ich nehme an, es ist alles ok wenn 
A den Wert #08h und B #02h beinhalten würde. Dann würde, wenn ich es 
richtig verstanden habe, beim Befehl
1
DIV A B
 in A #00h und in B #04h stehen. Doch wie funktioniert das alles bei 
ungeraden Zahlen? Wird da ab 0,5 aufgerundet?

3. Frage: Der 8051 besitzt das TMOD Register, dieses die Flags "Gate" / 
"C/T(Nicht)". Wofür sind die? Google bringt mit das Ergebnis, dass wenn 
Gate gesetzt ist, der jeweilige Timer nur läuft wenn INT1 high, also 
gesetzt ist. Kann mir das jemand näher erklären?
C/T(Nicht) Bringt: When this bit is set the timer will count events on 
T1 (P3.5). When this bit is clear the timer will be incremented every 
machine cycle. Diesen Satz verstehe ich auch nicht richtig; Welche 
"events" wird der Timer zählen?

Hoffe, ihr könnt mir mit meinen Fragen helfen
Grüße
Mike

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Mike schrieb:

> Wo steht dann das Ergebnis drin?

Das steht im Handbuch deines Prozessors (den wir nicht kennen).

Es gibt da keinen "Standard".

> Doch wie funktioniert das alles bei ungeraden Zahlen?
> Wird da ab 0,5 aufgerundet?

Bei ganzzahliger Division wird immer implizit abgerundet.  Das ist
wie in der Grundstufe in der Schule, wenn du schriftlich dividierst
und dann aufhörst, wenn der ganzzahlige Teil erledigt ist; unter
dem Strich bleibt dann noch der Rest ("Modulus" genannt).

> 3. Frage: Der 8051 besitzt das TMOD Register, dieses die Flags "Gate" /
> "C/T(Nicht)". Wofür sind die?

Damit kenne ich mich nicht aus.

: Bearbeitet durch Moderator
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

(OK, nochmal einen Moment Zeit, das Englische da zu lesen.)

Mike schrieb:

> When this bit is set the timer will count events on T1 (P3.5). When this
> bit is clear the timer will be incremented every machine cycle. Diesen
> Satz verstehe ich auch nicht richtig; Welche "events" wird der Timer
> zählen?

Die "Events" sind Flanken an T1.  Ob fallende oder steigende, ist aus
dem Zitat nicht ersichtlich.  Wenn das Bit also 1 ist, wird der Zähler
vom Eingang T1 getaktet (er arbeitet also als Zähler), wenn das Bit 0
ist, wird er vom internen Takt gesteuert (d. h., er arbeitet als Timer).

Damit ist auch der Name "C/¬T" klar: "counter, not timer".

von Uwe B. (derexponent)


Lesenswert?

wenn es um den 8051 geht :

Mike schrieb:
> Wo steht dann das Ergebnis drin? Also wo das Lowbyte, Highbyte und wo
> würde dann ein Midbyte stehen, wäre die Rechnug z.B. #05h * #FFh?

Das Ergebnis steht in A und B :
A = Lo-Byte
B = Hi-Byte

ein "Mid-Byte" gibt es nicht, das größte Ergebnis :
255*255 = 65025 = FE01h
(hat nur zwei Byte)


Mike schrieb:
> in A #00h und in B #04h stehen. Doch wie funktioniert das alles bei
> ungeraden Zahlen? Wird da ab 0,5 aufgerundet?

auch hier steht das Ergebnis in A und B :
A = Ergebnis (immer abgerundet)
B = Rest der Division

: Bearbeitet durch User
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.