USAR Zeichenempfang und gleichzeitige Umwandlung

Gast #2774077
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
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.