/*Ampelsteuerung mit Feldvariablen und
Bedarfsgesteuerter Fußgängerampel
Ampel05.ccp
*/
#include <stdio.h>
#include <reg517.h>
void wait1ms(unsigned int
time); //Prototyp Wartezeit
int iMarker=0;
void main(void) //Anfang Hauptprogramm
{
unsigned int phase[10]={0xa4,0xb4,0x8c,0x94,0xa4,0x64,0x66,0x61,0xa1,0xa2};
unsigned int timer[10]={50,10,50,15,30,20,10,40,10,15};
int i;
P2=0x01;
while(1)
{
if (iMarker==1) // Abfrage für Bedarfssteuerung
{
P1=0xa4; // AlleAmpeln rot
wait1ms(10);
P2=0x02; //
Fußgängerampel grün
wait1ms(50);
P2=0x01; //
Fußgängerampel rot
iMarker=0; //
Zurücksetzen Bedarfssteuerung
}
for(i=0;i<10;i++)
{
P1=phase[i]; // normaler
Ampelbetrieb
wait1ms(timer[i]);
}
}
}
void wait1ms(unsigned int
time) //Funktion Wartezeit
{
int k,i;
if
(P0==0x00) // Abfrage ob Fußgängerampel
{ // gedrückt
iMarker=1; // 1 wenn gedrückt
}
for(k=0;k<time;k++)
//Schleife Anzahl ms
{
for(i=0;i<4;i++); //Schleife läuft 1ms
}
}