Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

LunchPad G2553 关于硬件I2C控制IO拓展芯片PCF8574(8个IO) 不知为什么,指令发出去没有响应

$
0
0
#include <msp430g2553.h>

//宏定义
#define Slave_Add 0x42		//定义从机地址   PCF8574  A2- A1- A0+      地址:0100 001 0

unsigned char TXData;

//声明
void I2C_Init();
void Signal_LED();

int main(void)
{
	WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
	I2C_Init();

//	IE2 |= UCB0TXIE;
	__delay_cycles(100000);//给予从机准备时间
	//1

	TXData = Slave_Add;// 使能发送中断
	UCB0TXBUF = TXData;

	UCB0CTL1|=UCTR;		//发送模式
	UCB0CTL1 |= UCTR + UCTXSTT;
	while (UCB0CTL1 & UCTXSTT);//保证起始条件响应成功
	//2
	TXData = 0x00;
	UCB0TXBUF = TXData;

	UCB0CTL1|=UCTR;
	UCB0CTL1 |= UCTR + UCTXSTT;
	while (UCB0CTL1 & UCTXSTT);

	UCB0CTL1 |= UCTXSTP;	 	//stop
	while(UCB0CTL1&UCTXSTP);	//发送完成
	Signal_LED();
	while (1)
	{
		__bis_SR_register(CPUOFF + GIE);      // 低功耗模式0
	}
}
void I2C_Init()
{
	  P1SEL |= BIT6 + BIT7;
	  P1SEL2|= BIT6 + BIT7;

	  UCB0CTL1 |= UCSWRST;                      //使能  SW
	  UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;     //主机模式
	  UCB0CTL1 = UCSSEL_2 + UCSWRST;            //时钟  SMCLK   保持 SW reset
	  UCB0BR0 = 12;                             //通信频率fSCL = SMCLK/12 = ~100kHz
	  UCB0BR1 = 0;
	  UCB0I2CSA = Slave_Add;                    //从机地址
	  UCB0CTL1 &= ~UCSWRST;                     //清除 SW reset, resume operation
}

void Signal_LED()
{
    P1DIR = BIT0;
    P1OUT |= BIT0;
    _delay_cycles(100000);
    P1OUT ^= BIT0;
    _delay_cycles(100000);
}

Viewing all articles
Browse latest Browse all 3634

Trending Articles