一个小问题,希望知道的高手能指点一下!

2020-01-30 14:17发布

以下是对应下面时序图的读DS12C887的函数
uchar read_ds(uchar add)
{
    uchar ds_date;
    dsas=1;
    dsds=1;
    dsrw=1;
    dscs=0;
    P0=add;
    dsas=0;
    dsds=0;
    P0=0xff;
    ds_date=P0;
    dsds=1;
    dsas=1;
    dscs=1;
    return ds_date;
}
我的问题就是程序中的P0=0xff是不是必要的,还是可以去掉的,它的作用是什么?希望知道的高手能指点一下!感谢大家。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
fsfwl
1楼-- · 2020-01-31 07:49
i_kkyu 发表于 2013-2-4 17:19
标准51 ,就是这样的。

我明白了,谢谢你的回复。
i_kkyu
2楼-- · 2020-01-31 10:25
fsfwl 发表于 2013-2-4 17:22
能麻烦你详细给我讲讲为什么吗?十分感谢

想读,就先输出个1 。8个口都输出1 ,就是0xff 了。
具体原因,找个51 的IO口的框图分析下吧。 P0 和其他的口不一样。
zpxa001
3楼-- · 2020-01-31 11:57
这源于51单片机独特的IO口电路结构,见下图:

Snap2.gif (39.01 KB, 下载次数: 0)

下载附件

2013-2-4 17:41 上传



如P0口,作为输出时是漏极开路结构,当给输出锁存器写入“1”时,口线处于浮空状态,能够作为高阻抗输入(上图红字)。
ziruo2002ab
4楼-- · 2020-01-31 14:38
大部分旧的51单片机的P0口要作为输入时必须先将输出寄存器全设为为ff的开漏输出,使得输出信号电平最终决定于外部信号电平,此时便可以光明正大的监测输入电平作为真正的外部电平了
lijia115003
5楼-- · 2020-01-31 20:08
 精彩回答 2  元偷偷看……
lijia115003
6楼-- · 2020-02-01 00:59
我还是不太明白,,

一周热门 更多>