hier ein program für atmega8515,müsste gehen:
Im Hyper terminal wird "TEST" angezeigt, für andere sachen zu
übertragen genau so
.include "m8515def.inc"
.def temp = R16
.equ CLOCK = 8000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1
.cseg
.org 0x000
rjmp main
.org 0x009 ; Interruptvektor for
UART-Receive
rjmp int_rxc
main: ldi r16, LOW(RAMEND) ;Stack Pointer to top of RAM
out SPL, r16
ldi r16, HIGH(RAMEND)
out SPH, r16
; Baudrate setup
ldi temp, LOW(UBRRVAL)
out UBRRL, temp
ldi temp, HIGH(UBRRVAL)
out UBRRH, temp
; Frame-Format: 8 Bit
ldi temp, (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0)
out UCSRC, temp
sbi UCSRB, RXCIE ; Interrupt by Receive
sbi UCSRB, RXEN ; RX (Receive) activate
sbi UCSRB,TXEN ; TX (Transmit) activate
sei ; Interrupts global activate
ldi r20,0x00
program:
clr r21 ; gleich nachdem Einshalten "ATMEL UHF Demo Rader"
anzeigen
ldi ZL,LOW(2*lable)
ldi Zh,HIGH(2*lable)
ldi r17,0x04
ldi temp, 10
rcall serout
ok: lpm r16,z
adiw ZL,1
rcall serout
dec r17
cpse r17,r20
rjmp ok
ldi temp, 10
rcall serout
ldi temp, 13
rcall serout
serout: sbis UCSRA,UDRE ;Warten bis UDR für das nächste Byte
bereit ist
rjmp serout
out UDR, temp
ret
; Interruptroutine: wird ausgeführt sobald ein Byte über das UART
empfangen wurde
int_rxc:
in r21, UDR
;rcall loop
reti ;Interrupt beenden
lable:
.db"TEST",0