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

51单片机的P2口为啥不能位操作?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
大家好,用单片机发现一个奇怪的现象,P2口不能位操作,但Proteus仿真P2口是正常的,Keil C51仿真P2口也是正常的。程序改成其他端口就正常,可以位操作。型号是ATmel的AT89S52还有AT89C51RC2都出现这种现象,不知道为什么?

该用户从未签到

2#
发表于 2014-4-7 09:12 | 只看该作者
本帖最后由 超級狗 于 2014-4-8 11:17 编辑
8 G' E* O+ Q: W" M" F" e( B
, I& P' O% N7 D) v5 U' m" Q: f3 m" q敘述不夠清楚,不曉得是什麼問題?
5 x2 h! Y& |& X- k- y7 @. D/ v4 y) C& X' w' _: q/ m  C+ Q& s
芯片資料是寫 Port 2 要當 Input 時,要 Enable Internal Pull-Up Resistor,所以 SFR 暫存器 0x0AH 的位址對應的接腳位元(bit)要寫 "1"。
+ x9 R; K. j9 v2 t0 N4 r! e7 y1 w+ n
另外一點,讀寫 Port 2 要用直接定址的方式(Direct Addressing)
9 K( v8 O3 I9 d1 |& W, V* p! S3 B; s
3 `/ q$ U# o5 R8 K0 y1 K2 Vmove 0a0ah, #data (這是寫到 Port 2
% K* |4 {" g6 \' Q- N- D- R1 E# q; Y9 c2 c" h0 Q- O9 {' ?, w
move @R0, #data(R0 = 0x0A0H,這是寫到 Internal RAM
: b; p; u; P! P$ }) N
3 i* j7 E- Q/ g, Y6 O( n6 a ( H3 s' u$ |, w1 ~6 |+ p  E* N7 m
, P( T) O6 w/ u% A9 j) F' c

$ h! x4 P+ c5 S' d+ l4 l1 h5 [9 a" t4 `. [( ~
1 }& @0 h$ ^4 M, c3 n, o; w

AT89S52 Section 6.2 Data Memory.jpg (219.87 KB, 下载次数: 3)

AT89S52 Section 6.2 Data Memory.jpg

AT89S52 Section 4.5 Port 2.jpg (168.13 KB, 下载次数: 3)

AT89S52 Section 4.5 Port 2.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-6 01:14 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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