MSP430f5529模拟IIC协议

2020-07-03来源: eefocus关键字:MSP430f5529  模拟IIC协议  总线

读取数据之前需要释放总线,被这问题卡了好久


#include "msp430f5529.h"

//P8.1 SCL

//P8.2 SDA

#define    SCL_HIGH    P8OUT|=BIT1

#define    SCL_LOW     P8OUT&=~BIT1

#define    SDA_HIGH    P8OUT|=BIT2

#define    SDA_LOW     P8OUT&=~BIT2

#define    SDA_OUT     P8DIR|=BIT2

#define    SDA_IN      P8DIR&=~BIT2

#define    SCL_OUT     P8DIR|=BIT1

#define    SDA         P8IN&BIT2


void IIC_start();

void IIC_stop();

void IIC_writebyte(unsigned char IIC_byte);

unsigned char IIC_readebyte();

unsigned char IIC_testACK();

void IIC_masterACK();

void IIC_masterNACK();


void IIC_start()

{

SDA_OUT;

SCL_OUT;

    SCL_HIGH;

    SDA_HIGH;

    __delay_cycles(10);

    SDA_LOW;

    __delay_cycles(10);

    SCL_LOW;

}


void IIC_stop()

{

SDA_OUT;

SCL_OUT;

    SCL_LOW;

    SDA_LOW;

    __delay_cycles(10);

    SCL_HIGH;

    __delay_cycles(10);

    SDA_HIGH;

    __delay_cycles(10);

}


void IIC_writebyte(unsigned char IIC_byte)

{

    unsigned char i;

SDA_OUT;

SCL_OUT;

SCL_LOW;

__delay_cycles(10);

    for(i=0;i<8;i++)  

    {

        if(IIC_byte&0x80)    //写1

            SDA_HIGH;

        else                 //写0

            SDA_LOW;

__delay_cycles(10);

        SCL_HIGH;

    __delay_cycles(10);

        SCL_LOW;

    __delay_cycles(10);

        IIC_byte<<=1;         //循环左移,取最高位

    }

}


unsigned char IIC_readebyte()

{

    unsigned char i,k=0; 

SDA_IN;       //SDA设置为输入

SCL_OUT;

SCL_LOW;

__delay_cycles(50);

for(i=0;i<8;i++)

{

SCL_HIGH;

k=k<<1;

if(SDA)

k|=1;

        SCL_LOW;

        __delay_cycles(50);

}

SDA_OUT;        //SDA设置为输出

__delay_cycles(50);

return k;

}


unsigned char IIC_testACK()

{

SCL_LOW;

//SDA_IN;       //SDA设置为输入

//SDA_UP;

__delay_cycles(50);

SCL_HIGH;

__delay_cycles(50);

SCL_LOW;

//SDA_OUT;        //SDA设置为输出

__delay_cycles(50);

return 1;

}


void IIC_masterACK()

{   

    SDA_OUT;

SCL_OUT;

SCL_LOW;

SDA_LOW;

    SCL_HIGH;

__delay_cycles(5);

SCL_LOW;

__delay_cycles(5);

}

void IIC_masterNACK()

{

SDA_OUT;

SCL_OUT;

SCL_LOW;

SDA_HIGH;

__delay_cycles(5);

    SCL_HIGH;

__delay_cycles(5);

SCL_LOW;

__delay_cycles(5);

}

关键字:MSP430f5529  模拟IIC协议  总线 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic502082.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430FR6989功能介绍
下一篇:MSP430待机功耗问题

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

msp430f5529捕获加串口源码
msp430f5529捕获加串口,可以供大家学习单片机源程序如下:#include "msp430f5529.h"#define uint unsigned int#define uchar unsigned charuint flag,TA_cent,PerVal;unsigned long int val,cha;int m[5];void Delay10ms(unsigned int c)   //误差 0us{    unsigned char a, b;        //--c已经在传递过来的时候已经赋值了,所以在for
发表于 2020-07-29
MSP430f5529之PWM控制舵机程序
#include <msp430.h>                        //函数库int sum=0;                                  //全局变量int main(void){  volatile unsigned int i;     
发表于 2020-07-25
msp430f5529 MCP4725程序
_Voltage(float Vout)   //电压单位V{    unsigned char temp;    unsigned int Dn;    Dn = ( 4096 * Vout)/5;    temp = (0x0F00 & Dn) >> 8;  //12位数据高字节   //iic    I2C_Start();                
发表于 2020-07-25
msp430f5529 RC522射频卡程序
;   SDA p2.2    SCK P2.7    MOSI P3.3    MISO p3.4    IRQ 不接    RST p2.3连接好上述引线后,能实现以下功能:1.PC发送字符A,读出卡的型号和UID信息。2.PC发送字符F,单次寻卡模式,接触一次显示一次卡的型号信息。*/#include "msp430.h"#include "PIN_DEF.H"#include "RC522.H"#include "UART_Func.h"//串口已
发表于 2020-07-25
MSP430F5529单片机程序整理(串口、AD、定时器等)
#include <msp430.h>#include <stdint.h>#include "uart.h"#include "Flash.h"#include "ad.h"#include "stdio.h"#include "string.h"#define CPU_F                            ((double)1000000
发表于 2020-07-22
msp430f5529简单uart源程序(用串口助手 发什么 回复什么)
单片机源程序如下:/*****用串口助手 发什么  回复什么****/#include "msp430f5529.h"// ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz// P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;void main(void){  WDTCTL = WDTPW + WDTHOLD;               
发表于 2020-07-21
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved