No.79988 作者:ukbat 邮件:ukbat@sina.com ID:14331 登陆:8次 文章数:3篇 最后登陆IP:211.137.102.94 最后登陆:2006/3/14 12:39:54 注册:2003/8/13 9:59:33 财富:70 发帖时间:2005/6/17 9:40:49 发贴者IP:211.137.100.94 标题:ukbat:各位高手帮忙看看8019发送数据问题 摘要:No.79988各位高手帮忙看看8019发送数据问题 我用老古那个一体化电路做的,用的 winbond的单片机,用 单片机初始化8019都正常,写8019的ram也正常,但是单片机发发送命令0x1E给8019时,8019没有数据发送出去,并且去读CR的值是0x21,这是怎么一回事啊,各位高手帮帮忙看看。下面是用C51写的部分程序。 #define reg00 XBYTE[0xc000] //对应于地址240H 为命令寄存器CR地址 #define reg01 XBYTE[0xc100] //241H. #define reg02 XBYTE[0xc200] #define reg03 XBYTE[0xc300] #define reg04 XBYTE[0xc400] #define reg05 XBYTE[0xc500] #define reg06 XBYTE[0xc600] #define reg07 XBYTE[0xc700] #define reg08 XBYTE[0xc800] #define reg09 XBYTE[0xc900] #define reg0a XBYTE[0xca00] #define reg0b XBYTE[0xcb00] #define reg0c XBYTE[0xcc00] #define reg0d XBYTE[0xcd00] #define reg0e XBYTE[0xce00] #define reg0f XBYTE[0xcf00] #define reg10 XBYTE[0xd000] #define reg11 XBYTE[0xd100] #define reg12 XBYTE[0xd200] #define reg13 XBYTE[0xd300] #define reg14 XBYTE[0xd400] #define reg15 XBYTE[0xd500] #define reg16 XBYTE[0xd600] #define reg17 XBYTE[0xd700] #define reg18 XBYTE[0xd800] #define reg19 XBYTE[0xd900] #define reg1a XBYTE[0xda00] #define reg1b XBYTE[0xdb00] #define reg1c XBYTE[0xdc00] #define reg1d XBYTE[0xdd00] #define reg1e XBYTE[0xde00] #define reg1f XBYTE[0xdf00] //25FH. #define uint unsigned int #define uchar unsigned char #define recount 256 #define wrcount 256 #define INBUF_LEN 1 //数据长度 void netcardreset(void); //网卡芯片复位函数 void delaymsecond(void); //延迟函数 void page(uchar pagenumber); // void ne2000init(void); //网卡芯片初始化函数 //void readmynodeid(void); //读取网卡物理地址函数 void writemynodeid(void); //设置网卡物理地址函数 void write_dma(unsigned int count); //写网卡芯片Ram函数 void read_dma(unsigned int readdress,unsigned int count); //读网卡芯片Ram函数 //void init_serialcomm(void); //void serial (); uint flag=1; void main() { unsigned int i; readdress=0x4c00; wraddress=0x4000; //P2=0x00; //delaymsecond(); netcardreset(); ne2000init(); writemynodeid(); /* for(;;) { reg00=0x1e; P1=0xff^reg00; }*/ // init_serialcomm(); //初始化串口 /*for(i=0;i <6;i++) { if(i%2==0) { bufferwrite[14+i]=mynodeid[i/2].bytes.high; } else bufferwrite[14+i]=mynodeid[i/2].bytes.low; } */ //bufferwrite[20]=0x08;// //bufferwrite[21]=0x00;// //writemynodeid(); while(1) { if(flag==1) //如果上位机发送数据给单片机 { flag=0; write_dma(wrcount); //写网卡的ram:开始地址wraddress,一 次写wrcount字节 } // read_dma(readdress,recount); //读网卡ram:开始地址readdress,一次读recount字节 } } void netcardreset(void) { uint data i; uchar data temp; reset=1; P1=0x00; //使网卡的RSTDRV引脚变成高电平,网卡是高电平复位的。 //for(i=0;i <250;i++); //延时程序 reset=0; //使网卡的RSTDRV引脚变成低电平,网卡上电复位完毕 P1=0xff; //for(i=0;i <25 ......
>>返回讨论的主题
|