Automatisieren und Vernetzen mit Industrie-PC :: Stand :: 17.04.2004  
 
Impressum :: Feedback :: Forum :: Newsletter ::  
zurück zur letzten SeiteHome
 Pfad ::: Home / Mikrocontroller / Blinky



2.3. Programme mit Keil C51 / Philips LPC900

2.3.2. Programm Blinky.c

 

/* Blinky.C - LED Flasher for the Keil LPC900 EPM Emulator/Programmer Module */

#include <REG932.H> // register definition

void delay (unsigned int cnt)
{
   while (--cnt);
}

void main()
{
   unsigned char i;

   P2M1 = 0;

   for(;;)                                                      // Endlosschleife mit for (mit break und continue möglich, solch eine Schleife zu verlassen


   { for (i = 0x01; i; i <<= 1)                          //                     for (Initialisierung; (Abbruch-)Bedingung; Fortschaltung)
                                                                  // hier:   for (i= 0000 0001; i != 0; gesetzte Bit um eine Stelle nach rechts schieben)
                                                                                                                                //       also: 0000 0010
                                                                                                                                //   danach: 0000 0100
                                                                                                                                //   bis die 1 links wieder verschwindet
                                                                                                                                //   und Abbruchbedingung mit 0000 0000 erfüllt ist

                                                                                         

                                                                  // Diese for-Schleife basiert auf der Annahme, dass i zu false getestet wird,
                                                                  // wenn es den Wert 0 enthält; ein so genanntes C++-Idiom, das i != 0 entspricht  -
                                                                  // Der Kopf der for- Schleife hätte auch wie folgt geschrieben werden können:
                                                                  // for (i = 0x01; i !=0; i <<= 1)              

     { P2 = i;                                                 // der Wert des jeweiligen Schleifendurchlaufs wird am Port 2 ausgegeben, also 0000 0001,
                                                                  //  0000 0010, 0000 0100, 0000 1000, 0001 0000,
       delay (50000);
     }
     for (i = 0x80; i; i >>= 1)                           //                     for (Initialisierung; (Abbruch-)Bedingung; Fortschaltung)
                                                                   // hier:   for (i= 1000 0000; i != 0; gesetzte Bit um eine Stelle nach links schieben)
                                                                   //  hexadezimal:   8      0
                                                                                                                                //       also: 1000 0010
                                                                                                                                //   danach: 0100 0000
                                                                                                                                //   bis die 1 rechts wieder verschwindet
                                                                                                                                //   und Abbruchbedingung mit 0000 0000 erfüllt ist





     { P2 = i;                                                 // der Wert des jeweiligen Schleifendurchlaufs wird am Port 2 ausgegeben
       delay (50000);
     }
   }
}

 


 

  
  
 
          Beratender Fachlehrer: