Freeclimber
09.05.2008, 10:16
Ich habe folgende Probleme mit dem Microcontroller ATmega2560 und der Programmierung in Assemblar (AVR.studio)
Da ich alle Ports als I/O register verwende funktionieren folgende Befehle bei bestimmten Ports nicht!!
out, in, sbis, sbic.....
diese Befehle funktionieren nur von PortA-PortF, wenn ich diese Befehle an den anderen Ports (G-L) anwenden will, kommt error: out of range..
für die Befehle out, sbis und sbic habe ich eine andere alternative gefunden, aber leider nicht für "in"....
Konkretes Beispiel: UART Daten empfangen
kleiner Microcontroller z.B. ATmega32
sbis UCSRA,7 ;UART status Register Bit 7 setzten
rjmp getChar ;warte bis UDR bereit ist
in UARTspeicher, UDR ;liest in Register 17 UDR ein
ret ;zurück zum Ursprun
großer Microcontroller z.B. ATmega2560
lds temp, UCSR3A
sbrs temp, 7 ;UART status Register Bit 7 setzten
rjmp getChar ;warte bis UDR bereit ist
in UARTspeicher, UDR3 ;liest in Register 17 UDR ein
ret ;zurück zum Ursprun
;hier benötige iche anderen befehl für "in"
Da ich alle Ports als I/O register verwende funktionieren folgende Befehle bei bestimmten Ports nicht!!
out, in, sbis, sbic.....
diese Befehle funktionieren nur von PortA-PortF, wenn ich diese Befehle an den anderen Ports (G-L) anwenden will, kommt error: out of range..
für die Befehle out, sbis und sbic habe ich eine andere alternative gefunden, aber leider nicht für "in"....
Konkretes Beispiel: UART Daten empfangen
kleiner Microcontroller z.B. ATmega32
sbis UCSRA,7 ;UART status Register Bit 7 setzten
rjmp getChar ;warte bis UDR bereit ist
in UARTspeicher, UDR ;liest in Register 17 UDR ein
ret ;zurück zum Ursprun
großer Microcontroller z.B. ATmega2560
lds temp, UCSR3A
sbrs temp, 7 ;UART status Register Bit 7 setzten
rjmp getChar ;warte bis UDR bereit ist
in UARTspeicher, UDR3 ;liest in Register 17 UDR ein
ret ;zurück zum Ursprun
;hier benötige iche anderen befehl für "in"