Hier, wäre das, was ich als kleine Starthilfe bieten kann:
Code:
;Diese Parameter müssen gesetzt werden, um die Datenrate zu setzen
.equ CLOCK = 3686400
.equ BAUD = 115200 ;Kann auch 4800, 9600, etc. sein!
.equ UBRRVAL = CLOCK/(BAUD*16)-1
.def COM_Data_RX = r14
.def COM_Data_TX = r15 ;TX/RX können auch ein Register sein!
.def temp = r16
;------------------------------------------------------
; Serielle Kommunikation einstellen...
;------------------------------------------------------
; Baudrate einstellen
LDI temp, LOW(UBRRVAL)
; LDI temp, UBRRVAL
OUT UBRRL, temp
LDI temp, HIGH(UBRRVAL)
OUT UBRRH, temp
;Schnittstelle einstellen...
;Bit7: N/A
;Bit6: 1=syncrone Kommunikation
; 0=asyncrone Kommunikation
;Bit5/4: Parity Mode
; 0:0=Disable
;Bit3: Stop Bit set
; 0=1 Bit
; 1=2 Bits
;Bit2/1 Character/Framesize
; 0:0:0=5-bit
; 0:0:1=6-bit
; 0:1:0=7-bit
; 0:1:1=8-bit
; 1:1:1=9-bit
;Bit0 Clock priorty
LDI temp, 0b00000000
OUT UCSRC, temp
SBI UCSRB, TXEN ; TX aktivieren
SBI UCSRB, RXEN ; RX (Empfang) aktivieren
; SBI UCSRB, RXCIE ; Interrupt bei Empfang
; SEI ; Interrups aktivieren
Daten_senden:
;---------------------------
SBIS UCSRA,UDRE ;Warten bis UDR für das nächste
RJMP Daten_senden ;Byte bereit ist
OUT UDR, COM_Data_TX ; COM_Data_TX ist ein Register, was die zu sendenen Daten enthält
RET
Lesezeichen