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

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条回答
ziruo2002ab
1楼-- · 2020-02-01 01:31
本帖最后由 ziruo2002ab 于 2013-2-4 19:01 编辑

认识这个问题,需要多了解下模电的mosfet的控制知识
fsfwl
2楼-- · 2020-02-01 04:48
zpxa001 发表于 2013-2-4 17:44
这源于51单片机独特的IO口电路结构,见下图:

很详细啊,非常感谢~
fsfwl
3楼-- · 2020-02-01 10:19
ziruo2002ab 发表于 2013-2-4 18:20
大部分旧的51单片机的P0口要作为输入时必须先将输出寄存器全设为为ff的开漏输出,使得输出信号电平最终决定 ...

这是不是就是所谓的高阻态?这个知识点是属于场效应管的吗?但是我刚刚学习的模电书上的场效应管并没有你说的知识点,你可以详细介绍一下这个问题吗?我还有一个问题,就是P1,P2,P3作为输入时需不需要像P0一样先置1?问题很多,请见谅。望指点指点,十分感谢。
876192514
4楼-- · 2020-02-01 16:01
 精彩回答 2  元偷偷看……
liwei_jlu
5楼-- · 2020-02-01 21:52
随便找一本51的教科书都会介绍的
wgui
6楼-- · 2020-02-01 22:53
很简单,当你的同一个IO还挂有其它的器件,操作过程中可能置抵电平了,那么现在这个公用脚可能未复位回高电平。那么外从外部中读取是不是一直读出低电平呢,而低电平是不可能被拉成高电平了,因为这样会有很大的流,会烧坏接口。而设成高电平是弱上拉,可以被拉成低电平。

一周热门 更多>