hast due das includefile dan definiert? das Wäre ne möglichkeit, und das Lo8 und Hi8 mach da mal Low und High draus
Hello again,
ich habe im myavr Workpad folgenden Code geschrieben, der durch den Wertevergleich des Timers mit einem Register einen Port an und aus schalten soll.
Dazu bekomme ich folgende Fehlermeldung:Code:main: ldi r16,lo8(RAMEND) out SPL,r16 ldi r16,hi8(RAMEND) out SPH,r16 ldi r16,0b00000101 out TCCR0,r16 ldi r16,0b11111111 out DDRC,r16 ldi r17,0b00000001 ;Hier Init-Code eintragen. ;------------------------------------------------------------------------ mainloop: wdr an: cpi TCNT0,r16 BREQ weiter rjmp an ;Hier den Quellcode eintragen. weiter: 51 ldi r16,0b0000000 out PORTC,r16 ldi r16,0b11111111 aus: 59 cpi TCNT0,r17 BREQ weiterr rjmp aus weiterr: rjmp mainloop
Kann mir da jemand sagen, was nicht stimmt?Code:Assembler Meldungen: m8.asm:51 51: Fehler: number must be less than 32 51: Fehler: Zulässig sind nur Register oder Werte im Bereich: 0 to 31 51: Warnung: Der Ausdruck bzw. die Sprungmarke befindet sich möglicherweise außerhalb der 8-bit Zahlenbereiches. m8.asm:59 59: Fehler: number must be less than 32 59: Fehler: Zulässig sind nur Register oder Werte im Bereich: 0 to 31 59: Warnung: Der Ausdruck bzw. die Sprungmarke befindet sich möglicherweise außerhalb der 8-bit Zahlenbereiches.
Danke
hast due das includefile dan definiert? das Wäre ne möglichkeit, und das Lo8 und Hi8 mach da mal Low und High draus
Bist du sicher, daß der Assembler weiß, was du mit 0b... meinst? Das ist zumindest überaus unüblich. Nur einige gepatchte GCC verstehen das.
Disclaimer: none. Sue me.
1. Schlag mal nach, wofür der Befehl cpi gut ist.
2. Schlag ausserdem nach welche Bereiche ein breq überspringen kann ....
als Referenz empfehle ich das Instruction Set
zumindest das AVR Studio erkennt es ohne Probleme (also der Assembler dort)Zitat von Sprinters
Grundregeln des Forenpostings:
1. Nutze niemals die Suchfunktion!
2. Überprüfe niemals die Topics nach Ähnlichkeiten!
3. Schreibe alles in hellgelb!
hallo,
hab das ganze mal in mein Workpad kopiert und die übersetzungsfehler ausgebügelt... aber nicht kontrolliert ob der code logisch korrekt ist
gruß jahnCode:;+---------------------------------------------------------------------- ;| Title : myAVR Grundgerüst für ATmega8 ;+---------------------------------------------------------------------- ;| Funktion : ... ;| Schaltung : ... ;+---------------------------------------------------------------------- ;| Prozessor : ATmega8 ;| Takt : 3,6864 MHz ;| Sprache : Assembler ;| Datum : ... ;| Version : ... ;| Autor : ... ;+---------------------------------------------------------------------- .include "AVR.H" ;------------------------------------------------------------------------ ;Reset and Interrupt vector ;VNr. Beschreibung rjmp main ;1 POWER ON RESET reti ;2 Int0-Interrupt reti ;3 Int1-Interrupt reti ;4 TC2 Compare Match reti ;5 TC2 Overflow reti ;6 TC1 Capture reti ;7 TC1 Compare Match A reti ;8 TC1 Compare Match B reti ;9 TC1 Overflow reti ;10 TC0 Overflow reti ;11 SPI, STC Serial Transfer Complete reti ;12 UART Rx Complete reti ;13 UART Data Register Empty reti ;14 UART Tx Complete reti ;15 ADC Conversion Complete reti ;16 EEPROM Ready reti ;17 Analog Comparator reti ;18 TWI (I²C) Serial Interface reti ;19 Store Program Memory Ready ;------------------------------------------------------------------------ ;Start, Power ON, Reset main: ldi r16,lo8(RAMEND) out SPL,r16 ldi r16,hi8(RAMEND) out SPH,r16 ldi r16,0b00000101 out TCCR0,r16 ldi r16,0b11111111 out DDRC,r16 ldi r17,0b00000001 ;Hier Init-Code eintragen. ;------------------------------------------------------------------------ mainloop: an: ;falsch cpi TCNT0,r16 ... cpi -> vergleiche register mit konstante in r18,TCNT0 cp r18,r16 breq weiter rjmp an ;Hier den Quellcode eintragen. weiter: ldi r16,0b0000000 out PORTC,r16 ldi r16,0b11111111 aus: ; falsch cpiTCNT0,r17 in r18,TCNT0 cp r18,r16 breq weiterr rjmp aus weiterr: rjmp mainloop ;------------------------------------------------------------------------
Ähm...ja....
hab wohl die goldene Regel mit dem IN vergessen...
Und Danke für die Antworten.
Lesezeichen