欢迎光临散文网 会员登陆 & 注册

MSP430F5529 i2c

2023-07-23 18:43 作者:StolenMaterial  | 我要投稿

b站上5529视频几乎没有iic的,虽然这玩意儿是通用的,但一开始总会绕点弯路,比如时钟配置不对啊什么的。这几天在用也写了一个。 /*Endurdur*/ #include #define Dur_SCL_Reset() P8OUT &= ~BIT1 //SCL P8.1 #define Dur_SCL_Set() P8OUT |= BIT1 #define Dur_SCL_IN() P8DIR&=~BIT1 #define Dur_SCL_OUT() P8DIR|=BIT1 #define Dur_SDA_Reset() P8OUT &= ~BIT2 //SDA P8.2 要改用ctrl+F替换 #define Dur_SDA_Set() P8OUT |= BIT2 #define Dur_SDA_IN() P8DIR&=~BIT2 #define Dur_SDA_OUT() P8DIR|=BIT2 void I2C_Start() {   Dur_SCL_OUT();   Dur_SDA_OUT();   Dur_SCL_Set();   Dur_SDA_Set();   __delay_cycles(10);   Dur_SDA_Reset();   __delay_cycles(10);   Dur_SCL_Reset(); }//依照I2C的定义启动I2C void I2C_Stop() {   Dur_SDA_OUT();   Dur_SCL_OUT();   Dur_SDA_Reset();   Dur_SCL_Set() ;   __delay_cycles(10);   Dur_SDA_Set();   __delay_cycles(10); }//按照IIC的定义关闭IIC void I2C_Ack(unsigned char ack) {   Dur_SDA_OUT();   Dur_SCL_OUT();   if(ack==1)   {     Dur_SDA_Set();   }   else if(ack==0)   {     Dur_SDA_Reset();   }   else     return;   Dur_SCL_Set() ;   __delay_cycles(10);   Dur_SCL_Reset();   __delay_cycles(10); }//SCL发送应答信号,这时候如果SDA没有拉低电平就未应答 unsigned char I2C_testAck() {   unsigned char c=0;   Dur_SCL_OUT();   Dur_SDA_IN();   Dur_SCL_Set();   __delay_cycles(10);   Dur_SCL_Reset();   __delay_cycles(10);   Dur_SDA_Set();   return c; } void I2C_Write(unsigned char I2C_Byte)//要发送的数据 {     unsigned char i,data;     data=I2C_Byte;     Dur_SDA_OUT();     Dur_SCL_OUT(); Dur_SCL_Reset();     for(i=0;i<8;i++)     {       if((data<

MSP430F5529 i2c的评论 (共 条)

分享到微博请遵守国家法律