// Wetterstation1   100er und 10 Stellen hoch zählen, Temp

 

#include <reg517.h>

#include <stdio.h>

 

void wait1ms(int anzms);

 

char xdata at 0xFF60 PPI1_A;       // initiliesieren  8255 N15

char xdata at 0xFF61 PPI1_B;

char xdata at 0xFF62 PPI1_C;

char xdata at 0xFF63 PPI1_STW;

 

char xdata at 0xFF80 PPI2_A;       // initiliesieren  8255 N16

char xdata at 0xFF81 PPI2_B;

char xdata at 0xFF82 PPI2_C;

char xdata at 0xFF83 PPI2_STW;

 

char xdata at 0xFFA0 PPI3_A;      // initiliesieren  8255 N17

char xdata at 0xFFA1 PPI3_B;

char xdata at 0xFFA2 PPI3_C;

char xdata at 0xFFA3 PPI3_STW;

 

int main ()

            {

               int i;

               PPI1_STW=0x80;             //mit PPI N15 alle Ports Ausgabe

               while(1)

               {

                        for (i=0;i<100;i++)

                        {

                                    PPI1_B=(i/10)*16+(i%10); Ausgabe Hunderter, Zehner Temp

                                    wait1ms(500);

                        }

               }

            }

           

void wait1ms (int anzms)

{

int i,k;

for(k=0;k<anzms;k++)

for(i=0;i<480;i++);

}

// Wetterstation2   100er, 10er und 1er Stellen hoch zählen, Temp

 

#include <reg517.h>

#include <stdio.h>

 

void wait1ms(int anzms);

 

char xdata at 0xFF60 PPI1_A;       // initiliesieren  8255 N15

char xdata at 0xFF61 PPI1_B;

char xdata at 0xFF62 PPI1_C;

char xdata at 0xFF63 PPI1_STW;

 

char xdata at 0xFF80 PPI2_A;       // initiliesieren  8255 N16

char xdata at 0xFF81 PPI2_B;

char xdata at 0xFF82 PPI2_C;

char xdata at 0xFF83 PPI2_STW;

 

char xdata at 0xFFA0 PPI3_A;      // initiliesieren  8255 N17

char xdata at 0xFFA1 PPI3_B;

char xdata at 0xFFA2 PPI3_C;

char xdata at 0xFFA3 PPI3_STW;

 

int main ()

            {

               int i,tausender,hunderter,zehner,einer;

               PPI1_STW=0x80;             //mit PPI N15 alle Ports Ausgabe Temperatur

               while(1)

               {

                        for (i=0;i<1000;i++)

                        {

                                    hunderter=i/100;

                                    zehner=(i-hunderter*100)/10;

                                    einer=(i-(hunderter*100+zehner*10));

                                    PPI1_B=hunderter*16+zehner;      // Ausgabe Hunderter, Zehner Temp                                

PPI1_C=einer;                     // Ausgabe, Einer Temp

                                    wait1ms(10);

                        }

               }

            }

           

void wait1ms (int anzms)

{

int i,k;

for(k=0;k<anzms;k++)

for(i=0;i<480;i++);

}

// Wetterstation3  

// 1000er, 100er, 10er und 1er Stellen hoch zählen, Temp, Luftdruck

 

#include <reg517.h>

#include <stdio.h>

 

void wait1ms(int anzms);

 

char xdata at 0xFF60 PPI1_A;       // initiliesieren  8255 N15

char xdata at 0xFF61 PPI1_B;

char xdata at 0xFF62 PPI1_C;

char xdata at 0xFF63 PPI1_STW;

 

char xdata at 0xFF80 PPI2_A;       // initiliesieren  8255 N16

char xdata at 0xFF81 PPI2_B;

char xdata at 0xFF82 PPI2_C;

char xdata at 0xFF83 PPI2_STW;

 

char xdata at 0xFFA0 PPI3_A;      // initiliesieren  8255 N17

char xdata at 0xFFA1 PPI3_B;

char xdata at 0xFFA2 PPI3_C;

char xdata at 0xFFA3 PPI3_STW;

 

int main ()

            {

               int i,tausender,hunderter,zehner,einer;

               PPI1_STW=0x80;             //mit PPI N15 alle Ports Ausgabe Temperatur

               PPI3_STW=0x80;             //mit PPI N17 alle Ports Ausgabe Luftdruck

               while(1)

               {

                        for (i=0;i<10000;i++)

                        {

                                    tausender=i/1000;

                                    hunderter=(i-tausender*1000)/100;

                                    zehner=(i-(tausender*1000+hunderter*100))/10;

                                    einer=(i-(tausender*1000+hunderter*100+zehner*10));

                                    PPI3_A=tausender*16+hunderter; // Ausgabe Tausender,Hunderter, Luftdruck

                                    PPI3_C=zehner*16+einer;  // Ausgabe Zehner, Einer Luftdruck

                                    PPI1_B=hunderter*16+zehner; // Ausgabe Hunderter, Zehner Temp 

                                    PPI1_C=einer;          // Ausgabe, Einer Temp

                                    wait1ms(10);

                        }

               }

            }

           

void wait1ms (int anzms)

{

int i,k;

for(k=0;k<anzms;k++)

for(i=0;i<480;i++);

}

***************************************************************************

// Wetterstation4

// 1000er, 100er, 10er und 1er Stellen hoch zählen, Temp, Luftdruck

// und Windrad

 

#include <reg517.h>

#include <stdio.h>

 

void wait1ms(int anzms);

void wind();

char xdata at 0xFF60 PPI1_A;       // initiliesieren  8255 N15

char xdata at 0xFF61 PPI1_B;

char xdata at 0xFF62 PPI1_C;

char xdata at 0xFF63 PPI1_STW;

 

char xdata at 0xFF80 PPI2_A;       // initiliesieren  8255 N16

char xdata at 0xFF81 PPI2_B;

char xdata at 0xFF82 PPI2_C;

char xdata at 0xFF83 PPI2_STW;

 

char xdata at 0xFFA0 PPI3_A;      // initiliesieren  8255 N17

char xdata at 0xFFA1 PPI3_B;

char xdata at 0xFFA2 PPI3_C;

char xdata at 0xFFA3 PPI3_STW;

 

int main ()

            {

               int i,tausender,hunderter,zehner,einer;

               PPI1_STW=0x80;             //mit PPI N15 alle Ports Ausgabe Temperatur

               PPI3_STW=0x80;             //mit PPI N17 alle Ports Ausgabe Luftdruck

              

               while(1)

               {

                        for (i=0;i<10000;i++)

                        {

                                    tausender=i/1000;

                                    hunderter=(i-tausender*1000)/100;

                                    zehner=(i-(tausender*1000+hunderter*100))/10;

                                    einer=(i-(tausender*1000+hunderter*100+zehner*10));

                                    PPI3_A=tausender*16+hunderter; ; // Ausgabe Tausender,Hunderter, Luftdruck

                                    PPI3_C=zehner*16+einer; // Ausgabe Zehner, Einer Luftdruck                                   PPI1_B=hunderter*16+zehner; // Ausgabe Hunderter, Zehner Temp 

                                    PPI1_C=einer;          // Ausgabe, Einer Temp

                                    wind();

                                    wait1ms(50);             // Funktionsaufruf Ansteuerung Windrad

 

                        }

               }

            }

           

void wait1ms (int anzms)

{

int i,k;

for(k=0;k<anzms;k++)

for(i=0;i<480;i++);

}     

 

void wind()                 //Funktion Ansteuerung Windrad

 

// Achtung umgekehrte Logik, Null = Ein und Eins ist Aus

{

PPI3_B=0x7F;  //PB_7 Ein, 0111 1111

wait1ms(50);

PPI3_B=0xBF;  //PB_6 Ein, 1011 1111

wait1ms(50);

PPI3_B=0xDF;  //PB_5 Ein, 1101 1111

wait1ms(50);

PPI3_B=0xEF;  //PB_4 Ein, 1110 1111

wait1ms(50);

PPI3_B=0xF7;  //PB_3 Ein, 1111 0111

wait1ms(50);

PPI3_B=0xFB;  //PB_2 Ein, 1111 1011

wait1ms(50);

PPI3_B=0xFD;  //PB_1 Ein, 1111 1101

wait1ms(50);

PPI3_B=0xFE;  //PB_0 Ein, 1111 1110

wait1ms(50);

}