你们好,我今天用AT93C56写程序,那个手册上的时序图,看的不怎么明白,我现在用的一本讲单片机通讯的书貌似程序写得我也看不懂,特请教大侠,请看程序
uchar at93c56_read(char addr)
{
uchar i,result;
CS=0; SK=O; CS=1;
DI=1; SK=1; SK=0;
DI=1; SK=1; SK=0;
DI=0; SK=1; SK=0;
for (i=0;i<8;i++)
{
DI=addr&0x80;
SK=1; SK=0;
addr<<=1;
}
CS=0; DO=1; CS=1;
SK=0;
while(!DO)
{
SK=1;SK=0;
}
SK=1; SK=0;
result=0;
for (i=0;i<8;i++)
{
resule<<=1;
result=result|DO;
SK=1; SK=0;
}
CS=0;
return(result);
}
这里面我老是觉得书上写地址的程序是错误的
还有一个问题是为什么DS=0的时候,D0可以送一个0出来应答,表示要发数据了,不是只有正跳变才可以发出数据的吗?
那个 CS=0; DO=1; CS=1;
SK=0;
while(!DO)
{
SK=1;SK=0;
}
SK=1; SK=0;
我不懂这个地方是什么意思?盼高手解答
我上传了它的datasheet
|