Gast
#514799
nachdem das senden über uart klappt, sitz ich jetzt am empfangen ich will bei Empfang die LED an portb.0 anschalten. klappt mal wieder nicht. hier der Code: ;------------------------- .include "m168def.inc" ;| Definitionen der Adressen ;------------------------- ; ;-------------------------------- .def temp = r16 ; Definition von Hilfsvariablen .def data = r17 .equ CLOCK = 7372800 .equ BAUD = 9600 .equ UBRRVAL = CLOCK/(BAUD*16)-1 ;-------------------------------- .org 0x0000 rjmp main .org URXCaddr ; Interruptvektor für UART-Empfang rjmp int_rxc main: ldi temp, 0x06 out TCCR0B, temp ;----------------------------------------------------------------------- ----- ldi temp,LOW(RAMEND) ; Stackpointer initalisieren out SPL,temp ; ldi temp,HIGH(RAMEND) ; Stackpointer initalisieren out SPH,temp ; ;----------------------------------------------------------------------- ----- USART_init:; Initialisieren der Schnittstelle im asynchronen Normalmodus *----------- ; ; Berechnung der Parameter für Übertragungsrate: ; BAUD = Oszilatorfrequenz / ( 16 * ( UBRR0 + 1 )) ; daraus folgt: ; UBRR0 = ( Oszilatorfrequenz / 16 * BAUD ) - 1 ; Beispiel: BAUD = 9600 ; UBRR0 = ( 7372800 / 16 * 9600 ) - 1 = 47 = 0x002F ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''| ; Übertragungsrate einstellen: ; ldi temp, LOW(UBRRVAL) ; Lowbyte: 0x00 sts UBRR0L, temp ; im Register setzen ldi temp, HIGH(UBRRVAL) ; Highbyte: 0x2F sts UBRR0H, temp ; im Register setzen ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''| ; Einstellung der Übertragungsparameter ldi temp, 0x06 ; Asynchron, Paritätsbit N, Datenlänge 8Bit, Stopbit 1 sts UCSR0C, temp ; ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''| ; Einstellung Sender und Empfänger ldi temp, 0x98 sts UCSR0B, temp ;_______________________________________________________________________ ____________| ldi temp,0x01 out DDRB, temp sei ; Interrupts global aktivieren loop: rjmp loop ; Endlosschleife ; Interruptroutine: wird ausgeführt sobald ein Byte über das UART empfangen wurde int_rxc: ldi data, UDR0 ldi temp, 0x01 out PORTB, temp reti ; Interrupt beenden