各位大神,我有个疑惑想请教下:
我需要使用两个端口作为输入,根据电平高低对变量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);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
除非是使用第二功能或做复用,P3一般不建议使用,如果必须用作普通I/O口:
1、要确定第二功能关了;
2、做输入端口置1;
3、单独赋值;
4、做输出加1K左右上拉,做输入加10K左右下拉(低电平触发);
感谢!
你一回复我又有点迷糊了。
做外部中断的应该是P3.2/P3.3端口吧,本例中用的是P3.0/P3.1。
并且在本程序中,我并没有进行中断模式声明啊。
一周热门 更多>