Hi,
sei mir nicht böse, aber das ist der unstrukturiertester Code den ich bisher gesehen hab
Definitionen kommen normalerweise imer als erstes und die ganzen unterprogramme als letztes.
Mich wundert es echt das der Assembler das so angenommen hat...
Ich hab dir das mal schnell neu zusammen kopiert:
aber aller anfang ist schwerCode:;***************************************************************************** ;* ;* DATEINAME : Led.asm ;* TITEL : ;* DATUM : 9.2.06 ;* AUTOR : STK ;* VERSION : 1.0 ;* ;* ;***************************************************************************** .include "m8515def.inc" ;--KONSTANTENDEKLARATION--------------------------------------------- ; status register bits .equ CarryFlag = 0 .equ ZeroFlag = 1 .equ NegativeFlag = 2 .equ TwosFlag = 3 .equ SignFlag = 4 .equ HalfCarryFlag = 5 .equ TransferFlag = 6 .equ GlobalFlag = 7 ;--VARIABLENDEKLARATION---------------------------------------- .def work = R16 ;Temp. Variable .CSEG .org 0x0000 rjmp MAIN ; Springe um den Prozedurcode herum zum Start des Hauptprogrammes rjmp UnusedInt_ISR rjmp UnusedInt_ISR rjmp UnusedInt_ISR rjmp UnusedInt_ISR ;Externes Interrupt-Ereignis zum Stoppen der Zeit rjmp UnusedInt_ISR rjmp UnusedInt_ISR rjmp UnusedInt_ISR rjmp UnusedInt_ISR rjmp UnusedInt_ISR rjmp UnusedInt_ISR rjmp UnusedInt_ISR rjmp UnusedInt_ISR UnusedInt_ISR: reti MAIN: ;Stackpointer initialisieren ldi work,low (RAMEND) ; RAMEND ist eine im include file vorgegebene Konstante, out SPL,work ldi work, high(RAMEND) out SPH,work rjmp init Main_loop: ldi work, 0b11111111 out PortA, work out PortB, work out PortC, work out PortD, work rjmp Main_loop; ;--Unterprogramme----------------------------------------------------- init: ser work out ddra, work ;Port A, B, C, out ddrb, work ;und D als Ausgang out ddrc, work ;definieren out ddrd, work rjmp main_loop ;--HAUPTPROGRAMM-----------------------------------------------------
machs doch einfach so:
Das ist jetzt natürlich nur in der schnelle geschriebn und lässt sich noch anpassen, sollte aber funktionieren.Code:.include "m8515def.inc" .def temp, r16 ldi temp, 0xff out DDRa, temp out DDRb, temp out DDRC, temp out DDRd, temp main: ldi temp, 0b11111111 out PortA, temp out PortB, temp out PortC, temp out PortD, temp ende: rjmp ende
Gruß,
Mehto





Zitieren

Lesezeichen