找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2559|回复: 17
收起左侧

STC8G 8pin单片机P3.0和P3.1口不能检测高电平?

[复制链接]
ID:959051 发表于 2021-11-23 21:27 | 显示全部楼层 |阅读模式
我程序是当P3.0或者P3.1检测到高电平 做其他事情,但是发现无法检测外部高电平,程序初始化把P3.0和P3.1 都置0了。然后通过外部高电平检测。结果发现他们无法检测外部高电平,只能检测低电平,就是拉低能检测,拉高就检测不了。

单片机源程序如下:
  1. void main(void)
  2. {        

  3.         GPIO_config();
  4.         P54 = 1;
  5.         P55 = 1;
  6.         P30 = 0;
  7.         P31 = 0;
  8.         while(1)
  9.         {
  10.         //        out1 ();
  11.         //        out2 ();
  12.         if(P30 == 1)
  13.                 {P32 = 0;}
  14.         else P32 = 1;
  15.                                 
  16.         }
  17. }
复制代码


回复

使用道具 举报

ID:624769 发表于 2021-11-23 21:43 | 显示全部楼层
你要检测外部电平,前提就是  IO = 1  
你IO=0 永远只能是0
回复

使用道具 举报

ID:959051 发表于 2021-11-23 21:48 | 显示全部楼层
188610329 发表于 2021-11-23 21:43
你要检测外部电平,前提就是  IO = 1  
你IO=0 永远只能是0

我IO=0  是想通过外部高电平检测进来。我也试了去掉IO =0,但是还是不行。
回复

使用道具 举报

ID:57657 发表于 2021-11-23 22:26 | 显示全部楼层
若IO口为高电平,则可以被拉低,否则就短路了。
回复

使用道具 举报

ID:959051 发表于 2021-11-24 08:07 | 显示全部楼层

RE: STC8G 8pin单片机P3.0和P3.1口不能检测高电平?

npn 发表于 2021-11-23 22:26
若IO口为高电平,则可以被拉低,否则就短路了。

我的问题是 P3.0和P3.1 能检测外部的低电平,也就是说只有外部给低电平的时候 单片机能检测到,我上面的程序是示范检测外部高电平的。
回复

使用道具 举报

ID:752974 发表于 2021-11-24 08:36 | 显示全部楼层
注意看看IO口的初始化,若不是准双向IO口,则要配置成输入。
回复

使用道具 举报

ID:70035 发表于 2021-11-24 08:59 | 显示全部楼层
P3.1、P3.0作为输入?那直接配置成输入就行了。
回复

使用道具 举报

ID:314246 发表于 2021-11-24 09:17 | 显示全部楼层
要检测外部输入,必须 P30 = 1;   P31 = 1;否则无法检测,如平时一定要低电平,可以考虑增加合适的下拉电阻,但是必须 P30 = 1;   P31 = 1;
回复

使用道具 举报

ID:25310 发表于 2021-11-24 11:40 | 显示全部楼层
   P0M1 = 0;   P0M0 = 0;   //设置为准双向口     P1M1 = 0;   P1M0 = 0;   //设置为准双向口     P2M1 = 0;   P2M0 = 0;   //设置为准双向口     P3M1 = 0;   P3M0 = 0;   //设置为准双向口     P4M1 = 0;   P4M0 = 0;   //设置为准双向口
回复

使用道具 举报

ID:624769 发表于 2021-11-24 13:00 | 显示全部楼层
guoqiang881245 发表于 2021-11-23 21:48
我IO=0  是想通过外部高电平检测进来。我也试了去掉IO =0,但是还是不行。

有几个关键概念必须要掌握:
1)你要检测外部"高"电平,  首先要满足的条件是:  当外部不是"高"电平的时候, 外部必须得要是“低” 电平。
2)老生常谈的问题,IO电平只能被拉低不能被拉高,所以检测外部不管是“高电平”还是“低电平”,内部都必须是高电平, 检测的只是,IO电平被拉低,还是没有被拉低。 来推导出:外部是高电平还是低电平的结论。

这两个基本概念你搞清楚了,你现在的问题自然就不是问题。
回复

使用道具 举报

ID:401564 发表于 2021-11-24 13:53 | 显示全部楼层
STC的老总把STC视为"国货之光"单片机
一个国货之光单片机竟然不能检测高电平,怎么可能嘛
前面几个网友已经给你正确的答案了
1,单片机必需要先设置端口的IO模式,虽然你用的P3.0和P3.1不用设置,但最好是要先设置,因为STC8G系列的都要先设置,不然就是高阻状态,
2,P3=0xff;
这个语句是一定要的
回复

使用道具 举报

ID:959051 发表于 2021-11-24 18:33 | 显示全部楼层
188610329 发表于 2021-11-24 13:00
有几个关键概念必须要掌握:
1)你要检测外部"高"电平,  首先要满足的条件是:  当外部不是"高"电平的时 ...

谢谢你,按你说的搞定了。确实明白了你说的这两点,问题就迎刃而解了。
回复

使用道具 举报

ID:959051 发表于 2021-11-24 18:34 | 显示全部楼层
188610329 发表于 2021-11-23 21:43
你要检测外部电平,前提就是  IO = 1  
你IO=0 永远只能是0

感谢回答!!
回复

使用道具 举报

ID:959051 发表于 2021-11-24 18:34 | 显示全部楼层
munuc_w 发表于 2021-11-24 08:36
注意看看IO口的初始化,若不是准双向IO口,则要配置成输入。

感谢回答,谢谢!
回复

使用道具 举报

ID:959051 发表于 2021-11-24 20:59 | 显示全部楼层
pcbboy 发表于 2021-11-24 11:40
P0M1 = 0;   P0M0 = 0;   //设置为准双向口     P1M1 = 0;   P1M0 = 0;   //设置为准双向口     P2M1 =  ...

感谢大佬帮忙,谢谢
回复

使用道具 举报

ID:959051 发表于 2021-11-24 21:23 | 显示全部楼层
guoqiang881245 发表于 2021-11-24 20:59
感谢大佬帮忙,谢谢

大佬 设置准双向口能设置某个pin吗?你上面设置的是P0  P1 P2 P3 的所有口都是准双向吗?
回复

使用道具 举报

ID:624769 发表于 2021-11-24 21:33 | 显示全部楼层
guoqiang881245 发表于 2021-11-24 21:23
大佬 设置准双向口能设置某个pin吗?你上面设置的是P0  P1 P2 P3 的所有口都是准双向吗?

说来话长……

最新版STC8G 手册 P.229 页 内容不多,自己看吧……
回复

使用道具 举报

ID:959051 发表于 2021-11-26 09:11 | 显示全部楼层
188610329 发表于 2021-11-24 21:33
说来话长……

最新版STC8G 手册 P.229 页 内容不多,自己看吧……

已经搞明白了,谢谢大佬!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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