勤劳的小码农 发表于 2014-3-31 23:11:26

大家帮我看看这个24c08程序哪里不对

5v供电,我把所有地址管脚都拉低了,怎么在串口收到的是0x01?
#include<reg51.h>
#include<intrins.h>
#include<USART.h>
#define uchar unsigned char
#define uint unsigned int

sbit SCL=P2^1;
sbit SDA=P2^0;
uchar code displaycode[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
uchar code displaybit[]={0xfe,0xfd,0xfb,0xf7};
uchar displaybuf;

void delayX2us(uchar x)         //????
{
while(--x);
}

void delayXms(uchar x)         //????
{
uchar i;
while(x--)
{
for(i=250;i>0;i--)
{
   _nop_();
   _nop_();
   _nop_();
   _nop_();
}
}
}

void start ()
{
SDA=1;
delayX2us(2);
SCL=1;
delayX2us(2);
SDA=0;
delayX2us(2);
}

void stop ()
{
SDA=0;
delayX2us(2);
SCL=1;
delayX2us(2);
SDA=1;
delayX2us(2);
}


void init()
{
SCL=1;
delayX2us(2);
SDA=1;
delayX2us(2);
}

void responds()
{
uchar i;
i=0;
SCL=1;
delayX2us(2);
while(SDA==1&&i<200)
i++;
SCL=0;
delayX2us(2);
}

void write_dat (uchar dat)   //?????
{
uchar i;

for(i=0;i<8;i++)
{
SCL=0;
delayX2us(2);
SDA=(bit)(dat&0x80);
delayX2us(2);
SCL=1;
delayX2us(2);
SCL=0;
delayX2us(2);
dat<<=1;
}

SDA=1;
delayX2us(2);

}

void write(uchar dat,uchar add)   // ?????dat???add
{
start();
write_dat(0xa0);
responds();
write_dat(add);
responds();
write_dat(dat);
responds();
stop();
}

uchar read_dat ()    //?????
{
uchar i;
uchar dat;
bit j;
for (i=0;i<8;i++)
{
dat<<=1;
SCL=0;
j=SDA;
delayX2us(2);
SCL=1;
if(j==1)
{
   dat|=0x01;
}
SCL=0;
}
return dat;
}

uchar read (uchar add)   //???add???????
{
uchar dat;

start();
write_dat(0xa0);
responds();
write_dat(add);
responds();
start();
write_dat(0xa1);
responds();
dat=read_dat();
delayX2us(2);
stop();
return dat;
}

void display(uchar dat) //????
{
uchar bai,shi,ge,i;
bai=dat/100;
shi=dat%100/10;
ge=dat%10;
displaybuf=bai;
displaybuf=shi;
displaybuf=ge;

for(i=0;i<3;i++)
{
P0=displaycode];
P1=displaybit;
delayX2us(5);
P1=0xff;
}
}


void main ()
{int i=0;
uchar dat,add,k;
dat=212;
add=2;
        USART_Init();
init();
start();
write_dat(0xa0);
delayX2us(2);
        SCL=1;
while(SDA==1&&i<200)
i++;
        SBUF=SDA;
        while(1);
}

gongxd 发表于 2014-4-1 09:26:56

看文档吧 通用器件

勤劳的小码农 发表于 2014-4-1 12:38:11

gongxd 发表于 2014-4-1 09:26
看文档吧 通用器件

没看到哪里不对啊

勤劳的小码农 发表于 2014-4-1 22:33:03

没人回答,再顶一个
页: [1]
查看完整版本: 大家帮我看看这个24c08程序哪里不对