Forum: Mikrocontroller und Digitale Elektronik MSP-430 fragen


von Ewald (Gast)


Lesenswert?

Hallo,

programmiere zur Zeit mit dem MSP 430 und habe dazu folgende Fragen:

Mainloop  xor.b    #001h,&P1OUT
    mov.w    #010000,R15
L1    dec.w    R15
    jn(u)z    L1
    jmp    Mainloop

Was sind hierbei  mnemonischer Code und Operationscode?
Wir schreib ich dieses Programm als Codesequenz in C?

Vielen Dank im voraus

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ewald schrieb:
> Was sind hierbei  mnemonischer Code und Operationscode?

http://de.wikipedia.org/wiki/Assemblersprache

Ewald schrieb:
> Wir schreib ich dieses Programm als Codesequenz in C?

Brian Kernighan & Dennis Ritchie, "Programmieren in C", 2. Auflage, 
Hanser-Verlag

von Johnny B. (johnnyb)


Lesenswert?

Kenn mich in Assembler nicht so aus, aber in C programmierst Du einen 
Main Loop z.B. so:

while(1)
{
  // Hier Dein Code...
}

von R2D2 (Gast)


Lesenswert?

Lass mich raten: Das ist eine Hausaufgabe. Ich wüsste nicht, wie du 
sonst auf die Fragen kommst.

von Ewald (Gast)


Lesenswert?

nein, ich schreib eine Arbeit, und der Lehrer hat das in einer alten 
klausur gefragt.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

>Mainloop  xor.b    #001h,&P1OUT
Ein byteweise XOR wird ausgeführt. Das Register P1OUT ist Quelle und 
Ziel, die Konstante 0x01 ist Quelle. Das hat den Effekt, dass das Bit 0 
in P1OUT getoggelt wird. Das hat allerdings keinen Effekt, wenn nicht 
zuvor der Entsprechende Pin als Ausgang gesetzt wurde.

>mov.w    #010000,R15

Es wird die Konstante 10000 in das Registerpaar R16:R15 kopiert.

>L1    dec.w    R15

Der Wert im Registerpaar R16:R15 wird um eins verringert.

>jn(u)z    L1

Wenn das vorherige dec.w kein zero gesetzt hat, nach L1 springen.

>jmp    Mainloop

Nach Mainloop springen.

In C sieht das so aus:
1
int main()
2
{
3
  unsigned int x;  // Das war vorher R16:15
4
  P1DIR |= 0x01; // sonst macht das Pintoggeln keinen Sinn, siehe oben
5
6
  for(;;)  // die Endlosschleife "Mainloop"
7
  {
8
    P1OUT^=0x01;  // P1.1 toggeln
9
    x = 10000;
10
    while (x > 0) x--;
11
  }
12
  return 0;
13
}

Beim Übernehmen in irgendeine Arbeit bitte einen Link hierauf als Quelle 
angeben.

Grüße,

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.