Ansicht:   

#156525 C - Funktionsaufruf will nicht ... ??? (pc.coding)

verfaßt von Mr. Teflon, 11.08.2009, 18:34:03

Hallo,

würdet Ihr mir helfen?

Folgende Abarbeitung soll zur Funktion gemacht werden. So wie es ist funktioniert es.


#include \"sfr_r813.h\"                  // SpecialFunctionRegister des R8C/13
#include \"math.h\"       

#define uint  unsigned int             // Abkürzungen 
#define uchar unsigned char

uchar chan;           		// Mess-Kanal chan = 4 ... 6
long SensorMin;			// Bsp. A/D Digitwert 231 bei Temperatursensor bei 0°C
long SensorMax;			// Bsp. A/D Digitwert 386 bei Temperatursensor bei 100°C
float wert2;    
unsigned char D;

// ********** Temperaturberechnung aus A/D und Ausgabe an COM ********** \\\\

   SensorMin = 231;				// Bsp. A/D Digitwert 231 bei Temperatursensor bei 0°C
   SensorMax = 386;				// Bsp. A/D Digitwert 386 bei Temperatursensor bei 100°C
   	                     
   wert2 = (float) ad_in(4);				        // Bsp. wert2 = 609
  
   if(wert2 < 231)						// 231 Digit = 0°C
   wert2 = 231;							// Werte unter 0°C werden auf 0°C gesetzt
   
   wert2 = (wert2-SensorMin)/(SensorMax-SensorMin)*100; // Temperaturberechnung, wert2 = 243,8
   
   wert2 = wert2 / 100;						// wert2 = 2,438
   D = wert2;							// Ganzzahl D = 2
   com_txd (D + 48);						// Hunderter Stelle als Ganzzahl an COM
   
   wert2 = wert2 - D;						// 2,438 - 2 = 0,438
   wert2 = wert2 * 10;						// 0,438 * 10 = 4,38
   D = wert2;							// Ganzzahl D = 4
   com_txd (D + 48);						// Zehner Stelle als Ganzzahl an COM
   
   wert2 = wert2 - D;						// 4,38 - 4 = 0,38
   wert2 = wert2 * 10;						// 0,38 * 10 = 3,8
   D = wert2;							// Ganzzahl D = 3
   com_txd (D + 48);						// Einer Stelle als Ganzzahl an COM
   
   com_txd (0x2e);						// Dezimalpunktausgabe an COM
	
   wert2 = wert2 - D;						// 3,8 - 3 = 0,8
   wert2 = wert2 * 10;						// 0,8 * 10 = 8
   D = wert2;							// Ganzzahl D = 8
   com_txd (D + 48);						// erste Kommastelle als Ganzzahl an COM
   
   // com_txd (176);						// Zeichen ° an COM
   com_txd (\'C\');
   
   com_print(\"\\n\\r\");               		// Zeilenende
    



Wenn ich versuche dieses zur Funktion zu machen, meckert immer der Compiler an der Deklaration der Funktion. Egal ob void oder unsigned int etc. davor steht. Die A/D Kanalnummer wird beim Aufruf übergeben. chan wäre in dem Fall Kanal 4.


void com_Temperatur (uchar chan)
   {

   ...
   wert2 = (float) ad_in(chan);	
   ...

   }
	    	  
   com_Temperatur(4);
	  



Was ist falsch?
Bei anderen Funktionsaufrufen steht es auch void davor und funktioniert.
Ich verstehe es nicht.

Das hier funktioniert zum Bsp.


//*************************  Ausgabe an COM
void com_integer2 (long data)
{
   long byt;
   if ( data >= 1000000 ) {data = 999999; }
   byt   = data / 100000;
   data  = data - byt * 100000;
   com_txd(byt  + 48);
   byt   = data / 10000;
   data  = data - byt * 10000;
   com_txd(byt  + 48);
   byt   = data / 1000;
   data  = data - byt * 1000;
   com_txd(byt  + 48);
   byt   = data / 100;
   data  = data - byt * 100;
   com_txd(byt  + 48);
   byt   = data / 10;
   data  = data - byt * 10;
   com_txd(byt  + 48);
   com_txd(data + 48); 
}

com_integer2(Temperatur3);

--
___________
Tschau
Mr. Teflon

 

gesamter Thread:

Ansicht:   
Auf unserer Web-Seite werden Cookies eingesetzt, um diverse Funktionalitäten zu gewährleisten. Hier erfährst du alles zum Datenschutz