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

📄 main.c

📁 easyarm 的主要程序
💻 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 + -