.syntax unified
.include "../src/regs.asm"

.global main

main:
	bl	 	startup	//Startupcode
	mov 	R1,#0 	//Zhler in R1 mit 0 beginnen
	ldr 	R2,=GPIOC	//R2 verweist auf GPIOC
	ldr 	R3,=seg7	//R3 verweist auf die Tabelle seg7
	ldr 	R4,=GPIOA	//R4 verweist auf GPIOA
	mov		R0,Bit14	//Anzeige einschalten
	str 	R0,[R2,ODR] //Bit14 von GPIOC.ODR

schleife:	//Endlosschleife
	ldr 	R0,[R4,IDR]	//GPIOA.IDR einlesen (Bit10=Taster PA10)
	tst 	R0,Bit10	//Taster prfen
	bne		gedrueckt	//nicht 0 dann gedrckt
	ldr 	R0,[R3,R1]	//R0=seg7[R1]
	strb	R0,[R2,ODR]	//R0 auf die Siebensegmentanzeige ausgeben
	b	schleife		//von vorne
gedrueckt:	//wenn PA10-Taste gedrckt
	mov 	R0,#20
	bl		wait_ms
	add		R1,#1		//um 1 hochzhlen
nochgedrueckt:			//warten solange Taste-PA10 noch gedrckt
	ldr 	R0,[R4,IDR]	//GPIOA.IDR einlesen
	tst 	R0,Bit10	//Bit10 prfen
	bne		nochgedrueckt	//bei noch gedrckt erneut Taste abfragen
	mov 	R0,#20
	bl		wait_ms
	cmp 	R1,#10		//R1==10
	bne 	schleife	//nein, dann von vorne
	mov 	R1,#0		//ja, dann R1 wieder bei 0 beginnen
	b		schleife	//von vorne

	

seg7:	//Codetabelle der Siebensegmentanzeige
.byte 0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111

.end
