#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); }
↧
LunchPad G2553 关于硬件I2C控制IO拓展芯片PCF8574(8个IO) 不知为什么,指令发出去没有响应
↧