/****************************************************************************************
 * 项目用途：演示IIC做为从机。
 * 文件名: main.c
 * 项目名: KF8A100FTN_IIC_SLAVE
 * 版 本: v1.0
 * 日 期: 2019年09月02日 15时56分36秒
 * 作 者: charles_cai
 * 功能 ： 先向从机写数据，从机收到数据后，验证数据是否正确，正确则从机LED2闪烁，错误则从机LED2熄灭。
 * 		然后主机再去读数据，从机返回数据给主机，主机验证数据是否正确，正确则主机LED2闪烁，错误则主机LED2熄灭。
 * 注意：	IIC引脚必须配置为数字输入模式、打开上拉功能。 *
 * 		SDA——P01
 * 		SCL——P00
 ****************************************************************************************/
#include"main.h"

unsigned char kk=0, cnt=0, flag=0, Temp=0;

//主函数
void main()
{
	Init_osc();
	Init_GPIO();
	Init_IIC();//IIC引脚必须配置为数字输入模式
	Init_intrup();

	while(1)
	{
		if(flag==1)//接收的数据正确
		{
			flag = 0;
			LED2 =1;
			Delay_ms_loop(300);
			LED2 =0;
			Delay_ms_loop(300);
		}
		else//接收的数据错误
		{
			LED2 =0;
		}
	}
}
//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{
	if(SSCIIF)
	{
		SSCIIF=0;

		if(SSCIRW==0)//主机在写模式
		{
			Temp=SSCIBUFR;
			if(SSCIDA)				//接收到的是数据
			{
				if(Temp==0)
					cnt=0;

				if (cnt == Temp)//验证接收的数据内容是否正确
				{
					flag = 1;
				}
				else
				{
					flag = 0;
				}
				cnt++;
			}
			else//收到的是地址
			{
				kk=9; //将待发送的数据初始化
			}
		}

		else//主机要求读数据
		{
			if(kk<19) //从10开始，连续发送10-19的10个数字
				kk++;
			else
				kk=10;
			SSCIBUFR=kk;//发送数据
			SSCICKP=1;
		}
	}
}


//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{

}
