اطلاعیه

Collapse
No announcement yet.

اضافه کردن دستور (int main(void

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اضافه کردن دستور (int main(void

    سلام این برنامه دستور (int main(void رو تداره اضافه که میکنم اررور میده . باید کدوم قسمت این دستور رو اضافه کنم؟؟
    کد:
    #include "BMP180.h"
    
    extern volatile uint8_t I2C_MasterBuffer[I2C_PORT_NUM][I2C_BUFSIZE];
    extern volatile uint8_t I2C_SlaveBuffer[I2C_PORT_NUM][I2C_BUFSIZE];
    extern volatile uint32_t I2C_WriteLength[I2C_PORT_NUM];
    extern volatile uint32_t I2C_ReadLength[I2C_PORT_NUM];
    
    int AC1,AC2,AC3,VB1,VB2,MB,MC,MD;
    unsigned int AC4,AC5,AC6;
    double c5,c6,mc,md,x0,x1,x2,Y0,Y1,Y2,p0,p1,p2;
    
    char BMP180_Init(void) {
    	double c3,c4,b1;
    	
    	if (BMP180_I2C_PORT_NUM == 0) {
    		I2C0_Init(FALSE);
    	} else if (BMP180_I2C_PORT_NUM == 1) {
    		I2C1_Init(FALSE);
    	} else {
    		I2C2_Init();
    	}
    
    	if (BMP180_I2C_ReadRegister(BMP180_ID_REGISTER) == BMP180_ID) {
    		if (BMP180_ReadInt(0xAA, &AC1) &&
    		BMP180_ReadInt(0xAC, &AC2) &&
    		BMP180_ReadInt(0xAE, &AC3) &&
    		BMP180_ReadUInt(0xB0, &AC4) &&
    		BMP180_ReadUInt(0xB2, &AC5) &&
    		BMP180_ReadUInt(0xB4, &AC6) &&
    		BMP180_ReadInt(0xB6, &VB1) &&
    		BMP180_ReadInt(0xB8, &VB2) &&
    		BMP180_ReadInt(0xBA, &MB) &&
    		BMP180_ReadInt(0xBC, &MC) &&
    		BMP180_ReadInt(0xBE, &MD)) {
    			// All reads completed successfully!
    
    			// Compute floating-point polynominals
    
    			c3 = 160.0 * pow(2,-15) * AC3;
    			c4 = pow(10,-3) * pow(2,-15) * AC4;
    			b1 = pow(160,2) * pow(2,-30) * VB1;
    			c5 = (pow(2,-15) / 160) * AC5;
    			c6 = AC6;
    			mc = (pow(2,11) / pow(160,2)) * MC;
    			md = MD / 160.0;
    			x0 = AC1;
    			x1 = 160.0 * pow(2,-13) * AC2;
    			x2 = pow(160,2) * pow(2,-25) * VB2;
    			Y0 = c4 * pow(2,15);
    			Y1 = c4 * c3;
    			Y2 = c4 * b1;
    			p0 = (3791.0 - 8.0) / 1600.0;
    			p1 = 1.0 - 7357.0 * pow(2,-20);
    			p2 = 3038.0 * 100.0 * pow(2,-36);
    			
    			return 1;
    		}
    	}
    	
    	return 0;
    }
    
    char BMP180_StartTemperature(void) {
    	unsigned char data[2], result;
    
    	data[0] = BMP180_REG_CONTROL;
    	data[1] = BMP180_COMMAND_TEMPERATURE;
    
    	result = BMP180_I2C_WriteBytes(data, 2);
    	if (result)	{
    		return 1;
    	} else {
    		return 0; // or return 0 if there was a problem communicating with the BMP
    	}
    }
    
    char BMP180_GetTemperature(double *T) {
    	char result;
    	double tu, a;
    
    	result = BMP180_I2C_ReadBytes(BMP180_REG_RESULT, 2);
    	if (result) {
    		tu = (I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][0] * 256.0) + I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][1];
    
    		a = c5 * (tu - c6);
    		*T = a + (mc / (a + md));
    	}
    
    	return result;
    }
    
    char BMP180_StartPressure(char oversampling) {
    	unsigned char data[2], result, delay;
    
    	data[0] = BMP180_REG_CONTROL;
    
    	switch (oversampling) {
    		case 1:
    			data[1] = BMP180_COMMAND_PRESSURE1;
    			delay = 20;
    		break;
    		case 2:
    			data[1] = BMP180_COMMAND_PRESSURE2;
    			delay = 30;
    		break;
    		case 3:
    			data[1] = BMP180_COMMAND_PRESSURE3;
    			delay = 40;
    		break;
    		default:
    			data[1] = BMP180_COMMAND_PRESSURE0;
    			delay = 10;
    		break;
    	}
    	
    	result = BMP180_I2C_WriteBytes(data, 2);
    	if (result == I2C_OK)
    		return delay;
    	else
    		return 0; // or return 0 if there was a problem communicating with the BMP
    }
    
    char BMP180_GetPressure(double *P, double T) {
    	char result;
    	double pu,s,x,y,z;
    
    	result = BMP180_I2C_ReadBytes(BMP180_REG_RESULT, 3);
    	if (result) {
    		pu = (I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][0] * 256.0) + I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][1] + (I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][2]/256.0);
    
    		s = T - 25.0;
    		x = (x2 * pow(s,2)) + (x1 * s) + x0;
    		y = (Y2 * pow(s,2)) + (Y1 * s) + Y0;
    		z = (pu - x) / y;
    		*P = (p2 * pow(z,2)) + (p1 * z) + p0;
    	}
    	
    	return result;
    }
    
    double BMP180_Sealevel(double P, double A) {
    	return (P/pow(1-(A/44330.0),5.255));
    }
    
    double BMP180_Altitude(double P, double P0) {
    	return (44330.0*(1-pow(P/P0,1/5.255)));
    }
    
    char BMP180_ReadUInt(unsigned char address, unsigned int *value) {
    	if (BMP180_I2C_ReadBytes(address, 2) == I2C_OK) {
    		*value = (((unsigned int)I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][0]<<8) | (unsigned int)I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][1]);
    
    		return 1;
    	}
    	
    	value = 0;
    	
    	return 0;
    }
    
    
    char BMP180_ReadInt(unsigned char address, int *value) {
    	if (BMP180_I2C_ReadBytes(address, 2) == I2C_OK) {
    		*value = (((int)I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][0]<<8) | (int)I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][1]);
    		if (*value & 0x8000) *value |= 0xFFFF0000; // sign extend if negative
    		return 1;
    	}
    	
    	value = 0;
    	
    	return 0;
    }
    
    unsigned int BMP180_I2C_WriteRegister(char regAdd, char value) {
    	I2C_WriteLength[BMP180_I2C_PORT_NUM] = 3;
    	I2C_ReadLength[BMP180_I2C_PORT_NUM] = 0;
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][0] = BMP180_ADDRESS;	// I2C Address
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][1] = regAdd;	// Register								 
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][2] = value;	// Configuration port		
    	return I2C_Engine(BMP180_I2C_PORT_NUM);
    }
    
    char BMP180_I2C_ReadRegister(char regAdd) {
    	I2C_WriteLength[BMP180_I2C_PORT_NUM] = 2;
    	I2C_ReadLength[BMP180_I2C_PORT_NUM] = 0;
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][0] = BMP180_ADDRESS;	// I2C Address
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][1] = regAdd;	// Register					
    	I2C_Engine(BMP180_I2C_PORT_NUM);
    	
    	I2C_WriteLength[BMP180_I2C_PORT_NUM] = 1;
    	I2C_ReadLength[BMP180_I2C_PORT_NUM] = 1;
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][0] = (BMP180_ADDRESS | I2C_READ_BIT);	// I2C Address			
    	I2C_Engine(BMP180_I2C_PORT_NUM);
    	
    	return (char)I2C_SlaveBuffer[BMP180_I2C_PORT_NUM][0];
    }
    
    unsigned int BMP180_I2C_WriteBytes(unsigned char *values, char length) {
    	int i=0;
    	
    	I2C_WriteLength[BMP180_I2C_PORT_NUM] = (length + 1);
    	I2C_ReadLength[BMP180_I2C_PORT_NUM] = 0;
    	
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][0] = BMP180_ADDRESS;	// I2C Address
    	
    	for(i=0; i<length; i++) {
    		I2C_MasterBuffer[BMP180_I2C_PORT_NUM][i+1] = values[i];
    	}
    		
    	I2C_Engine(BMP180_I2C_PORT_NUM);
    
    	return I2C_Engine(BMP180_I2C_PORT_NUM);
    }
    
    unsigned int BMP180_I2C_ReadBytes(char regAdd, char number) {
    	I2C_WriteLength[BMP180_I2C_PORT_NUM] = 2;
    	I2C_ReadLength[BMP180_I2C_PORT_NUM] = 0;
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][0] = BMP180_ADDRESS;	// I2C Address
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][1] = regAdd;	// Register					
    	I2C_Engine(BMP180_I2C_PORT_NUM);
    	
    	I2C_WriteLength[BMP180_I2C_PORT_NUM] = 1;
    	I2C_ReadLength[BMP180_I2C_PORT_NUM] = number;
    	I2C_MasterBuffer[BMP180_I2C_PORT_NUM][0] = (BMP180_ADDRESS | I2C_READ_BIT);	// I2C Address			
    
    	return I2C_Engine(BMP180_I2C_PORT_NUM);
    }
    
    /****************************************************************************
                  End Of File
    ****************************************************************************/

    #2
    پاسخ : اضافه کردن دستور (int main(void

    سلام،
    این فایل که شما گذاشتین شبیه یک هدر فایل هستش!
    شما باید یک فایل .c داشته باشید که برنامه اصلی و منطق کارتون داخل اون قرداره، و اونجا int main (void) باید وجود داشته باشه!
    هر انسانی که احساس بی نیازی کند سرکش و طغیان گر می شود...

    دیدگاه


      #3
      پاسخ : اضافه کردن دستور (int main(void

      بعد از آخرین آکولاد یک تابع مین درست کن.
      تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
      داشتن عقله زيادتر از دیگر آدم ها است

      دیدگاه

      لطفا صبر کنید...
      X