Speicher1.asm


1
.include "4433def.inc"
2
3
.def temp=r16
4
5
  ldi temp,ramend
6
  out SPL,temp    ;Stack initialisieren
7
8
  sbi UCSRB,TXEN    ;UART aktivieren
9
  ldi temp,4000000/(9600*16)-1  ;Baudrate 9600 einstellen
10
  out UBRR,temp
11
12
start:
13
  ldi ZL,LOW(text*2)  ;Adresse des Strings in den Z-Pointer laden
14
  ldi ZH,HIGH(text*2)
15
  rcall print
16
17
  ldi temp,10      ;Die bytes 10 und 13 senden
18
  rcall sendbyte
19
  ldi temp,13
20
  rcall sendbyte
21
22
  rjmp start
23
24
;'print' sendet die durch den Z-Pointer adressierte Zeichenkette
25
print:
26
  lpm          ;erstes Byte des Strings nach R0 lesen
27
  tst r0        ;r0 auf 0 testen
28
  breq print_end    ;wenn 0 dann zu print_end
29
  mov temp,r0
30
  rcall sendbyte
31
  adiw ZL,1      ;Adresse Z-Pointer um 1 erhöhen
32
  rjmp print
33
print_end:
34
  ret
35
36
  ;sendbyte sendet das byte aus r16 über das UART
37
sendbyte:
38
  sbis UCSRA,UDRE    ;warten bis UART bereit ist
39
  rjmp sendbyte
40
  out UDR,temp
41
  ret
42
43
;.include "Display.asm"
44
text:
45
.db "AVR-Assembler ist ganz einfach",0  ;Stringkonstante durch eine 0 abgeschlossen