Forum: Mikrocontroller und Digitale Elektronik USAR Zeichenempfang und gleichzeitige Umwandlung


von Alex (Gast)


Lesenswert?

Eine Frage, es geht um USAR Zeichenempfang und gleichzeitige Umwandlung 
vom empfangenen ASCII-Zeichen in dezimale Zahl. Wenn ein Zeichen 
empfangen wurde, dann liegt es im UDR, es wird Interrupt  ausgelöst. Die 
Frage: kann empfangenes ASCII-Zeichen in der Interrupt-Routine in 
dezimale Zahl umgewandelt werden, bevor nächstes Zeichen ankommt?

//--- Interrupt-Routine-----------
int_rxc1:
  push temp1
  push temp2
  push temp3
    in   temp2, UDR ; empfangenes Byte lesen,
    subi temp,'0'     ; Umwandlung in Dezimal
    ldi  temp1,100; Multiplikator
//---16Bit*8bit temp3-Highwert temp2.Lowwert; 
temp1-Multiplikator;Ergebnis in temp4(low),5,6
    rcall mul_16x8

    pop temp3
    pop temp2      ; temp wiederherstellen
    pop temp1
    reti       ; Interrupt beenden

;16Bit*8bit temp3-Highwert temp2.Lowwert; temp1-Multiplikator;Ergebnis 
in temp4,5,6
mul_16x8:
clr temp4
clr temp5
clr temp6

mul temp2,temp1 ; Multipliziere LSB
mov temp4,R0 ; kopiere Ergebnis in Ergebnisregister (Byte 1 des 
Ergebnisses)
mov temp5,R1 ;Byte 2 des Ergebnisses
mul temp3,temp1 ; Multiplizere MSB

    mov temp6,R1 ; Kopiere MSB des Ergebnisses zum Ergebnis-Byte 3
    add temp5,R0 ; Addiere LSB des Ergebnisses zum Ergebnis-Byte 2
    brcc NoInc ; Wenn Carry nicht gesetzt, springe
    inc temp6 ; erhoehe Ergebnis-Byte 3
NoInc:
ret

von Werner (Gast)


Lesenswert?

Alex schrieb:
> Die Frage: kann empfangenes ASCII-Zeichen in der Interrupt-Routine in
> dezimale Zahl umgewandelt werden, bevor nächstes Zeichen ankommt?

Das kommt auf die Baudrate und auf die Leistungsfähigkeit des Prozessors 
drauf an. Außerdem wird es nicht bei der Umwandlung bleiben, da mit dem 
erzeugten String sicher irgendetwas passieren muß. Sonst könnte man sich 
die Umwandlung sparen.

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.