#include #include #include #include char string2[15]; int i; int zaehler = 0; int zaehlerstand; unsigned int e_wert; unsigned int a_wert2; unsigned int a_wert; int laenge; sbit at P0^7 sensortaste; sbit at P0^6 led; void init_timer0(void) { TH0 = 0x00; //Timer 0 High Byte setzen TL0 = 0x00; //Timer 0 Low Byte setzen ET0 = 0; //Timer 0 Interrupt deaktivieren TR0 = 0; //Timer 0 am Anfang deaktivieren } void uart_interrupt(void) interrupt 4 using 1 { /* RI Flag Abfrage */ } void uart_init(void) { // Baudrate = 19200 SCON = 0x50; // 8 Bit UART REN = 1; //Recieve Interrupt Enable IEN0 =0x10; //enable Uart interrupt TH1=0xFD; PCON |=0x80; TMOD |=0x21; // use timer 1 as baudrate generator TCON=0x40; ES=1; // Enable Serial IRQ (if required) EA= 1; // Enable general IRQs (if required) TI = 0; } void main() { uart_init(); init_timer0(); sensortaste = 0; //Kondensator entladen TR0 = 1; //Timer 0 starten /* 1ms warten,damit sicher gegangen wird,dass der Kondensator wirklich entladen ist (das sollte die while Schleife machen)*/ while ( ((TH0 =!0xFC) && (TL0 =!0x66)) || ((TH0 == 0xFC) && (TL0 =! 0x66)) || ((TH0 =! 0xFC) && (TL0 == 0x66)) ); TR0 = 0; //Timer 0 deaktivieren init_timer0(); //Initialisierung TR0 = 1; //Timer wieder starten sensortaste = 1; //Kondensator wieder aufladen while(sensortaste == 0); //solange der Kondensator noch auf "logisch 0" geladen ist TR0 = 0; //Timer deaktivieren a_wert = TH0; //Zaehlerstand holen(TL0) a_wert2 = TL0; //Zaehlerstand holen(TL0) e_wert = a_wert + a_wert2; //Zaehlerstand zusammenbauen (TH0 + TL0) sprintf (string2, "%d", e_wert); //Umwandlung in einen String laenge = strlen(string2); //Stringlaenge for(i=0;i