misszuoluo 发表于 2011-5-5 14:01:43

STC单片机端口设置问题

STC单片机端口设置问题:
   当P2口作为输入口时,端口应设置成准双向口,还是仅为输入?
   我这里有个实际电路---用作按键判断,P2口,没按下为低电平,按下为高电平,下拉电阻为10K,因为P2口默认为准双向口,我在程序中就未初始化P2口,结果检测中按下按键后,判读不出弹起的电压,但把10K电阻换成1K时,可以检测。有谁能帮我分析一下吗?
   准双向口的输入和仅输入的输入有何区别?

muzheyun 发表于 2011-5-5 15:34:53

STC的P2默认是双向口,高电平时弱上拉200微安左右,灌电流20ma。用这种模式就可以检测按键,下拉电阻5K,然后通过1K的电阻到VCC。不知道为什么非得按下时为高电平。如果实在需要可以用光耦转换一下。

misszuoluo 发表于 2011-8-12 12:48:24

非常感谢您,好久也没上来,因为电路图是另一位师傅设计的,我只负责编程,所以硬件部分不能更改,设置成仅输入,完好,还是非常感谢您的答复

ax6808 发表于 2022-3-26 23:42:06

本帖最后由 ax6808 于 2022-3-26 23:57 编辑

硬件部分不能更改情况下,确实设置成仅输入(高阻输入,按键直接接VDD)可解决问题。
其实:
1、STC早期单片机端口上电复位后一般为双向口和高电平,下拉电阻为10K太大,按下按键为高电平没有任何问题,但未按下时端口分压较高或临界,就不一定达到可靠的低电平(具体查手册里面有指标!)。而把10K电阻换成更小的如1K时就没有这个问题,可以检测(但下拉电阻小了引脚电流会增大,不利于低功耗设计)。
2、设置成仅高阻输入:必须得有合适阻抗的上拉、下拉或分压电阻;
3、后来用STC8等的话,内部已有弱上拉电阻了,完全可省去外部电阻:但得改一下硬件(端口只需接开关到地就好),同时端口设为准双向并写1即可,就是说平时端口为高电平,按键按下就为0(低电平),无需上拉或下拉电阻!!!!
页: [1]
查看完整版本: STC单片机端口设置问题