?? main.c
字號:
/****************************************Copyright (c)***************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info--------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**-------------------------------------------------------------------------------------------------------
** Created by: Chen Mingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**-------------------------------------------------------------------------------------------------------
** Modified by: Li Baihua
** Modified date: 2008-04-07
** Version: 1.1
** Descriptions: SSP做主機、SPI做從機進行數據通信,將SSP發送的數據通過串口發送到PC機顯示
**
*********************************************************************************************************/
# include "config.h"
# include "UART.h"
uint8 const uiBuf[8] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07};
/*********************************************************************************************************
** Function name: DelayNS
** Descriptions: 長軟件延時
** input parameters: uiDly延時控制值,值越大,延時越長
** output parameters: 無
** Returned value: 無
*********************************************************************************************************/
void DelayNS (uint32 uiDly)
{
uint32 i;
for(; uiDly > 0; uiDly--){
for(i = 0; i < 50000; i++);
}
}
/*********************************************************************************************************
** Function name: SPIInit
** Descriptions: 初始化SPI接口,設置為從機
** input parameters: 無
** output parameters: 無
** Returned value: 無
*********************************************************************************************************/
void SPIInit(void)
{
PINSEL0 = (PINSEL0 & 0xCFFF00FF) | 0x20005500; /* 設置SPI引腳連接 */
SPI_SPCCR = 0x52; /* 設置SPI時鐘分頻 */
SPI_SPCR = 0 << 3 | /* CPHA = 0第一個時鐘采樣 */
1 << 4 | /* CPOL = 1,SCK低有效 */
0 << 5 | /* MSTR = 0,設置為從模式 */
0 << 6 | /* LSBF = 0,SPI傳輸MSB在先 */
0 << 7 ; /* SPIE = 0,SPI中斷禁止 */
}
/*********************************************************************************************************
** Function name: SSPIInit
** Descriptions: 初始化SSP接口,設置為主機
** input parameters: 無
** output parameters: 無
** Returned value: 無
*********************************************************************************************************/
void SSPIInit(void)
{
PINSEL1 = (PINSEL1 & 0xFFFFF00F) | 0x00000540; /* 設置SSP引腳連接 */
SSPCR0 = 0x07 << 0 | /* DSS 數據長度為8位 */
0x00 << 4 | /* FRF 格式:SPI */
0x01 << 6 | /* CPOL = 1,SCK低有效 */
0x00 << 7 | /* CPHA = 0, 第一個時鐘采樣 */
0x01 << 8 ; /* SCR 設置SPI時鐘分頻 */
SSPCR1 = 0 << 0 | /* LBM 回寫模式 */
1 << 1 | /* SSE SSP使能 */
0 << 2 | /* MSTR = 0,設置為主機 */
0 << 3 ; /* SOD = 0, 從機輸出允許 */
SSPCPSR = 0x52; /* 設置SSP時鐘分頻 */
SSPIMSC = 0x02; /* 使能接收超時中斷 */
SSPICR = 0x03; /* 清除中斷標志 */
}
/*********************************************************************************************************
** Function name: SPIRcvByte
** Descriptions: 從SPI總線接收1字節數據
** input parameters: 無
** output parameters: 無
** Returned value: 無
*********************************************************************************************************/
uint8 SPIRcvByte (void)
{
while ((SPI_SPSR & 0x80) == 0); /* 等待數據接收完成 */
return (SPI_SPDR);
}
/*********************************************************************************************************
** Function name: SSPSendByte
** Descriptions: SSP接口向總線發送1字節數據
** input parameters: uiDat 待發送的數據
** output parameters: 無
** Returned value: 接收到的數據
*********************************************************************************************************/
uint8 SSPSendByte(uint8 uiDat)
{
SSPDR = uiDat;
while((SSPSR & 0x01) == 0); /* 等待TFE置位,即發送FIFO空 */
return(SSPDR);
}
/*********************************************************************************************************
** Function name: main
** Descriptions: SSP做主機、SPI做從機進行數據通信,并將SSP發送的數據通過串口發送到PC機顯示
** input parameters: 無
** output parameters: 無
** Returned value: 無
*********************************************************************************************************/
int main(void)
{
uint8 i;
uint8 j;
uint8 uiRcvData;
UARTInit();
SPIInit(); /* 初始化SPI接口 */
SSPIInit(); /* 初始化SSP接口 */
for(;;){
for ( i = 0; i < 8; i++){ /* SPI發送數據 */
SSPSendByte(uiBuf[i]);
DelayNS(20);
uiRcvData = SPIRcvByte(); /* SSP接收數據 */
DelayNS(10);
for ( j = 0; j < 8; j++){
PCDispChar (j, uiRcvData); /* 將SSP接收到的數據發送到PC機 */
}
DelayNS(50);
}
}
return 0;
}
/*********************************************************************************************************
** End Of File
**********************************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -