Gast
#53255
Hallo zusammen
Ich bin Anfänger.
Warum kann ich mit dem Terminalprogramm
nichts auf das Port B ausgeben?
Möchte dies über Interrupt machen.
Baudrate und Taktfrequenz müsste stimmen. So wie auch im Terminal.
MfG
Peter
.include "8515def.inc"
.equ CLOCK = 6000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1
.def temp = r16
rjmp Reset ;Reset vector
reti ;Ext Int 0
reti ;Ext Int 1
reti ;Timer 1 Capt
reti ;Timer 1 CompA
reti ;Timer 1 CompB
reti ;Timer 1 OVF
reti ;Timer 0 OVF
reti ;Serial Transfer Complete
rjmp retiint_rxc ;UART Rx Complete
reti ;UART Data register empty
reti ;UART Tx Complete
reti ;Analog Comparator
Reset:
ldi temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse
out SPL, temp
ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse
out SPH, temp
sbi UCR,TXEN ;TXEN = 1 (Transmitter Enable)
sbi UCR,RXEN ;RXEN = 1 (Reciever Enable)
ldi temp,UBRRVAL ;Baud
out UBRR,temp
ldi temp,0xFF
out DDRB, temp ;Datenrichtung von Port B einstellen, 1
=
Ausgang
ldi temp, 0xFF
out PORTB, temp ;Leds ausschalten
Main:
;Hier könnte Hauptprogramm sein
rjmp Main
retiint_rxc:
push temp ;temp auf dem Stack sichern
in temp, UDR
out PORTB, temp
pop temp ;temp wiederherstellen
reti