手机版

MSP430模拟IIC总线程序

发布时间:2024-11-08   来源:未知    
字号:

MSP430学习资料

MSP430模拟IIC总线程序

本程序由ygyun会员提供,非常感谢无私奉献!

P4.7---SDA

P4.6---SCL

#include "msp430x44x.h"

#define SCL 0X40;

#define SDA 0X80;

#define Ram_addr 0x250;

int R_word;

int Ack_Flag;

void Delay(int m)

{

while(m-- > 0);

}

void Start(void)

{

P4OUT = 0;

P4DIR &= ~SCL;

P4DIR &= ~SDA;//SET HIGH LEVEL

P4DIR |= SDA;

P4DIR |= SCL;

}

void Stop(void)

{

P4DIR |= SDA;

P4DIR &= ~SCL;

P4DIR &= ~SDA;

P4DIR |= SCL;

}

void Send_Byte(char Byte)

{

int i;

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

{

if(Byte & 0x80)

{

MSP430学习资料

P4DIR &= ~SDA;

}

else

{

P4DIR |= SDA;

}

P4DIR &= ~SCL;

Delay(50);

P4DIR |= SCL;

Byte = Byte << 1;

}

}

void Ack(void)

{

P4DIR &= ~SDA;

P4DIR &= ~SCL;

Ack_Flag = 0;

Delay(10);

if ((P4IN & 0x80))

{

Ack_Flag = 1;

}

P4DIR |= SCL;

Delay(10);

}

void NOAck(void)

{

P4DIR &= ~SDA;

Delay(10);

P4DIR &= ~SCL;

Delay(10);

P4DIR |= SCL;

Delay(10);

P4DIR |= SDA;

}

void Receive_Byte(void)

{

int j;

R_word = 0x00;

P4DIR &= ~SDA;

MSP430学习资料

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

{

P4DIR &= ~SCL;

if(P4IN & 0x80)

{

R_word |= 0x01;

}

else

{

R_word &= 0xFE;

}

//Delay(50);

P4DIR |= SCL;

R_word = R_word << 1;

}

R_word = R_word >>1;

}

void I2C_Write(int W_addr,int word)

{

while (1)

{

Start();

Delay(20);

Send_Byte(0xA0);//write a byte :slave device Ack();

if (Ack_Flag)

continue;

Send_Byte(W_addr);// write a byte :e2prom address Ack();

if(Ack_Flag)

continue;

Send_Byte(word);

Ack();

if(!(Ack_Flag))

break;

}

Stop();

}

MSP430学习资料

void I2C_Random_Read(int R_addr) {

int *paddr;

paddr = (int*)Ram_addr; while(1)

{

Start();

Send_Byte(0xA0);

Ack();

if(Ack_Flag)

continue;

Send_Byte(R_addr);

Ack();

if(Ack_Flag)

continue;

Start();

Send_Byte(0xA1);

Ack();

if(!Ack_Flag)

break;

}

Receive_Byte();

*paddr = R_word;

NOAck();

Stop();

}

void main(void)

{

P4DIR = 0XFF;

WDTCTL = WDTHOLD+WDTPW; while(1)

{

I2C_Write(0x2A,0x10); Delay(500);

I2C_Random_Read(0x2A); }

}

MSP430模拟IIC总线程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)