// BCD Einlesen 1  

 

#include <reg517.h>

#include <stdio.h>

 

void wait1ms(int anzms);

 

// Porterweiterung initialisieren

 

char xdata at 0xFF60 PPI1_A;

char xdata at 0xFF61 PPI1_B;

char xdata at 0xFF62 PPI1_C;

char xdata at 0xFF63 PPI1_STW;

 

char xdata at 0xFF80 PPI2_A;

char xdata at 0xFF81 PPI2_B;

char xdata at 0xFF82 PPI2_C;

char xdata at 0xFF83 PPI2_STW;

 

char xdata at 0xFFA0 PPI3_A;

char xdata at 0xFFA1 PPI3_B;

char xdata at 0xFFA2 PPI3_C;

char xdata at 0xFFA3 PPI3_STW;

 

int main ()

            {

               int i,hunderter,zehner,einer,zahl,h,z,e;

 

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

               PPI2_STW=0x80;             //mit PPI N16 alle Ports Ausgabe Regenmenge

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

              

               while(1)

               {

                        hunderter = (~P1)&0x0F;                // BCD-Schalter einlesen

                        zehner = ((~P5)&0xF0)/16; // BCD-Schalter einlesen

                        einer = (~P5)&0x0F;                        // BCD-Schalter einlesen

 

                        zahl = hunderter*100+zehner*10+einer; // Zahl ermitteln

                        zahl = zahl/2;                                     // die halbe Zahl für die                                h = zahl/100;                                                 // Ausgabe vorbereiten

                        z = (zahl-(h*100))/10;

                        e = (zahl-(h*100+z*10));

                        PPI1_A = h*16+z;                            //Zahl ausgeben, hunderter, zehner

                        PPI2_A = e*16;                                //Zahl ausgeben, einer

               }

            }

           

void wait1ms (int anzms)

{

int i,k;

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

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

}