导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→硬件:为什么我读不出rtl8019的寄存器值呀![leech42]

 *第723篇: 硬件:为什么我读不出rtl8019的寄存器值呀!

  
楼 主:leech42 2001年10月17日11:42
 硬件:为什么我读不出rtl8019的寄存器值呀!
为什么我读不出rtl8019的寄存器值呀!
我没有接9346,而SD0~SD7接至P0.0~P0.7,IORB接P1.6,IOWB接P1.7,SA0~SA4接
P2.0~p2.4,SA5~SA7和SA10~SA19接地,SA8~SA9接VCC,BD0~BD7是悬空的。
我的测试程序如下,还请各位指导一下吧!
#define uchar unsigned char 
#define uint unsigned int

#include <absacc.h>
#include <w77e58.h>
/*--BIT Define------------------------------*/
sbit RSTDAU = P3^3;
sbit IORB   = P1^6;
sbit IOWB   = P1^7;

/*--Register Define-------------------------*/
#define reg00 XBYTE[0x8000] /* 300H */
#define reg01 XBYTE[0x8100] /* 301H */
#define reg02 XBYTE[0x8200] /* 302H */
#define reg03 XBYTE[0x8300] /* 303H */
#define reg04 XBYTE[0x8400] /* 304H */
#define reg05 XBYTE[0x8500] /* 305H */
#define reg06 XBYTE[0x8600] /* 306H */
#define reg07 XBYTE[0x8700] /* 307H */
#define reg08 XBYTE[0x8800] /* 308H */
#define reg09 XBYTE[0x8900] /* 309H */
#define reg0a XBYTE[0x8a00] /* 30AH */
#define reg0b XBYTE[0x8b00] /* 30BH */
#define reg0c XBYTE[0x8c00] /* 30CH */
#define reg0d XBYTE[0x8d00] /* 30DH */
#define reg0e XBYTE[0x8e00] /* 30EH */
#define reg0f XBYTE[0x8f00] /* 30FH */

/*-----复  位-----*/
void reset(void)
{
    uchar data cDelay;
    RSTDAU=1; //使rtl8019的RSTDRV引脚变成高电平,8019是高电平复位的
    for(cDelay=250;cDelay>0;cDelay--); //延时程序
    RSTDAU=0; //使rtl8019的RSTDRV引脚变成低电平,8019上电复位完毕
    for(cDelay=250;cDelay>0;cDelay--); //延时程序
}

sbit P1_5=P1^5;
sbit P1_6=P1^6;

void main(void)
{
    uchar zhi;
    reset();
    P1_5=P1_6=1;
    IOWB=0;
    reg00=0x01;
    IOWB=1;

    IORB=0;
    zhi=reg00;
    IORB=1;
    P0=zhi;
    if(zhi==0x01)
        P1_5=0;
    else
    P1_6=0;
    for(;;){}
}

  
2楼:leech42 2001年10月17日11:44
 老古大虾,帮忙一下了。
  
3楼:老古 2001年10月17日12:00
 试试
void main(void)
{
    uchar zhi;
    reset();
    P1_5=P1_6=1;
    P2=0x80; //address
    P0=0x01;
    IOWB=0;
    IOWB=1;
    P2=0x80;
    IORB=0;
    zhi=P0;
    IORB=1;
    if(zhi==0x01)
        P1_5=0;
    else
    P1_6=0;
    for(;;){}
}
  
4楼:leech42 2001年10月17日13:42
 好像这样子区分不出来的呀!P0口一直保持0x01的。
  
5楼:老古 2001年10月17日14:57
 哦,少写了一句代码:
void main(void)
{
    uchar zhi;
    reset();
    P1_5=P1_6=1;
    P2=0x80; //address
    P0=0x01;
    IOWB=0;
    IOWB=1;
    P2=0x80;
    P0=0xff;// add this
    IORB=0;
    zhi=P0;
    IORB=1;
    if(zhi==0x01)
        P1_5=0;
    else
    P1_6=0;
    for(;;){}
}

  
6楼:leech42 2001年10月17日15:55
 好像读出来的P0值是0x84。

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

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


[上一篇主题]:硬件:赛格的东东能不能办理邮购?怎么联系?

[下一篇主题]:闲聊:去广州,应该逛哪个电子市场?