MSP-430 fragen

Gast #2062235
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
Persönliche Seite #2062741
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren