AVR-Tutorial - 7. Flash, EEPROM, RAM - www.mikrocontroller.net
file:///E|/Elektronik/AVR/assemblertutorial/memory.htm (4 of 9)30.01.2007 15:23:46
.include "4433def.inc"
.def temp = R16
ldi R16, RAMEND
out SPL, R16
sbi UCSRB,TXEN
ldi temp,4000000/(9600*16)-1
out UBRR,temp
start:
ldi ZL, LOW(text*2)
ldi ZH, HIGH(text*2)
rcall print
ldi R16, 10
rcall sendbyte
ldi R16, 13
rcall sendbyte
rjmp start
; print: sendet die durch den Z-Pointer adressierte Zeichenkette
print:
lpm
tst R0
breq print_end
mov r16, r0
rcall sendbyte
adiw ZL, 1
rjmp print
print_end:
ret
; sendbyte: sendet das Byte aus R16 über das UART
sendbyte:
sbis UCSRA, UDRE
rjmp sendbyte
; Stackpointer initialisieren
; UART TX aktivieren
; Baudrate 9600 einstellen
; Adresse des Strings in den
; Z-Pointer laden
; Unterfunktion print aufrufen
; die Bytes 10 und 13 senden
; (Zeilenumbruch im Terminal)
; das Ganze wiederholen
; Erstes Byte des Strings nach R0 lesen
; R0 auf 0 testen
; wenn 0, dann zu print_end
; Inhalt von R0 nach R16 kopieren
; UART-Sendefunktion aufrufen
; Adresse des Z-Pointers um 1 erhöhen
; wieder zum Anfang springen
; warten bis das UART bereit ist