找回密码
 注册
关于网站域名变更的通知
查看: 2823|回复: 7
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-2 13:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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" ~

该用户从未签到

2#
发表于 2019-4-2 13:48 | 只看该作者
如果你用的是51单片机的话 建议不要这样写哦   P3口好多复用功能  想用P3.0 P3.1的话 建议单独用这两个IO口 而不是P3 这样子

点评

你说的意思,就是说如如果想用P3.0 P3.1,就在代码里面明确写出P3.0=1或P3.1=0这样吗?  详情 回复 发表于 2019-4-2 14:12

该用户从未签到

3#
 楼主| 发表于 2019-4-2 14:12 | 只看该作者
helendcany 发表于 2019-4-2 13:489 G; _! x" G. S, O5 b
如果你用的是51单片机的话 建议不要这样写哦   P3口好多复用功能  想用P3.0 P3.1的话 建议单独用这两个IO口 ...

% c! _# \# X; {你说的意思,就是说如如果想用P3.0 P3.1,就在代码里面明确写出P3.0=1或P3.1=0这样吗?6 S4 P( k3 E# E, @

该用户从未签到

4#
发表于 2019-4-2 14:27 | 只看该作者
我看贴,也是带着疑惑来的··给p3.2  p3.2 p3.4输入按键信号都正常··. L* E  N3 n# o# Y# X
给p3.5输入就是没反应····

该用户从未签到

5#
发表于 2019-4-2 14:43 | 只看该作者
P0口:真正的双向口,输出锁存,输入缓冲,输入前要先置1(KEIL包含的头文件已经有动作了,如果用汇编,要人工置1),输出为漏极开路,输出一般都要上拉电阻。输入为高阻态,能驱动8个TTL负载。当有片外存储器时,作数据线使用。  P1口:是最简单的口,输入也要先置1,无高阻态,只能是输出或者输入。能驱动4个TTL负载。  P2口:I/O与P1口一样,当有片外存储器时,作地址线使用,寻址64K片外数据存储器。能驱动4个TTL负载。  P3口:I/O与P1口一样,但无论输入输出都要先置1。具有很多复用功能。 口的一般使用方法:做复用时一般不要加上拉和下拉电阻。但单输出驱动负载时都应加1K左右的上拉电阻,单输入时要加10K左右的下拉电阻,且输入为低电平触发。希望对你有帮助. z4 {; h( m2 }! k6 _+ x

该用户从未签到

6#
发表于 2019-4-2 14:57 | 只看该作者
因 P3.0 和 P3.1 是下载程序必须要用到的I/O口,所以不是必须需要的话最好不要用!实在要用请单独赋值即可。

该用户从未签到

7#
 楼主| 发表于 2019-4-2 15:06 | 只看该作者
谢谢大家!总结下:
; D# q  x' Q8 C& e
" E" W( W7 q0 |/ F' b' W除非是使用第二功能或做复用,P3一般不建议使用,如果必须用作普通I/O口:
& B& i! Y- e3 \4 S; g+ e# a0 {% ]* A; s  M$ U+ o8 c
1、要确定第二功能关了;
1 x! _) d6 V7 x5 b0 X: O- @! P2、做输入端口置1;
: p1 X# p( A* F8 T4 n3、单独赋值;* x6 G. v1 V) \$ M
4、做输出加1K左右上拉,做输入加10K左右下拉(低电平触发);2 U2 V6 m: F' e& T9 b

& l; n; O+ [2 R8 G% X6 _! q8 C感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-24 01:37 , Processed in 0.109375 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表