5. Assembler-Programmierung
5.1. Basic-Programmierung Beispiele
Beispiele für Programme in Assembler für den Mikrocontroller 8051.
E-1. Counter im Akkumulator von 0 bis 99 in Hexadezimal
NAME CONTADOR_HEX
ORG 0
INICIO: MOV A,#0
REPETIR: INC A
CJNE A,#99,REPETIR
END

Flussdiagramm des Zählers in hexadezimal.
E-2. Counter im Akkumulator von 0 bis 99 in BCD
NAME CONTADOR_BCD
ORG 0
INICIO: MOV A,#0
REPETIR: ADD A,#1
DA A
CJNE A,#99,REPETIR
END

Flussdiagramm des BCD Dezimal Zähler.
E-3. Rechten Hand Rotation von 1 Bit im Absorbertank.
NAME ROTACION_ACUMULADOR <br/> <br/> 0 ORG < Br / >< Br / > HOME: MOV A, #1 < Br / > WIEDERHOLEN: RR, < Br / > JMP Wiederholung < Br / > < Br / > ENDE
E-4. Verzögerung von 256 Anweisungen DJNZ Programm.
Die Zeit des Verzuges vom Programm nicht über einen festen Wert, richtet sich nach den Anweisungen, die Teil der Schleife (die Gebrauchtmaschine-Zyklen) und der Mikroprozessor (CPU)-Taktfrequenz sind.
Für dieses Beispiel in Frage, wird die Schleife auf die DJNZ-Anweisung, die zwei Zyklen für Ausführung Maschine braucht durchgeführt. Jeder Maschinenzyklus verwendet 12 Uhr Perioden. Wenn die CPU-Frequenz 12 MHz ist, ist die Zeit zum Ausführen von 256 Iterationen 512 μ s (Mikrosekunden).

NAME RETARDO_1
ORG 0
INICIO: MOV R0,#0FFH
RET1: DJNZ R0,RET1
Ende

Flussdiagramm eines Timer-Programm.
E-5. Geschachtelte Software Delay drei Register R0, R1 und R2.
Um den zweiten machen Software Verzögerung länger als die Schlaufen tun hat mit der Verschachtelung. Die Abbildung zeigt eine verschachtelte Schleifen mit Register R0, R1 und R2. In diesem System, jede Erniedrigung des Registers R1, das Register R0 ist mal dekrementiert 256 und für jede Abnahme der R2, R1 hat Iterationen gemacht 256, so dass das Endergebnis ist 2 ^ 24 = 16.777.216 Iterationen. Die daraus resultierende beträgt etwa 33.554432 Sekunden, je nach den Bedingungen Beispiel skizziert in der vorherigen.

Zur Bestimmung der Zeit müssen die Bits, die wichtigsten Werte entsprechend R2 ändern.
Wasted Rechenleistung der CPU Timings oder Verzögerungen bei der Software nur dann sinnvoll, wie der Mikroprozessor hat nur einen Prozess dienen. Die normale Arbeit ist es, Timern und Interrupts für Timing Aufgaben verwenden, und lassen die CPU frei für andere Prozesse.
NAME RETARDO_2
ORG 0
RETARDO: MOV R2,#0FFH
RET3: MOV R1,#0FFH
RET2: MOV R0,#0FFH
RET1: DJNZ R0,RET1
DJNZ R1,RET2
DJNZ R2,RET3
END

Flussdiagramm eines Software-Timer mit drei Platten.