 // Erzeugung eines Piepstones 500Hz 0,5s anschlissend 1s pause
 // Abfrage des Tasters, stehenbleiben bis Taster gedrückt und
 // losgelassen wurde. Bei Taktfrequenz 4MHz
 //
 // Michael Dworkin
 // 16.05.2003
 // Compiler CC5x

void pause(void)			//Pause von 1ms
{
char a;
		#asm
		movlw	d'250'
		movwf	a			; 250*4+2=1002mks=1ms
wdh1	nop
		decfsz	a,f
		goto	wdh1
		#endasm
}

void pip(void)
{
char i;								// 8-Bit Variable (0...255)
//******* Erzeugung des Pipstones mit 500Hz dauer 0,5sek ********************

	i=250;							// Variable i wird mit Zahl 250 geladen
	while (i)						// Sleife leuft so lange  i niht 0 ist.
		{							// Das heist Schleife widerholt sich 250 mahl

		beep=1;						// pin6=5V, Hir wird ein Rehteckimpuls erzeugt
		pause();					// 1ms warten
		beep=0;						// pin6=0V
		pause();					// 1ms warten ,periodendauer T=2ms, f=1/2ms=500Hz

		i--;						// von i wird 1 abgezogen, ergebnis wieder in i getan
		}							//Diese Sleife dauert 2ms*250=500ms=0,5sekunde


//******* Erzeugung einer Pause nach dem Pipston mit  dauer 1sek ********************

	i=250;							// Variable i wird mit Zahl 250 geladen
	while (i)						// Sleife leuft so lange  i niht 0 ist.
		{							// Das heist Schleife widerholt sich 250 mahl
		pause();
		pause();					// Pause von 4ms
		pause();
		pause();
		i--;						// i runterzählen
		}							// Diese Sleife dauert 4ms*250=1000ms=1sekunde
}

void tast(void)
{
if (Taster)					// Ist gemeint wen Plus(RA0)=1 d.h. Taster gedrukt ist dan
	{
	char i;					// 8-Bit Variable (0...255)
	for (i=0;i<100;i++)		// (Variable i von 0 ;bis 100; mit jedem durhlauf um 1 erhöchen)
		{					// Befele in Klammern werden 100 mahl wiederholt
		pause();			// warte 1ms*100= 0,1sek
		}					// Hier wird gewartet 0,1sek damit Kontakte des Schalters rihtig schlissen

	while(Taster);			// Warten bis Taster losgelassen wurde
	}
}

