Hi,
habe ein anderes tutorial mal umgeschrieben, mmmh ging auch nicht :(
-------------------------------------------------------------
.include "m128def.inc"
.def temp = R16
ldi R16, RAMEND
out SPL, R16 ; Stackpointer
initialisieren
sbi UCSR0B,TXEN0 ; UART TX aktivieren
ldi temp,16000000/(19200*16)-1 ; Baudrate 19200
einstellen
out UBRR0L,temp
start:
ldi ZL, LOW(text*2) ; Adresse des Strings in den
ldi ZH, HIGH(text*2) ; Z-Pointer laden
rcall print ; Unterfunktion print
aufrufen
ldi R16, 10 ; die Bytes 10 und 13 senden
rcall sendbyte ; (Zeilenumbruch im
Terminal)
ldi R16, 13
rcall sendbyte
rjmp start ; das Ganze wiederholen
; print: sendet die durch den Z-Pointer adressierte Zeichenkette
print:
lpm ; Erstes Byte des Strings
nach R0 lesen
tst R0 ; R0 auf 0 testen
breq print_end ; wenn 0, dann zu print_end
mov r16, r0 ; Inhalt von R0 nach R16
kopieren
rcall sendbyte ; UART-Sendefunktion
aufrufen
adiw ZL, 1 ; Adresse des Z-Pointers um
1
erhöhen
rjmp print ; wieder zum Anfang springen
print_end:
ret
; sendbyte: sendet das Byte aus R16 über das UART
sendbyte:
sbis UCSR0A, UDRE0 ; warten bis das UART
bereit ist
rjmp sendbyte
out UDR0, R16
ret
text:
.db "AVR-Assembler ist ganz einfach",0 ; Stringkonstante, durch
eine 0 abgeschlossen
-------------------------------------------------------------
es müsste doch beim debuggen immer im i/o register UDR0 das Zeichen
drin stehen das auch an die rs-232 ausgegeben wird. Oder ?
mein atmega128 läuft auf 16MHz mit 19200baud 8,N,1 !
kann mir jemand sagen ob dies programm richtig geschrieben ist ?
mit
--> sts UDR0, R16
geht es auch nicht ?! im i/o register UDR0 sthet imm nur die 0 ? mmh
MfG Hans22
Ich habe den 90s8535..... der Test im Anhang funktioniert bei mir. gibt einen ADC-Wert aus. Kannst ja den ganzen ADC-, PWM-kram und die Umrechnungen weglassen und nur das Senden des Textes drin lassen. Sollte dann auch noch Funktioniere....;-)
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.