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

📄 main.c.bak

📁 IAR编译器下
💻 BAK
📖 第 1 页 / 共 2 页
字号:
                        Delay(10);
			CLR_F_SCL();
                        Delay(10);
                        SETB_F_SCL();
                        Delay(10);
			SETB_F_SDA();
              return 0xFFFF;
}

void FM3130I2RdData(unsigned int Addr, unsigned char *RdData, unsigned short usnCount)
{
	unsigned short i = 0;
	unsigned short j = 0;
	unsigned short usErrTime = 10;//因故障接收方无ACK,超时值为255。
	unsigned short Addr_H,Addr_L;
	//停止信号******************************************************************************************
		CLR_F_SDA();
                Delay(10);
		CLR_F_SCL();
                Delay(10);
                SETB_F_SCL();
                Delay(10);
		SETB_F_SDA();
                Delay(10);
	//开始信号******************************************************************************************
		SETB_F_SDA();
                Delay(10);
		SETB_F_SCL();
                Delay(10);
		CLR_F_SDA();
                Delay(10);
		CLR_F_SCL();
                Delay(10);
	//从机地址******************************************************************************************
	//存储器为0xA0
		for(i = 0; i < 8; i++)
			{
				CLR_F_SCL();
				GPIOPinWrite(GPIO_PORTG_BASE, GPIO_PIN_4, (160L << 8) >> (11 - i));
                                Delay(10);
				SETB_F_SCL();
                                Delay(10);
			}
		//等待ACK
                        usErrTime = 100;
                        CLR_F_SCL();
                        Delay(10);
			SETB_F_SCL();
			GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);                      //PG4置为输入
                        Delay(10);
			while(GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_4))
				{
					usErrTime--;
					if(!usErrTime)
						{
							CLR_F_SCL();
							//停止信号
							CLR_F_SDA();
                                                        Delay(10);
							CLR_F_SCL();
                                                        Delay(10);
							SETB_F_SDA();
                                                        Delay(10);
							SETB_F_SCL();
                                                        Delay(10);
							GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT);                      //PG4置为输出
						}
				}
			GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT);                      //PG4置为输出
			CLR_F_SCL();
        //发送数据地址**************************************************************************************
		Addr_H = (Addr &0xFF00)>>8;
		Addr_L = Addr &0x0FF;	
		//高字节
		for(i = 0; i < 8; i++)
		{
			CLR_F_SCL();
			GPIOPinWrite(GPIO_PORTG_BASE, GPIO_PIN_4, (Addr_H << 8) >> (11 - i));
                        Delay(10);
			SETB_F_SCL();
                        Delay(10);
		}
		//等待ACK
                usErrTime = 100;
                CLR_F_SCL();
                Delay(10);
		SETB_F_SCL();
                Delay(10);
		GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);                      //PG4置为输入
			while(GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_4))
			{
				usErrTime--;
				if(!usErrTime)
				{
					CLR_F_SCL();
					//停止信号
					CLR_F_SDA();
                                        Delay(10);
					CLR_F_SCL();
                                        Delay(10);
					SETB_F_SDA();
                                        Delay(10);
					SETB_F_SCL();
					GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT);      //PG4置为输出
                                        Delay(10);
				}
			}
		GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT);                      //PG4置为输出
		CLR_F_SCL();
	        //低字节
		for(i = 0; i < 8; i++)
			{
				CLR_F_SCL();
				GPIOPinWrite(GPIO_PORTG_BASE, GPIO_PIN_4, (Addr_L << 8) >> (11 - i));
                                Delay(10);
				SETB_F_SCL();
                                Delay(10);
			}
		//等待ACK
                        usErrTime = 100;
                        CLR_F_SCL();
                        Delay(10);
			SETB_F_SCL();
			GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);                      //PG4置为输入
                        Delay(10);
			while(GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_4))
				{
					usErrTime--;
					if(!usErrTime)
					{
					   CLR_F_SCL();
					   //停止信号
					   CLR_F_SDA();
                                           Delay(10);
					   CLR_F_SCL();
                                           Delay(10);
					   SETB_F_SDA();
                                           Delay(10);
					   SETB_F_SCL();
					   GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT); //PG4置为输出
                                           Delay(10);
					}
				}
		GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT);                      //PG4置为输出
		CLR_F_SCL();
                Delay(10);
	//开始信号******************************************************************************************
		SETB_F_SDA();
                Delay(10);
		SETB_F_SCL();
                Delay(10);
		CLR_F_SDA();
                Delay(10);
		CLR_F_SCL();
                Delay(10);
	//从机地址******************************************************************************************
		//存储器为0xA0状态为读
		for(i = 0; i < 8; i++)
			{
				CLR_F_SCL();
				GPIOPinWrite(GPIO_PORTG_BASE, GPIO_PIN_4, (161L << 8) >> (11 - i));
                                Delay(10);
				SETB_F_SCL();
                                Delay(10);
			}
		//等待ACK
                        usErrTime = 100;
                        CLR_F_SCL();
                        Delay(10);
			SETB_F_SCL();
		        GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);        //PG4置为输入
                        Delay(10);
			while(GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_4))
				{
					usErrTime--;
					if(!usErrTime)
					{
					      CLR_F_SCL();
					    //停止信号
						CLR_F_SDA();
                                                Delay(10);
						CLR_F_SCL();
                                                Delay(10);
						SETB_F_SDA();
                                                Delay(10);
						SETB_F_SCL();
					        GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT);   //PG4置为输出
                                                Delay(10);
					}
			        }
		GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT);                      //PG4置为输出
		CLR_F_SCL();
                Delay(10);
//接收数据**************************************************************************************
		for(j = 0;j < (usnCount - 1); j++)
		{
			for(i = 0; i < 8; i++)
			{
				CLR_F_SCL();
                                Delay(10);
				SETB_F_SCL();
                                Delay(10);
				RdData[j] |= GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_4) >> 4;
				RdData[j] = RdData[j] << 1;
			}
			//发送ACK
			CLR_F_SDA();
                        Delay(10);
 			SETB_F_SCL();
                        Delay(10);
 			CLR_F_SCL();
                        Delay(10);
		}
	                for(i = 0; i < 8; i++)
			{
				CLR_F_SCL();
                                Delay(10);
				SETB_F_SCL();
                                Delay(10);
				RdData[j] |= GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_4) >> 4;
				RdData[j] = RdData[j] << 1;
			}
			//发送NOTACK
			SETB_F_SDA();
                        Delay(10);
			SETB_F_SCL();
                        Delay(10);
			CLR_F_SCL();	
                        Delay(10);
//停止信号******************************************************************************************
		CLR_F_SDA();
                Delay(10);
		CLR_F_SCL();
                Delay(10);
                SETB_F_SCL();
                Delay(10);
		SETB_F_SDA();	
                Delay(10);		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -