📄 lab-07-2013.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 + -