Hallo, ich hab ein mittelschweres Problem:
ich bekomme den USART0 im M88 einfach nicht zum laufen, bekomme beim Compalieren immer den Fehler:
...\Theseus.asm(6: error: Operand 1 out of range: 0xc5
und das ganze immer dort wo ich daten in die Steuerregister des USARTs schreibe oder Daten daraus lese oder Daten in den Datenport schreibe.
Was mache ich falsch?
hier der Code:
Bitte Helft mir, beim Mega8 klapts ( mit entsprechenden Register versteht sich ) aber warum hier nede, bin am abschnallen!!!!!!Code:;################################################################################### ;# # ;# THESEUS # ;# ---------- # ;# # ;# Microcontroller: ATMEGA88 # ;# Quarz: 7.3728 MHz # ;# # ;# Autor: Denis Bethäuser # ;# www.elektronik4freaks.de.tk # ;# denis.bethaeuser@gmx.de # ;# # ;################################################################################### ;----[ µC Includefiles I ]---------------------------------------------------------- .include "m88def.inc" ;----[ Register Def. / Alias Def. ]------------------------------------------------- .def tmp = r16 ; Universalregister 1 ( zT Low-Byte ) .def tmp2 = r17 ; Universalregister 2 ( zT High-Byte ) .equ clock = 7372800 .equ baud = 9600 .equ ubrrval = clock/(baud*16)-1 ;----[ Interrupt-Vektoren ]--------------------------------------------------------- .org 0000 ; Zum Programmbeginn springen rjmp reset .org OVF1addr rjmp reset ;----[ STACK-Pointer und Z-Pointer Einrichten ]------------------------------------- reset: ; Programm beginnt ldi tmp, high(ramend) ; High-Byte in Stackpointer schreiben out SPH, tmp ldi tmp, low(ramend) ; Low-Byte in Stackpointer schreiben out SPL, tmp ;----[ I/O Einstellungen ]---------------------------------------------------------- ;----[ UART Einstellungen ]--------------------------------------------------------- ldi tmp, high(ubrrval) ; Baudrate-Highbyte schreiben out UBRR0H, tmp ldi tmp, low(ubrrval) ; Baudrate-Lowbyte schreiben out UBRR0L, tmp ldi tmp, (1<<RXEN0)|(1<<TXEN0) ; Empfang-Inter., Senden + Empfangen aktiv. out UCSR0B, tmp ldi tmp, (1<<USBS0)|(3<<UCSZ00) ; Datenformat: 8N1 out UCSR0C, tmp /*----[ ADC Einstellungen ]---------------------------------------------------------- ldi tmp, (1<<REFS0)|(1<<ADLAR) ; Referenz = Vcc, 8 Bit-Modus, ADC0 out ADMUX, tmp ldi tmp, (1<<ADEN)|(1<<ADATE)|(1<<ADSC)|(1<<ADPS1) out ADCSR, tmp ; Frei, Start Conver., Tackt=Clock/4 */ sei ;####[ Hauptprogramm ]############################################################## main: rjmp main ;################################################################################### ;---[ RS232 Sendesubroutine ]------------------------------------------------------- send: sbis UCSR0A, UDRE0 ; Warte bis Sendepuffer leer rjmp send out UDR0, tmp ; Byte im Arbeitsregister senden ret







Zitieren

Lesezeichen