Ich hab dein Programm ein wenig modifiziert und im Simulator getestet.
Zuerst wird auf Port B der Wert 0x01 ausgegeben.Code:.include "m8def.inc" main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0xFF out DDRB,r16 ldi r17,0x00 out DDRC,r17 loop: ldi r16,0x01 out PORTB,r16 in r17,PINC cp r16,r17 breq mainloop rjmp loop ;------------------------------------------------------------------------ mainloop: wdr ldi r16,0b11101111 out PORTB,r16 rjmp mainloop
Und zwar so lange bis der Pin C.0 High wird.
Dann verzweigt das Programm in den Mainloop, aus dem es nie wieder zurückkommt.
Ist noch zusätzlich ein anderer PIN des Port C aktiv bleibt das Programm in der Schleife loop:
Was soll denn nun das Progrämmchen machen ?
Nichts desto trotz solltest Du die beschriebenen Verbesserungen deines Programmcodes machen.
Du möchtest ja auch mal schwierigere Sachen in Assembler basteln.
Es sein denn es handelt sich hierbei um inline Code für einen Compiler.
Da musst Du dann aber das Handbuch deines Compilers befragen, welche Register für Assembler nutzbar sind.
Die Infromationen, die Du uns hier gibst sind leider etwas mager.







Zitieren
Lesezeichen