/* * AssemblerApplication1.asm * * Created: 15.11.2014 19:33:32 * Author: Stephan */ .include "m8def.inc" ;------------------------ main: .equ c1 = 500000 ; Anzahl Durchläufe der Schleife ldi R31,HIGH(c1) ; Lade MSB-Register mit Schleifenwert ldi R30,LOW(c1) ; Lade LSB-Register mit Schleifenwert ldi r16,0b00000000 ldi r17,0b11111111 out DDRB,r17 out DDRD,r17 out DDRC,r16 out PORTC,r17 mainloop: ldi r18,0b00000110 out PORTB,r18 ; lade "1" in Segmentanzeige in r19,PINC ; lade Zahl vom Dipschalter in r19 sbis PINC,5 ; wenn Taster betätigt, springe nach "Taster1" rjmp Taster1 rjmp mainloop Taster1: ldi r18,0b01011011 out PORTB,r18 ; lade "2" in Segmentanzeige Loop: ; Schleifenbeginn sbiw R24,1 ; Doppelregisterwert um Eins verringern brne Loop ; wenn nicht Null dann wieder Schleifenbeginn in r20,PINC ; lade Zahl vom Dipschalter in r20 sbis PINC,5 ; wenn Taster betätigt, springe nach "Auswahl" rjmp Auswahl rjmp Taster1 Auswahl: ldi r25,0b00111111 out PORTB,r25 rjmp Auswahl