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

📄 lab-07-2013.c

📁 MSP430F2013是TI的U盘开发工具对SPI进行读写的工程源程序包
💻 C
字号:
//******************************************************************************
//  MSP430F20x3 Demo - SPI full-Duplex 3-wire Slave
//  (modified code example "msp430x20x3_usi_03.c")
//
//  Description:
//  SPI Master communicates full-duplex with SPI Slave using 3-wire mode.
//  The test "MSP430F2013" is transmitted via SPI.
//  ACLK = n/a, MCLK = SMCLK = Default DCO
//
//                Slave                      Master
//               MSP430F20x3                MSP430FG4619
//             -----------------          -----------------
//            |              XIN|-    /|\|              XIN|-
//            |                 |      | |                 |
//            |             XOUT|-     --|RST          XOUT|-
//            |                 | /|\    |                 |
//            |          RST/NMI|--+     |                 |
//            |                 |        |     P2.5/UCA0RXD|------------>
//            |                 |        |                 | 115200 - 8N1
//            |                 |        |     P2.4/UCA0TXD|<------------
//            |                 |        |                 |
//            |         SDI/P1.7|<-------|P3.1/UCB0SIMO    |
//            |         SDO/P1.6|------->|P3.2/UCB0SOMI    |
//            |        SCLK/P1.5|<-------|P3.3/UCBoCLK     |
//
//   FengLF
//   LSD SCIENCE& TECHNOLOGY CO.,LTD 
//   2007.06
//   Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************

#include <msp430x20x3.h>

const unsigned char Data[]="MSP430F2013-Counter=";
unsigned int DataPtr;
unsigned int Counter;

void main(void)
{
  WDTCTL = WDTPW+WDTHOLD;               
  DataPtr=0;
  USICTL0 |= USIPE7+USIPE6+USIPE5+USIOE;   //  SPI 从机
  USICTL1 |= USIIE;                        // 中断使能
  USICTL0 &= ~USISWRST;                 
  USISRL = Data[DataPtr++];                // 初始化 装载数据
  USICNT = 8;                              // 数据长度

  Counter=0;

  while(1)
  { _BIS_SR(LPM0_bits + GIE);              // 进入低功耗LPM0
  }
}

// USI interrupt service routine
#pragma vector=USI_VECTOR
__interrupt void universal_serial_interface(void)
{
  if (DataPtr<21)
    USISRL = Data[DataPtr++];
  else
  { USISRL = '0'+Counter;                // 通过 SPI 模式发送数据到4619
    DataPtr=0;
    Counter=Counter+1;               
    if (Counter>=10)
      Counter=0;
  }
  USICNT = 8;                          
}

⌨️ 快捷键说明

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