//Jan Chroust 15.4.2013#include "C:\Users\Honza\Documents\pic\I2C_altimet\main.h"#define EEPROM_SDA PIN_B0#define EEPROM_SCL PIN_B1#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)#use rs232(baud=9600,parity=N,xmit=PIN_B3,rcv=PIN_B2,bits=8) //rcv TXD xmit RXD#define MPL3115_ADDR_R 0xC1 //addresa pro cteni#define MPL3115_ADDR_W 0xC0void mpl3115_setA (void) //nastavení pro výku{i2c_start(); //STANDBY modeI2C_Write(MPL3115_ADDR_W);I2C_write(0x26);I2C_write(0xB8);i2c_stop();i2c_start(); //PT_DATA_CFG setI2C_Write(MPL3115_ADDR_W);I2C_write(0x13);I2C_write(0x07); //hodnotai2c_stop();i2c_start(); //ACTIVE modeI2C_Write(MPL3115_ADDR_W);I2C_write(0x26);I2C_write(0xB9);i2c_stop();}void mpl3115_setP (void) //nastavení pro tlak{i2c_start(); //STANDBY modeI2C_Write(MPL3115_ADDR_W);I2C_write(0x26);I2C_write(0xB8);i2c_stop();i2c_start(); //PT_DATA_CFG setI2C_Write(MPL3115_ADDR_W);I2C_write(0x13);I2C_write(0x07); //hodnotai2c_stop();i2c_start(); //ACTIVE modeI2C_Write(MPL3115_ADDR_W);I2C_write(0x26);I2C_write(0x39);i2c_stop();}byte mpl3115_read (byte reg){byte i;i2c_start();I2C_Write(MPL3115_ADDR_W);I2C_write(reg);i2c_start();I2C_Write(MPL3115_ADDR_R);i=i2c_read(0);i2c_stop();return i;}float mpl3115_T (void) //teplota ve stupnich{int m;float l, t;m= mpl3115_read (0x04);l= (float)(mpl3115_read(0x05)>>4)/16.0;t = (float)(M + L);return t;}float mpl3115_A (void) //vyska v m{int16 m;unsigned int8 c;float l, a;m= mpl3115_read (0x01);c= mpl3115_read (0x02);l= (float)(mpl3115_read(0x03)>>4)/16.0;a = (float)((m << 8)|c) + l;return a;}float mpl3115_P (void) //tlak v Pa{unsigned int32 m;unsigned int16 c;unsigned int l;float p, l1;m= mpl3115_read (0x01);c= mpl3115_read (0x02);l=mpl3115_read(0x03);l1= (float)(l>>4)/4.0;p = (float)((m << 10)|(c<<2)|(l>>6)) + l1;return p;}void main(){float p, t, a;printf("Tlakomer nebo vyskomer \r\n",);while(TRUE){mpl3115_setP(); //nastaveni pro tlak a teplotudelay_ms (500);t=mpl3115_T();p=mpl3115_P();mpl3115_setA(); //nastaveni pro vysku a teplotudelay_ms (500);a=mpl3115_A();printf("Teplota: %10.4f(stupne)\r\n", t);printf("Tlak: %10.4f(Pa)\r\n", p);printf("Výka: %10.4f(m)\r\n", a);delay_ms (1000);}}