⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 是MSP430F2274的源代码
💻 C
字号:
#include "msp430x22x4.h"
/*此程序是USCIB0的I2C模式从机程序
首先按下图连接好导线,在启动主机程序前先启动从机程序
然后再启动主机程序,从机程序将每次收到的数据以中断的方式存入0400开始的ram中
当主机发满100的数据时,在最后一位后面加入停止位,从机接收到停止位时,进入相应中断,
并在中断服务中,设置sp,来使主程序退出低功耗
                                 /|\  /|\
                MSP430x22x4     10k  10k    MSP430x22x4
                    slave         |    |        master
              -----------------   |    |  -----------------
            -|XIN  P3.1/UCB0SDA|<-|---+->|P3.1/UCB0SDA  XIN|-
       32kHz |                 |  |      |                 | 32kHz
            -|XOUT             |  |      |             XOUT|-
             |     P3.2/UCB0SCL|<-+----->|P3.2/UCB0SCL     |
             |                 |         |                 |
*/

__no_init char data_ptr[100] @ 0x0400;//定义接收缓存的首地址为0x0400
int main( void )
{
  WDTCTL=WDTPW+WDTHOLD;               //关看门狗
  BCSCTL1 =CALBC1_1MHZ;               //设定DCO为1MHZ
  DCOCTL =CALBC1_1MHZ;
  P1DIR |=BIT0;                       //led使能
  P3SEL |=BIT1+BIT2;                  //p3.1为UCB0SDA,P3.2为UCB0SCL
  UCB0CTL0=UCSYNC+UCMODE_3;           //UCB0为I2C从机模式
  UCB0I2COA=88;                       //设定本机从机地址位88
  UCB0CTL1 &=~UCSWRST;                //进入I2C工作模式
  UCB0I2CIE |=UCSTPIE+UCSTTIE;        //开始位和停止位中断使能
  IE2 |=UCB0RXIE;                     //使能I2C接收中断    
  _BIS_SR(CPUOFF + GIE);              //进入低功耗0
  _NOP();                             //用于调试
  while(1);  
  return 0;
}

#pragma vector = USCIAB0TX_VECTOR     //数据接收中断服务
__interrupt void i2c_rx_isr(void)   
{
  static char i=0;
  data_ptr[i]=UCB0RXBUF;              //将收到的数据存入0x0400开始的RAM中
  i++;
}

#pragma vector = USCIAB0RX_VECTOR     //数据开始,停止位标志中断服务
__interrupt void i2c_stt_stp(void)
{
  if(UCSTPIFG&UCB0STAT)
  {
    _BIC_SR_IRQ(LPM0_bits);           //当接收到停止位时退出低功耗         
  }
  UCB0STAT &=~(UCSTPIFG+UCSTTIFG);    //清开始,停止标志为
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -