/********************************************************************************************/
/*                                                                                          */
/*     TFH Georg Agricola, Bochum   /   Elektor-Verlag, Aachen                              */
/*                                                                                          */
/*     Fernlehrgang-Programm:  Leere C-Datei                                                */
/*                                                                                          */
/*                                                                                          */
/*     Autoren:           P.G. / B.v.B.                                                     */
/*                                                                                          */
/*     Zielsystem:        TFH-Core ONE, Prozessor: AT89C51CC03 (Atmel)                      */
/*                                                                                          */
/*                                                                                          */
/*     IDE/C-Compiler:    uC/51 (Wickenhäuser)                                              */
/*                                                                                          */
/*     Letzte Änderung:   29.06.2007                                                        */
/*                                                                                          */
/*     Datei:             leer.c                                                            */
/*                                                                                          */
/********************************************************************************************/

    /****************************************************************************************************/
    /*  Dieses Programm namens "recht_2.C" gibt ein zeitlich komplett parametrierbares                  */
    /*  Rechtecksignal am Port-Pin P1.0 aus.                                                            */
    /* Damit kann man waehrend des Betriebs die Breitenwerte des Signals einstellen                     */
    /* -->fuer die positive Impulsbreite tp wird der Trimm-Poti P1.6 im Bereich 1ms bis 256ms verwendet */
    /* -->fuer die negative Impulsbreite tn wird der Trimm-Poti P1.7 im Bereich 1ms bis 256ms verwendet */
    /* Der A/D-Wandler wird im 8-Bit-Modus betrieben                                                    */
    /*                                                                                                  */
    /****************************************************************************************************/

/*** Einbinden von Include-Dateien ***/
#include<stdio.h>
#include<at89c51cc03.h>



void main (void)     // Start des Hauptprogramms
{
    unsigned int wert_p16, wert_p17;  //Variablen zur Aufnahme des Teilergebnisses von Trimm-Poti p1.6 und p1.7
    unsigned int wert;              //Variable zur Aufnahme des zusammengesetzten Gesamtergebnisses

    /**************************************************************/
    /*  Initialisierung der seriellen Schnittstelle 0 des CC03ers */
    /*  Schnittstellenparameter: 9600Baud, 8 Datenbit, 1 Stopp-Bit*/
    /*  asynchroner Betrieb                                       */
    /**************************************************************/
    SCON=0x52;
    TMOD |=0x20;
    TH1=0xfd;
    TR1=1;
    TI=1;
    
    /* Initialisierung des A/D-Wandlers */
    ADCF = 0xc0;    // Port P1.6 und P1.7 als Analogeingang definieren,
                    // d.h., CH6 und CH7 sollen angesprochen werden
    ADCON = 0x20;   // Enable ADC, mit ADEN =1 und
                    // SCH2, SCH1, SCH2 sollen respektiv die Werte 110 und 111
                    // um den P1.0 steuern zu können...


    printf("\x1b\x48\x1b\x4a"); //löschen des Bildschirms
 
    while(1)
    {
        ADCON &= ~0x07;             // Sicher stellen, dass SCH2, SCH1, SCH0 auf null initialisiert sind
        ADCON |= 0x06;              // Auswahl von CH6
        ADCON &= ~0x40;             // Standard Mode
        ADCON = ADCON | 0x08;       // Start der Wandlung
        
        while ((ADCON & 0x10)==0);  //warten bis Wandlung fertig ist

        ADCON = ADCON & 0xef;       // End of Conversion Bit löschen
        wert_p16 = ADDH;            //Ergebnis des eingestellten Wertes von Poti P1.6 speichern

        /*Das vermeiden vom Programmabsturz */
        if(wert_p16==0)
        {
            wert_p16++;
        }
        _wait_ms(wert_p16);
        printf("tp hat den wert: %u ms\n\n", wert_p16); // Ausgabe von tp


        ADCON &= ~0x07;             // Sicher stellen, dass SCH2, SCH1, SCH0 auf null initialisiert sind
        ADCON |= 0x07;              // Auswahl von CH7
        ADCON &= ~0x40;             // Standard Mode
        ADCON = ADCON | 0x08;       // Start der Wandlung
        
        while ((ADCON & 0x10)==0);  //warten bis Wandlung fertig ist

        ADCON = ADCON & 0xef;       // End of Conversion Bit löschen
        wert_p17 = ADDH;             //Ergebnis des eingestellten Wertes von Poti P1.7 speichern

        
        /*Das vermeiden vom Programmabsturz */
        if(wert_p17==0)
        {
            wert_p17++;
        }
        _wait_ms(wert_p17);
        printf("tn hat den wert: %u ms\n\n", wert_p17); // Ausgabe von tn

        wert = wert_p16 + wert_p17; //tp + tn zusammenfuegen

    
        printf("die gesamte Impulsbreite ist: %u ms\n\n", wert);  //Ausgabe der gesamten Impulsbreite --> (tp + tn)
      


    }//end while
    
 

} //end main()

/********************************************************************************************/
/*** Ende des Hauptprogramms, d.h. Ende des gesamten Programms! *****************************/
/********************************************************************************************/