EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
P2.0/P2.1与P3.0/P3.1有什么区别,为什么P2做输入就正常?
# ~ s+ ]; t' @: l7 S3 m+ Y# S7 A* a( q9 |+ w; ^0 P
& j' `! d. c+ F- Y* j4 l/ ~: _1 c
各位大神,我有个疑惑想请教下:
, q I* d+ D5 Y" B/ [" c- x/ D `7 r# I
我需要使用两个端口作为输入,根据电平高低对变量OC赋值,先前使用
0 y h* K6 d8 M4 q% C, c x& C( H0 G( ?
P3端口,一直无法正常输入,换成P2就完全正常了(事先都置1了)。: f7 k+ A& m `! G8 W* Q$ z
难道P3.0/P3.1具有第二功能Tx/Rx,就不能作为普通的输入口,可是很( t7 L. _ T Y
6 x b# P8 ?" S2 p多教材上不是都写了任何Port口都能做I/O吗?
, _$ R# i; l! N0 Q3 @: q7 z
8 _7 v( p2 s' e; }! R" `. @期待大神解答。
7 \" t' V x h0 K5 K9 T& k# h; K8 z( D9 u; h
以下是能够正常工作的代码(使用P2口):* B' `$ L( r. K" r
uchar ocscan(void)
" l* d9 L. P( w0 X; c! t. @{
F# T, g( F; u3 ^: `- L2 r' x uchar oc;
& Y. U; [" b1 ], P switch(P2)1 E) W) T) c2 A1 N
{: k8 w! c7 k* e3 j
case(0xff): oc=1;break;# P' {* D4 v' \3 s! t& a
case(0xfe): oc=2;break;% o( ?+ i) n2 D; t, v: ?3 G
case(0xfd): oc=3;break;
/ v0 P$ ~/ @. | l p, @ default:break;
- E1 S5 F- k$ p& ?( E }
/ X$ V' Y7 ?, S# }. o return(oc);# l9 l$ ?* P+ ]2 ^
}2 _- f3 J4 y$ e5 G5 C: ^7 ]1 V4 o
8 q& p: D0 K8 G/ o# y以下是不能工作的代码(使用P3口):
$ ^, }7 l9 X, [% y2 |uchar ocscan(void)! B& Q1 N& O) s( |3 p* b# T, X
{
* @. i; Y4 V0 i+ u' x/ ]( ^' j2 a c* a uchar oc;
3 J* P1 B! Y$ K, v# e" w8 r8 Y+ b0 K switch(P3)- n4 ]% c5 u9 N1 \
{- G/ ^; H( C# [' v" i/ q& ~" C
case(0xff): oc=1;break;
a" A9 R/ u- X1 C4 o( O case(0xfe): oc=2;break;
: y; Q% e# ]8 i case(0xfd): oc=3;break;6 u+ G* p! R2 V6 S% N
default:break;; \9 C, L: ~: w9 |! r
}+ }% ]% G. h% k4 x+ N6 D4 r
return(oc);1 q9 `% G+ K) E& L+ s
}
' I6 ] P% j/ B" p |