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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.