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
|
|