P2.0/P2.1与P3.0/P3.1有什么区别,为什么P2做输入就正常?

2019-07-15 10:04发布

各位大神,我有个疑惑想请教下:

我需要使用两个端口作为输入,根据电平高低对变量OC赋值,先前使用

P3端口,一直无法正常输入,换成P2就完全正常了(事先都置1了)。
难道P3.0/P3.1具有第二功能Tx/Rx,就不能作为普通的输入口,可是很

多教材上不是都写了任何Port口都能做I/O吗?

期待大神解答。

以下是能够正常工作的代码(使用P2口):
uchar ocscan(void)
{
        uchar oc;
        switch(P2)
        {
        case(0xff): oc=1;break;
        case(0xfe): oc=2;break;
        case(0xfd): oc=3;break;
        default:break;
        }
        return(oc);
}

以下是不能工作的代码(使用P3口):
uchar ocscan(void)
{
        uchar oc;
        switch(P3)
        {
        case(0xff): oc=1;break;
        case(0xfe): oc=2;break;
        case(0xfd): oc=3;break;
        default:break;
        }
        return(oc);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
YouTeng
2019-07-16 18:00
已将“兮”的回答选为最佳回答,不过版主及其他几位的回答应该也是要注意的,总结下:

除非是使用第二功能或做复用,P3一般不建议使用,如果必须用作普通I/O口:

1、要确定第二功能关了;
2、做输入端口置1;
3、单独赋值;
4、做输出加1K左右上拉,做输入加10K左右下拉(低电平触发);

感谢!

一周热门 更多>