>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