导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→以太网发送一个数据包程序中的疑问.[wsfeitian]

 *第21794篇: 以太网发送一个数据包程序中的疑问.

  
楼 主:wsfeitian 2004年5月11日18:59
 以太网发送一个数据包程序中的疑问.

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 ((reg00&0x04)==0) break;
  }
  if ((reg04&0x01)!=0) break; //表示发送成功
  reg00=0x3e;
 }

 reg07=0xff;
 if(txd_buffer_select)
  reg04=0x40; //txd packet start; 
 else
  reg04=0x46; //txd packet start; 
 reg06=len>  >  8; //high byte counter
 reg05=len&0xff; //low byte counter
 reg07=0xff;
 reg00=0x3e;  //to sendpacket;  

 
 free(outbuf);//free(p) 释放指针为p所指向的存储器区域,p必须是calloc.malloc或者realloc函数分配的存储器区域
}

疑问:程序 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;
 }

[color=#DC143C]重发成功,为什么后面还要一段再发程序:[/color]

if(txd_buffer_select)
  reg04=0x40; //txd packet start; 
 else
  reg04=0x46; //txd packet start; 
 reg06=len>  >  8; //high byte counter
 reg05=len&0xff; //low byte counter
 reg07=0xff;
 reg00=0x3e;  //to sendpacket;  


[color=#000000]高手指点啊@@@@[/color]



>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:pc 下 DMA 方式编写鼠标驱动程序。。有没有朋友提供相关资料。小弟

[下一篇主题]:这段程序怎么理解?