Hallo zusammen,
ich habe erst vorkurzem mit der Assembler Programmierung angefangen, habe auch schon einige kleinere Programme (Lauflicht etc.) in Assembler als Hausaufgabe für die Uni gemacht.
Ich wollte jetzt mein RN-Control (ATmega32) mit dem PC reden lassen, und zwar über USART. Ich habe diesen Code dazu aus einem Buch, ich
verstehe den Code, doch leider macht er nicht das was er soll.Ich nutze als Programm auf dem PC HTerm, und dies zeigt mir an das egal was ich dem uC senden lasse, immer ZWEIMAL 0x00 am PC ankommt. Ich finde den Fehler leider nicht wirklich, und wäre froh über ein wenig Hilfe.
Schonmal im voraus danke für eure Mühe.
NemesisoD
Code:.INCLUDE "m32def.inc" .EQU F_CPU = 16000000 .EQU BAUD = 9600 .CSEG .ORG 0x00 rjmp Reset ; Sprung nach dem Reset .ORG 0x029 Reset: ;Initialisiere den Stack ;----------------------- ldi r16,LOW(RAMEND) out SPL,r16 ldi r17,HIGH(RAMEND) out SPH,r17 ;----------------------- ldi r17,0xFF out DDRC,r17 ldi r17,0xFE out PORTC,r17 ;Initialisiere den USART ;----------------------- ldi r16,LOW(F_CPU/(16*BAUD)-1) ; Berechnung des Teilers out UBRRL,r16 ldi r17,HIGH(F_CPU/(16*BAUD)-1) ; Berechnung des Teilers andi r16,0b01111111 ; URSEL = 0 out UBRRH,r16 sbi UCSRB,RXEN ; Empfänger aktivieren sbi UCSRB,TXEN ; Sender aktivieren ldi r16,(1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); URSEL=1 out UCSRC,r16 ; async, ohne Parität. 1 Stopbit, 8 Datenbit in r17,UDR ;----------------------- sbi UCSRB,RXCIE sei ldi r18,'>' rcall send Main: rjmp Main send: sbis UCSRA,UDRE rjmp send out UDR,r18 ret







Zitieren
Wie peinlich

Lesezeichen