Senden von zeichen funzt nicht
Ich habe hier mal für meinen ATmega168 was geschrieben
er soll eig nur warte mit einer Baudrate von 2400 1 stop bit und in 8ter frame an meine rechner senden. Wenn man simuliert geht alle nur aufen chip will es nicht funktionieren.
Code:
.include "m168def.inc"
.def temp = r16 ; Register für kleinere Arbeiten
.def zeichen = r17 ; in diesem Register wird das Zeichen an die
; Ausgabefunktion übergeben
.equ UBRR_VAL = 207
; Stackpointer initialisieren
ldi temp,HIGH(RAMEND)
out SPH,temp
ldi temp,LOW(RAMEND)
out SPL,temp
sbi PORTD, PD6
sbi DDRD,PD6
; Baudrate einstellen
ldi temp, HIGH(UBRR_VAL)
sts UBRR0H, temp
ldi temp, LOW(UBRR_VAL)
sts UBRR0L, temp
; Frame-Format: 8 Bit
ldi temp, (3<<UCSZ00)
sts UCSR0C, temp
ldi temp, 0x08
sts UCSR0B,temp ; TX aktivieren
loop:
ldi zeichen, 'T'
rcall serout ; Unterprogramm aufrufen
ldi zeichen, 'e'
rcall serout ; Unterprogramm aufrufen
ldi zeichen, 's'
rcall serout ; ...
ldi zeichen, 't'
rcall serout
ldi zeichen, '!'
rcall serout
ldi zeichen, 10
rcall serout
ldi zeichen, 13
rcall serout
rjmp loop
serout:
sbi PORTB,PB0
sbi DDRB, PB0
ldi temp,UCSR0A
sbrs temp,6 ; Warten bis UDR für das nächste ; Byte bereit ist
rjmp serout
sts UDR0, zeichen
ret ; zurück zum Hauptprogramm
Ps: Der prozessor ist ein einem Asuro drin der mit dem Eval board aufgerüstet wurde.
MFG ALBI