4.2 软件实现
1) 初始化W3100
初始化W3100时,应首先对其进行硬复位,然后设定MAC地址及IP,最后初始化SOCKET接口。
ResetEthernet(); //硬复位W3100
InitW3100A(); //初始化W3100
InitNetConfig(); //配置以太网卡参数
InitSocket(); //初始化SOCKET
2) 中断服务程序
根据W3100的使用手册,在系统中提供一个硬件中断作为W3100的中断输入,在中断服务程序中记录状态值。代码如下。
_interrupt(INT_PCA0) _using(INT_PCA0_PSW)
{
u_char status;
status = INT_STATUS;
while (status)
{
if (status & 0x01) {
S_STATUS[0] = STATUS(0);
INT_STATUS = 0x01;
}//第1、2、3类似处理
if (status & 0x10) {
S_STATUS[0] = STATUS(0);
INT_STATUS = 0x10;
}//第1、2、3类似处理
status = INT_STATUS;
}
INT_STATUS = 0xFF;
}
3) 收发数据
设计一个任务定时10毫秒进行数据收发处理,其过程如下。
SOCKET i;
INT len;
WORD TSCKNUM = 2404;
for (i = 0; SockNo < 4; SockNo++)
{
switch (Select(i, SEL_CONTROL))
{
case SOCK_ESTABLISHED:
if ((len = select(i, SEL_RECV)) > 0)
{
if (len > MAX_BUF_SIZE) len = MAX_BUF_SIZE;
len = recv(i, data_buf, len);
send(i, data_buf, len);
}
break;
case SOCK_CLOSE_WAIT: if ((len = select(i, SEL_RECV)) > 0)
{
if (len > MAX_BUF_SIZE) len = MAX_BUF_SIZE;
len = recv(i, data_buf, len);
}
close(i);
break;
case SOCK_CLOSED:
init_sock(i);
break;
}
}
5 结束语
在设计与实现电力智能监控终端过程中,应用W3100作为以太网协议栈转换器具有接口简单、编程方便、通讯速率高、工作稳定等特点,能够简化设计难度、加快设计进度,因此W3100在快速实现网络化的设计中具备良好的应用前景。本文以成熟的应用技术为基础,增加了硬件协议转换器,减少了开发风险,缩短了开发周期,提高了产品的应用水平。该电力智能监控终端系统已经产品化,累计创造了1000万元产值。