// Gegebenes C-Programm zur Loeung von Termin6 Aufgabe 1
// von: Manfred Pester
// vom:  18.02.2013
// letzte Aenderung am 26.06.2014 von Manfred Pester

#include "../h/pmc.h"
#include "../h/pio.h"

// Die Funktion f_int_Funktionen erwartet die Registeradresse fuer das Pin Data Status Register PDSR aus dem die
// Tasteninformationen SW1 bis SW3 (Bit 3 bis Bit5) gelesen werden koennen 
// und die Registeradresse fuer das Clear Output Data Register CODR um die Leuchtdioden DS1 bis DS8 einschalten zu koennen 
// und liefert TRUE fuer Taste SW3 gedrueckt oder FALSE fuer Taste SW3 nicht gedrueckt zurueck.

int Funktionen(volatile unsigned int* u_int_Taster, volatile unsigned int* u_int_LedsOn);

int main(void)
{
	int int_Weiter =1;
// 
//**************************************************

// PowerManagementController Clock fuer PIOB einschalten		
	PMC_BASE->PMC_PCER = 0x4000;	
// Parallel I/O Controller PIOB Taster und Leuchtdioden aktivieren	
	PIOB_BASE->PIO_PER = 0xff38;	// alle Leuchtdioden DS1..DS8 und Taster SW1..SW3 aktiv
	PIOB_BASE->PIO_OER = 0xff00;	// fuer alle Leuchtdioden DS1..DS8 Ausgaenge aktivieren
	
	while(1)
	{
		int_Weiter = Funktionen(&PIOB_BASE->PIO_PDSR, &PIOB_BASE->PIO_CODR);
		if (int_Weiter!=0)
		{
			PIOB_BASE->PIO_SODR = 0xff00;	// alle 8 LED aus (lowaktiv)
		}
	}
	return 0;
}