EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
P2.0/P2.1与P3.0/P3.1有什么区别,为什么P2做输入就正常?
0 _, w& R4 U3 `2 q2 Q6 ]; m
5 H1 j% H( M- T' _; {+ s( ~9 }
" Q& E- P% E: I9 e! Y% M各位大神,我有个疑惑想请教下:
' j+ P% r& N# E8 ^/ ]0 M) u [
! P0 f) P1 S* w3 P我需要使用两个端口作为输入,根据电平高低对变量OC赋值,先前使用7 W8 a8 d" S5 V( w& }1 Q3 t( A# J C
# q7 ]3 N: E! y, S% g
P3端口,一直无法正常输入,换成P2就完全正常了(事先都置1了)。6 T+ J4 h2 o8 p3 n, g
难道P3.0/P3.1具有第二功能Tx/Rx,就不能作为普通的输入口,可是很
: [& Q7 t( M( v2 \; o' z3 I0 K. O+ q# W% j- q8 u
多教材上不是都写了任何Port口都能做I/O吗?
2 V+ R3 g; ]9 {5 u/ V0 I+ v0 f+ O% B
; z$ l& k" @6 x u u, k8 h. F期待大神解答。* z; d9 j) h' V$ P3 c, v
- j1 u9 {: R; o5 n
以下是能够正常工作的代码(使用P2口):/ J! j3 I( k$ l" o0 M9 z; n# X/ ^
uchar ocscan(void)
' Q: M: }& d( u$ |{4 _7 ?: q6 p0 J& f) G
uchar oc;7 m& ?, k" |; J
switch(P2): Y3 Z" X' Z6 h8 ?
{% u5 e0 S9 i5 y- ~
case(0xff): oc=1;break;; m+ u& Q0 b9 }
case(0xfe): oc=2;break;4 f1 e/ C$ u4 D4 ]+ X2 _
case(0xfd): oc=3;break;1 F6 |. Y2 w) y2 ]0 B: z& b
default:break;& F5 G: v& a1 ^' i
}
2 @! G: o7 |! f2 q: k0 E return(oc);9 r3 R* }1 }7 D b9 _, y
}
5 y- b, h' `" d% s( G
# y& w; g2 g* U! \5 A以下是不能工作的代码(使用P3口):" ^' d5 e1 t) R9 y
uchar ocscan(void)' _* C% Q; T+ J7 O
{6 \3 g3 W5 ]4 [* S9 z
uchar oc;. E% [* b, V) y/ o: v8 E6 n
switch(P3)7 ? C& I" n% q( s8 E" n
{
4 O8 z; {; ~2 Q case(0xff): oc=1;break;
: p; h! [% `! L- g$ l' B- A case(0xfe): oc=2;break;9 S1 \/ ?# Q+ d: _9 N
case(0xfd): oc=3;break;" g' y4 ^+ S+ ]$ ~% w9 s0 U Y5 g
default:break;
+ X! L$ ~ R8 ~9 \0 ^! u) H }! s2 \) y# Z9 d J8 V( Z$ j3 n. ?
return(oc);
% b( M( e4 I( x0 O* K, K# J}7 q( Z+ L! _$ A- P8 m# [. o
|