hallo,
ich bekomme meine srf05 Sensoren die die testweise besitze,
nicht ausgelsen.....

könnt ihr euch das mal anschauen, eventuell findet ihr ja auf anhieb den fehler!
ich bin nämlich schon fehlerblind

gruss

Code:
#include <t89c51ac2.h>   // Header für Controller "AT89C51AC3"
#include <stdio.h>       // Standard-Eingabe-Ausgabe-Header
 

// sfr P0 = 0x80;    /* Port-0, address 80h */
// sfr P1 = 0x90;    /* Port-1, address 90h */
// sfr P2 = 0xA0;    /* Port-2, address 0A0h */
// sfr P3 = 0xB0;    /* Port-3, address 0B0h */

/*---------------------------------------------------------------------------
Dieses Programm liest die Entfernug aus dem Ultraschall Sensor SRF05 aus,
und gibt die Entferung in cm auf Port 2 in Form von aufleuchtenden LEDs aus.
-----------------------------------------------------------------------------*/

/*--- Eingaenge und Ausgaenge deklarieren ---*/

   sfr srfPort = 0x90;      // Die Ports MÜSSEN mit der Hex-Adress angegeben werden (0x90 = Port 1)
   sfr ausgabe = 0xA0;      // Die Ports MÜSSEN mit der Hex-Adress angegeben werden (0xA0 = Port 2)

   sbit trigger_pin = P1^4;
   sbit echo_pin = P1^3;

/*--- Variablen und Konstanten Deklarieren ---*/

   unsigned int i;  	

/*--- Methoden und Prototypen ---*/

   void main(void);			// Hauptprogramm
   void srf_messung_ein(void); 		// Schaltet den Port 1 auf High
   void srf_messung_aus(void);		// Schaltet den Port 1 auf Low und auf "einlesen"
   void delay_10ms(void);		// Wartet bis ein Burst ausgesendet wurde 
   void echo(void);

/*--- Hauptprogramm ---*/

	void main(void){       
		while(1){       
			ausgabe=0x1;                     //Port 2.1 zeigt den Betrieb an
        		srf_messung_ein();
        		delay_10ms();
            		srf_messung_aus();
			echo();
         	}      
   	} //  main

/*--- Zusatzfunktionen ---*/

	void delay_10ms(void) {  
         	// Timer0 vorbereiten
		TMOD=0x01;             	// Timer 0 im 16 Bit-Betrieb (Mode1) Binär 000010000
        	TH0=0xF5;            	// Reload Wert ist 0xFFFF = 65535
        	TL0=0xFF;            	// Startwert = 55535 d.h. 10ms bis 65535 -> High-Bit des Zählers   
        	TF0=0;                 	// Timer 0 Überlaufflag löschen
        	TR0=1;                 	// Timer 0 starten              
   	}

   	void srf_messung_ein(void){
      		trigger_pin = 1;       	// trigger_pin auf HIGH
   	}

	void srf_messung_aus(void){ 
		trigger_pin = 0;       	// trigger_pin auf LOW   
      		echo_pin = 0xFF;        // echo_pin "aufeinlesen" 
   	}

/*------------------------------------------------------------------
 Hier wird wohl der Fehler sein
--------------------------------------------------------------------*/

	void echo(void){
		TMOD=0x10;				// Timer1 im 16Bit Modus
		TH1=0xCF;				// Startwert 8ACF = 35535 = 30ms bis 65535, wenn der Zähler bis zum HIGH- Bit
		TL1=0x8A;				// zählt dann ist kein Objekt in Reichweite
		TF1=0;					// Überlaufflag löschen
		TR1=1; 	   				// Timer1 starten

		while (echo_pin != 0 && TF1 !=1){	// Misst die Dauer des “eingelesenen” High- Impulses
			i = (unsigned int) (TL1/29);	// schreibe gezählten Timerwert in "i" und gib es in cm aus
			if(i == 0 ){
				ausgabe=0x03;
			}
			if(i > 20 ){			// Objekt weiter weg wie 20 cm?
				ausgabe=0x07;
			}
			if(i > 60 ){			// Objekt weiter weg wie 60 cm?
				ausgabe=0x0F;
			}			
		}	   
	}