导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[阿鹏]C51编程:求救啊,老古:RTL8019



No.7071
作者:阿鹏
邮件:
ID:6146
登陆:1次
文章数:5篇
最后登陆IP:
最后登陆:2002/4/27 10:36:00
注册:2002/4/27 10:36:00
财富:17
发帖时间:2002/4/27 10:39:00
发贴者IP:202.38.124.247
标题:阿鹏:C51编程:求救啊,老古:RTL8019AS怎样收发数据?看看我的程序:
摘要:No.7071C51编程:求救啊,老古:RTL8019AS怎样收发数据?看看我的程序: 按照老古的文章,我的电路(一体化)和程序已经能正确的读写RTL8019AS的RAM(即
remote DMA)。但在接着的调试中发现收发数据均不行。我是用netxray来检测数据的。
我的MAC是从另一个网卡读下来的,该网卡暂时不用,所以MAC是唯一的。
我的程序如下: (时间紧急,各位大虾救救,我的email: y_yp@21cn.com)
pragma DEBUG CODE OBJECTEXTEND
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#include <reg51r.h>
#include <intrins.h>
#include <absacc.h>

#define rg00 XBYTE[0xc000]    /* I/O Base address 为300H,我只连接了P2.0-4 */
#define rg01 XBYTE[0xc100]
#define rg02 XBYTE[0xc200]
#define rg03 XBYTE[0xc300]
#define rg04 XBYTE[0xc400]
#define rg05 XBYTE[0xc500]
#define rg06 XBYTE[0xc600]
#define rg07 XBYTE[0xc700]
#define rg08 XBYTE[0xc800]
#define rg09 XBYTE[0xc900]
#define rg0a XBYTE[0xca00]
#define rg0b XBYTE[0xcb00]
#define rg0c XBYTE[0xcc00]
#define rg0d XBYTE[0xcd00]
#define rg0e XBYTE[0xce00]
#define rg0f XBYTE[0xcf00]
#define rg10 XBYTE[0xd000]

void LAN_init(void);
void page(uchar num);
void write_dma(uint addr,uint count);

sbit  RSTDRV  = P1^2;
uchar   data  CURR;
uchar   data  BNRY;
uchar  idata  bckbuf[64];

void main (void)
{
    register uchar i;
    uint temp;
    wait_1mS(1000);

    LAN_init();
    temp=0x4000;
    write_dma(temp,60);     /* 我试过用read_dma(temp,60)读数据,OK! */

/* bckbuf[n]数据为一个ARP包: 
0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xe8,0xa3,0x62,0x61,0x08,0x06,0x00,0x01,
0x08,0x00,0x06,0x04,0x00,0x01,0x00,0x00,0xe8,0xa3,0x62,0x61,0xca,0x26,0xcf,0x9e,
0x00,0x00,0x00,0x00,0x00,0x00,0xca,0x26,0xcf,0x58,...后面补18个0x00 */

    page(0);
    rg05=0x3c;      /* TBCR0 为低位 */
    rg06=0x00;      /* TBCR1 为高位 */
    rg00=0x1e;      /* 开始发送数据 */
    
    while(1) {      
       wait_1mS(100);
       page(0);
       BNRY=rg03;           
       page(1);
       CURR=rg07;
       
       bckbuf[0]=BNRY;
       bckbuf[1]=CURR;
       sends(bckbuf,2); /* 把BNRY和CURR发送到串口显示,过了很久都还是50H和51H */
    }                   /* sends程序可以保证没有问题 */
}
/************************************************************************/
void write_dma(uint addr,uint count)
{
    register uint i;

    page(0);
    rg09=addr>>8;                          /* addr high */
    rg08=addr&0x00ff;                      /* addr low  */
    rg0b=count>>8;                         /* write count high */
    rg0a=count&0x00ff;                ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:16毫秒 最大:7276毫秒 查询6次