- Übersetzen sie folgenden C-Funktion nach HC12-Assembler und realisieren
sie einen exemplarischen Aufruf. Parameterübergabe nach eigenem Gusto.
void memcpy(unsigned char* dst, const unsigned char* src, unsigned int len)
{
unsigned int i;
for (i = 0; i < len; i++)
dst[i] = src[i];
}
- Dokumentieren Sie folgenden Assemblercodesegmente. Sie stammen original aus
altem Assembler-code für die Roboter. Die paar Kommentare die noch da waren wurden auch noch
entfernt.
Zu jedem Segment noch ein knapper Satz: Was macht der Code? (z.B: Initialisiert das und das)
Hinweis: Falls eine Clock auftaucht (z.B. M-Clock) ist sie mit 8MHz getaktet.
- Beispiel:
- Vorher:
movb #0, DDRA
loop: ldaa PORTA
cab loop
- Nachher:
movb #0, DDRA ; Alle Eingänge von Port A auf Eingang
loop: ldaa PORTA
cab loop ; Vergleich der Daten an Port A mit Daten in Register B
Schleife wartet auf Gleichheit von Daten an Port A mit Register B
- A)
BAUDRATE: EQU 26
SCICONF11: EQU %0
SCICONF21: EQU %1100
foo0: MOVW #BAUDRATE,SC1BDH
MOVB #SCICONF11,SC1CR1
MOVB #SCICONF21,SC1CR2
RTS
- B)
loop: BRCLR SC0SR1,#$80,loop
STAA SC0DRL
RTS
- C)
TIMER_D: EQU 500
TMR_ENABLE: EQU %10000000
ICPAR: EQU $a8
MOVB #%00000001,TIOS
MOVB #%00000111,TMSK2
MOVB #%00000001,TMSK1
MOVW #TIMER_D,TC0
MOVB #TMR_ENABLE,TSCR
MOVB #$55,TCTL4
MOVB #$0F,ICPAR
MOVB #$80,TSCR
- D)
MOVB #$38,PWCLK
MOVB #$0F,PWPOL
MOVB #$FF,PWPER0
MOVB #$FF,PWPER1
MOVB #$FF,PWPER2
MOVB #$FF,PWPER3
MOVB #$00,PWDTY0
MOVB #$00,PWDTY1
MOVB #$00,PWDTY2
MOVB #$00,PWDTY3
MOVB #$0F,PWEN
Nützliche Links: