本人经过反复调试确定参数,得出最优算法,实现MPU6050的430控制程序,先上程序:
//以下是传感器相关文件
//mpu6050.h
#define CPU_F ((double)8000000)
#define delayus(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//宏定义延时函数
#define delayms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define SCL1 P5OUT|=BIT0
#define SCL0 P5OUT&=~BIT0
#define SCLOUT P5DIR|=BIT0;
#define SDA1 P5OUT|=BIT1//IIC数据引脚
#define SDA0 P5OUT&=~BIT1
#define SDAIN P5DIR&=~BIT1
#define SDAOUT P5DIR|=BIT1
#define SDADATA (P5IN&BIT1)
//****************************************
//定义MPU6050内部地址
//****************************************
#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)
#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)
#define GYRO_CONFIG 0x1B//陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
#define ACCEL_CONFIG 0x1C//加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define TEMP_OUT_H 0x41
#define TEMP_OUT_L 0x42
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define PWR_MGMT_1 0x6B//电源管理,典型值:0x00(正常启用)
#define WHO_AM_I 0x75//IIC地址寄存器(默认