导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]RTL8019收发数据疑难问题

* 27682: [求助]RTL8019收发数据疑难问题

   00000000000 
00000000000发表的帖子 

 [求助]RTL8019收发数据疑难问题
8019AS接收计算机发送来的数据正常 为什么数据无法发送到计算机呢?

计算机始终没有接收到包?

register uint i,j;
bit m_ret,m_stst;
uchar m_curr,m_rsr,m_tsr,m_tbcr0,m_tbcr1,m_temp,m_bnry,m_tpsr,m_bnry_nextpage;

    m_bnry_nextpage=0x4d;  
    //初始化所有设备
      f_reset8019as();  //复位8019AS
      f_ne2000init();   //初始化8019AS
 
    while(1)
    {
      page(0);
      m_bnry=reg03;
      m_rsr=reg0c;//RSR
      page(2);
      m_tpsr=reg04;//TPSR
      page(1);
      m_curr=reg07;  //CURR     
      sleep_ms(800);  //延时
//--------------------------------------------------------发包ARP
          for(i=0;i  <100;i++)
           {
   //目标ID号 (广播)
   for(j=4;j  <=9;j++)
    buffers1[j]=0xff;
   //源ID号
   for(j=10;j  <=15;j++)
    buffers1[j]=myid[j-10];
   //以太网类型 0806 (ARP)
   buffers1[16]=0x08; buffers1[17]=0x06;
   //硬件类型 10M以太网 协议类型IP
   buffers1[18]=0x00; buffers1[19]=0x01;
   buffers1[20]=0x08; buffers1[21]=0x00;
   //硬件地址长度 协议地址长度
   buffers1[22]=0x06; buffers1[23]=0x04;
   //操作码
   buffers1[24]=0x00; buffers1[25]=0x01;
   //源ID号
   for(j=26;j  <=31;j++)
    buffers1[j]=myid[j-26];
   //源IP
   for(j=32;j  <=35;j++)
    buffers1[j]=myip[j-32];
   //目标ID  (广播)
   for(j=36;j  <=41;j++)
    buffers1[j]=0x00;
   //目标IP
   for(j=42;j  <=45;j++)
    buffers1[j]=myip[j-42];
   buffers1[45]=55;
   //填充位 (18 字节) 
   for(j=46;j  <=63;j++)
       buffers1[j]=0x00;
    
   send_data(m_tpsr  <  <8);
   sleep_ms(1);
  }


void send_data(uint m_add)//写8019as buffer
{
   uint m_langth;
   register uchar i,j;
   m_langth=60;
 
 page(0);
 reg09=m_add>  >  8;//address high
 reg08=m_add&0xff;//address low 
 reg0b=m_langth>  >  8; //write count high 
 reg0a=m_langth&0xff;//write count low 
 reg00=0x12; //dma write 
 
 for(i=4;i  <m_langth+4;i++)
    reg10=buffers1[i];
 
/* for(i=0;i  <4;i++)    //最多重发4次
 {                
        for(j=0;j  <1000;j++)          //检查txp
            if((reg00&0x04)==0) break;
       //表示发送成功
       if((reg04&0x01)!=0) break;
       reg00=0x3E;
    }
*/
    reg04=0x40;
    reg06=m_langth+4>  >  8;         //high
    reg05=m_langth+4&0xFF;       //low
    reg00=0x3E;               // sendpacket;  
}



发表时间:2003年4月28日3:43:52

  
回复该帖

本主题共有 4 帖,分页:>>>>>该主题的所有内容[4]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  28018.[详细]数据最短得40个字节
摘要:数据最短得40个字节......(18字)
- [guest][1087次] 2003年4月29日

  28142.[详细]他这样做是对的
摘要:ARP包并不要求40字节的数据。......(27字)
- [guest][844次] 2003年4月30日

  28089.[详细]兄弟:能把你的QQ给我么我想请教一下!~~MYQQ:6492328
摘要:......(无内容)
- [long22885528][1239次] 2003年4月30日

[上一篇帖子]:你程序中在没有打开中断前就进入了死循环!l1: rr a lcall&n
[下一篇帖子]:454日