No.54286 作者:wsfeitian 邮件:wsfeitian@yahoo.com.cn ID:20382 登陆:2次 文章数:31篇 最后登陆IP:202.103.243.118 最后登陆:2004/6/10 10:17:57 注册:2004/4/19 21:17:01 财富:232 发帖时间:2004/5/11 18:59:51 发贴者IP:202.103.243.98 标题:wsfeitian:以太网发送一个数据包程序中的疑问. 摘要:No.54286以太网发送一个数据包程序中的疑问. void send_frame(uchar xdata * outbuf, uint len)/*发送一个数据包的命令,长度最小为60字节,最大1514字节*/ { uchar i; uint ii; page(0); if(len <60)len=60; txd_buffer_select=!txd_buffer_select; if (txd_buffer_select) reg09=0x40 ; //txdwrite highaddress else reg09=0x46 ; //txdwrite highaddress reg08=0x00; //read page address low reg0b=len> > 8; //read count high reg0a=len&0xff; //read count low; reg00=0x12; //write dma, page0 for (ii=4;ii <len+4;ii++) //for (ii=4;ii <len+4;ii++) //是否加4有待验证 { reg10=*(outbuf+ii); } /* 以下3句为中止dma的操作,可以不要 */ reg0b=0x00; //read count high 中止DMA操作 reg0a=0x00; //read count low; reg00=0x22; //complete dma page 0 for(i=0;i <16;i++) //最多重发16次 { for(ii=0;ii <1000;ii++) //检查txp为是否为低 { if ((reg00&0x04)==0) break; } if ((reg04&0x01)!=0) break; //表示发送成功 reg00=0x3e; } for(i=0;i <16;i++) //最多重发16次 { for(ii=0;ii <1000;ii++) //检查txp为是否为低 { if ((re ......
>>返回讨论的主题
|