MPU40670基于N32WB452单片机的驱动代码
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//定义MPU6050所需要的引脚
sbit SCL=P2^0; //时钟线
sbit SDA=P2^1; //数据线
//IIC初始化函数,用于开启IIC总线功能。
void I2C_Init(void) { SDA=1;SCL=1; }
//延时函数,使IIC总线上的信号更加平滑,不会那么急促。
void Delay_us(uchar t) { while(--t); }
//IIC发送一个字节函数,可以用来发送寄存器地址或者是寄存器里的内容。
void I2C_SendByte(uchar SendByte) { uchar i = 8; while (i--){ SCL = 0; _nop_(); if (SendByte & 0x80) SDA = 1; else SDA = 0; SendByte <<= 1; _nop_(); SCL = 1; _nop_(); } SCL = 0;}
//IIC读一个字节函数,读到的内容将会储存在RecvByte里面。
uchar I2C_RecvByte() { uchar i = 8, RecvByte = 0 ; while (i--){ RecvByte <<= 1 ; _nop_(); SCL = 1 ; _nop_(); if (SDA == 1 ) RecvByte |= 0x01 ; _nop_(); SCL = 0 ; _nop_(); } return RecvByte;}
//IIC开始信号函数,当然也是有关于位型IO方面的操作。
void I2CStart() { SDA=1 ; Delay_us(5); SCL=1 ; Delay_us(5); SDA=0 ; Delay_us(5); SCKL=0;}
//IIC结束信号函数,当然也是有关于位型IO方面的操作。 void I2CEnd() { SCKL=0 ; Delay us 5 ); SDAl-l-l-l-l-l->O->O->O->O->O->O->O->O->o - - - - - -> o -> o -> o -> o -> o -> o -> o ->o -- > O -- > O -- > O -- > O -- > O -- > O -- > O — — — — ——>o-- ---->o-- ---->o---- ---->o--- --- --- --- --- --- --- --- ---- ----- ----- ------ ------ ------- -------- -------- --------- --------- ----------- ---------------- ------------------------------ ----------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------ ----------------------------------------------------------- ------------------------------------------------------- --------------------------------------------------------
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!