/*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

            }

}