?? spi.c
字號:
/**********************************************************
* 文件名稱:
*
* 文件說明:
* 模塊操作MSP430的USART的SPI通訊模塊,
* 本實驗需要使用外圍芯片HC164、HC165
* 實驗從HC165讀取數據,向HC164寫數據
* HC164、HC165的有關知識請參考datasheet
*
***********************************************************/
#include <msp430x44x.h>
/**********************************************************
;
; MSP430F449
; -----------------
; /|\| XIN|-
; | | | ^ HC164
; HC165 --|RST XOUT|- | -------------
; ---------- | | |-|/CLR,B | 8
; 8 | /LD|<---|P3.0 SIMO0/P3.1|------>|A Qx|--\->
; -\->|A-H CLK|<---|P3.3/UCLK0 - P3.3|------>|CLK |
; |-|INH QH|--->|P3.2/SOMI0 | | |
; |-|SER | | | | |
; - | | | | | |
;
******************************************************************/
/************** 程序初始化 *****************************************/
void init_SPI()
{
P3SEL |= 0x0E; //P1.1~3 置位外圍模塊
P3DIR |= 0x01; //P3.0 輸出模式
ME1 |= USPIE0; // 使能 USART0 SPI 模式
UTCTL0 = CKPH+SSEL1+SSEL0+STC ; // 設置 SMCLK 和 3-pin 模式;
UCTL0 = CHAR + SYNC + MM; //設置 8-bit 字符模式
UBR00 = 0x02; //設置波特率
UBR10 = 0x00;
UMCTL0 = 0x00;
}
/**********************************************************
*
* 轉發數據
*
***********************************************************/
void forward_Data()
{
while((IFG1 & UTXIFG0)!= UTXIFG0); //檢測是否TX發送緩存Ready
P3OUT &= 0xFE; //鎖存HC165的數據
P3OUT |= 0x01;
TXBUF0 = RXBUF0; //把HC165的數據發到HC164
}
void main()
{
unsigned int tmp; //延時變量
WDTCTL = WDTHOLD + WDTPW; //關看門狗
init_SPI(); //初始化SPI
while(1)
{
forward_Data(); // 交換數據
for(tmp=0;tmp<0xffff;tmp++); // 延遲,此間可以設置斷點
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -