易信的w5500网络模块,淘宝上有卖。 51程序,芯片资料及网络模块原理图如附件所示。 现在正在看厂家给的程序,其中有部分看不懂,请了解的高手解惑。 /******************************************************************************** 函数名: Detect_Gateway* 描述 : 检查网关服务器* 输入 : 无* 输出 : 无* 返回值: 成功返回TRUE(0xFF),失败返回FALSE(0x00)* 说明 : 无*******************************************************************************/unsigned char Detect_Gateway(void){ unsigned char ip_adde[4]; ip_adde[0]=IP_Addr[0]+1; ip_adde[1]=IP_Addr[1]+1; ip_adde[2]=IP_Addr[2]+1; ip_adde[3]=IP_Addr[3]+1; //检查网关及获取网关的物理地址 Write_W5500_SOCK_4Byte(0,Sn_DIPR,ip_adde);//向目的地址寄存器写入与本机IP不同的IP值 Write_W5500_SOCK_1Byte(0,Sn_MR,MR_TCP);//设置socket为TCP模式 Write_W5500_SOCK_1Byte(0,Sn_CR,OPEN);//打开Socket Delay(5);//延时5ms if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败 { Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket return FALSE;//返回FALSE(0x00) } Write_W5500_SOCK_1Byte(0,Sn_CR,CONNECT);//设置Socket为Connect模式 do { unsigned char j=0; j=Read_W5500_SOCK_1Byte(0,Sn_IR);//读取Socket0中断标志寄存器 if(j!=0) Write_W5500_SOCK_1Byte(0,Sn_IR,j); Delay(5);//延时5ms if((j&IR_tiMEOUT) == IR_TIMEOUT) { return FALSE; } else if(Read_W5500_SOCK_1Byte(0,Sn_DHAR) != 0xff) { Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//关闭Socket return TRUE; } }while(1);}1,上面代码中,第一段红色代码中Sn_IR为Socket n中断寄存器,应为只读寄存器,为何会出现写该寄存器??2,第二段蓝色代码中,else if(Read_W5500_SOCK_1Byte(0,Sn_DHAR) != 0xff)这句是读取Socket 0寄存器的目的MAC地址值,该值与0xff有什么关系?为什么不等于0xff就判断返回成功呢? 下载下来学习一下 需要软件清除中断标志位吧 先下载学习一会
proteus isis中有功率因数表吗?proteus isis中有功率因数表吗?
没有,但是有电流电压探针 新人求助!关于LCD1602的驱动程序初学单片机,在清屏函数上出错了不知道怎么改,望大神指点!谢谢~
错误:
main.c(35): error C202: 'Blue2': undefined identifier
代码:
#include
#include
#inclu 请教一下程序烧不进去怎么办? 各位好!
最近烧写一个程序到stc15W408AS单片机中,原先用的是CH340烧写的,一直烧不进去,提示“正在检测目标单片机”,后来改用U8W编程器 也烧不进去,提示“ AD转换设计中的基本问题,这下全乎了看到一篇关于 AD 转换设计中的基本问题整理博文,特地转载过来和大家共分享,了解数据转换器错误及参数。1、如何选择高速模数转换之前的信号调理器件;如何解决多路模数转换的同
|