/******************************************************************************
;  *   	@MCU				 : MC51F003A4
;  *   	@Create Date         : 2021.10.11
;  *   	@Author/Corporation  : Martin/SinoMCU
;  *   	@晟矽微技术支持QQ 	 : 2048615934
;  *    @晟矽微官网		     : http://www.sinomcu.com/
;  *   	@Copyright           : 2020 SINOMCU Corporation,All Rights Reserved.
;  *----------------------Abstract Description---------------------------------
;  *			       SPI主从机通信(SPI时钟8M)
					从机:		0x01		数据命令
								0xff		发送buff数据                                		
******************************************************************************/

#include "User_Def.h"

//全局变量
__O bit_flag flag1;
__O bit_flag SFR_interrupt_buff_H;
__O bit_flag SFR_interrupt_buff_L;
//私有变量

/************************************************
;  *    @Function Name       : delay
;  *    @Description         : 普通延时
;  *    @IN_Parameter      	 :
;  *    @Return parameter    :
;  ***********************************************/
void delay(uint16_t Num)
{
	for (; Num > 0; Num--)
	{
		_nop_();
	}
}

void main(void)
{
	u8 test = 0;
	u8 buff[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	u8 count = 0;
	DISABLE_GIE(); //关闭总中断
	GPIO_Init();
	UART1_Init();
	delay(100);
	printf("Sinomcu\r\n");
	ENABLE_GIE(); //开启总中断
	SPI_User_Init();
	while (1)
	{
		//SPI_Clear_FlagStatus(SPI_FLAG_RECEIV_OVERRUN);

		//		while (SPI_Get_FlagStatus(SPI_FLAG_IF) == RESET);
		//		SPI_Clear_FlagStatus(SPI_FLAG_IF);
		//		test = SPI_Receive_Data();					//使用库函数，速度比较慢

		while (!(SPSTA & 0x40));
		SPSTA &= ~SPI_FLAG_IF;
		test = SPDAT; //直接操作寄存器

		if (0x01 == test) //命令
		{
			count = 0;
			SPDAT = buff[count];

			//SPI_Send_Data(buff[count]);
		}
		if (0xff == test) //发送数据
		{
			if (count < 9)
			{
				count++;
				SPDAT = buff[count];
				
				//SPI_Send_Data(buff[count]);
			}
		}
	}
}

/**************************** end of file *********************************************/
