EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
P2.0/P2.1与P3.0/P3.1有什么区别,为什么P2做输入就正常?. `5 l5 W2 }# s5 X
* y1 w7 [' v: G1 Y
- |$ E8 W9 Z5 P$ q0 s
各位大神,我有个疑惑想请教下:6 P* M7 l6 N7 C6 q5 N+ \# H
; U) `: o8 F9 G+ X4 s
我需要使用两个端口作为输入,根据电平高低对变量OC赋值,先前使用* F* t2 E7 o+ m* {7 W
! Y" M# _/ ~; v% d" RP3端口,一直无法正常输入,换成P2就完全正常了(事先都置1了)。
' }# F( x( a4 L% x难道P3.0/P3.1具有第二功能Tx/Rx,就不能作为普通的输入口,可是很4 ?* g1 {" m6 O1 s
& ` r! w* |* m0 l多教材上不是都写了任何Port口都能做I/O吗?
' Q3 U6 E1 K1 g8 M& _6 a
$ r3 J& @+ @* p, E7 I期待大神解答。4 _/ ]5 V9 H: |1 I/ Y
) J1 F% Y3 l+ {' K以下是能够正常工作的代码(使用P2口):5 Z% k+ u3 e# q; k* k3 B1 Z
uchar ocscan(void)
; L$ g5 R' b/ q Z% A* H{
7 h( ^8 w3 Y8 v6 y Y uchar oc;
1 v2 h/ U2 Z) p2 z3 E) d; c switch(P2)
/ C7 T6 n% M F+ K( K* _ {
0 J" N- C0 o6 l2 E1 C case(0xff): oc=1;break;
$ h5 `$ O: k' U) f case(0xfe): oc=2;break;7 a4 {5 t1 G* C- `
case(0xfd): oc=3;break;
5 E, A, t( S8 j) _$ v default:break;
5 d0 B8 F7 t) K" i }
2 n4 f4 b5 U3 E( s return(oc);* ~ ~; c! k: l; r5 K. Y
}
) H! _1 ^6 p6 `8 I/ ~# f1 W
& v% I @# H7 ?* |6 C以下是不能工作的代码(使用P3口):+ r/ v I! N4 n: \* k4 r _
uchar ocscan(void)
1 N) d& n$ Y Y8 l" ]8 i3 b{0 \, K) R' o! _9 n0 t$ f
uchar oc;
. f$ E3 r7 U6 m( I& p switch(P3)
% @( H3 \: n q4 I! x { }7 i q4 r4 Z! i5 C- _
case(0xff): oc=1;break;. ?/ o% h. U: H5 G
case(0xfe): oc=2;break;0 O" ]0 B, j) B5 T) m* D; F' l
case(0xfd): oc=3;break;
5 z* H+ g8 i, s7 Q7 p3 b3 w- ~ default:break;4 k; y5 ^* A4 m: J8 h' i2 g: W% m
}7 y% g' W- G1 D% F9 x3 L4 }
return(oc);
5 Q. a% t1 W* ]! I5 s0 S}
# |5 P6 n* e9 ~' H+ V9 ~: ?* B" ~ |