找回密码
 立即注册
查看: 4547|回复: 20

STC8G1K08读取IO高低电平问题

[复制链接]

2

主题

7

回帖

40

积分

新手上路

积分
40
发表于 2023-5-31 17:35:26 | 显示全部楼层 |阅读模式
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. sfr P3M1 = 0xb1;
  4. sfr P3M0 = 0xb2;
  5. sfr P5M1 = 0xC9;
  6. sfr P5M0 = 0xCA;
  7. sbit P32 = P3^2;
  8. sbit P33 = P3^3;
  9. sfr P5   = 0xC8;
  10. sbit P54 = P5^4;
  11. sbit P55 = P5^5;
  12. void delay()
  13. {
  14.     int i, j;
  15.     for (i=0; i<1000; i++)
  16.     for (j=0; j<500; j++);
  17. }
  18. void main()
  19. {
  20.                 P3M0 = 0x00;
  21.     P3M1 = 0x00;
  22.     P5M0 = 0x00;
  23.     P5M1 = 0x00;
  24.        
  25.     while(1)
  26.     {
  27.                         P55 = 1;
  28.                         _nop_();
  29.                         _nop_();
  30.                         CY = P55;
  31.                        
  32.                         if(CY)
  33.                         {
  34.                                 P33 = 1;
  35.                                 delay();
  36.                                 P33 = 0;
  37.                                 delay();
  38.                         }
  39.                         else
  40.                         {
  41.                                 P33 = 0;
  42.                         }               
  43.     }
  44. }
复制代码
使用的是STC8G1K08,P5^5连接一个5V按钮,根据P5^5的电平值,P3^3连接Led灯输出不同的状态。设计思路是,P5^5接5V按钮则灯闪烁,P5^5不接5V按钮则灯灭。但是程序烧到板子的实际情况是,不管P5^5有没有连接按钮,灯都是在闪烁。请问问题出在哪里?

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-5-31 18:02:57 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

2

主题

7

回帖

40

积分

新手上路

积分
40
发表于 2023-5-31 18:50:43 | 显示全部楼层
神*** 发表于 2023-5-31 18:02
仿真看下,咋回事

现在P5.5悬空,没接5V按钮。但是运行完“CY = P55;”后,CY变为1了
1.jpg
2.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-5-31 19:00:30 | 显示全部楼层
你的P55是设置为准双向模式,带弱上拉。不接5V时悬空,脚位也还是高电平的。
想要实现不接5V时灯灭的话,要在P55口上加个下拉电阻。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2023-5-31 22:59:25 | 显示全部楼层
1、P5.5设置为高阻。
2、P5.5下拉一个10K电阻。
回复 支持 反对

使用道具 举报 送花

2

主题

7

回帖

40

积分

新手上路

积分
40
发表于 2023-6-1 09:15:49 | 显示全部楼层
乘风*** 发表于 2023-5-31 19:00
你的P55是设置为准双向模式,带弱上拉。不接5V时悬空,脚位也还是高电平的。
想要实现不接5V时灯灭的话,要 ...

(1)P5.5设置为准双向模式,P5.5接下拉电阻,上电前P5.5不接5V,上电后灯是灭的;然后P5.5接5V,灯闪烁;然后P5.5不接5V,灯没有灭,还是继续闪烁。
(2)P5.5设置为高阻输入,P5.5接下拉电阻,上电前P5.5不接5V,上电后灯是灭的;然后P5.5接5V,灯闪烁;然后P5.5不接5V,灯灭。满足设计要求。
回复 支持 反对

使用道具 举报 送花

2

主题

7

回帖

40

积分

新手上路

积分
40
发表于 2023-6-1 09:17:30 | 显示全部楼层
梁*** 发表于 2023-5-31 22:59
1、P5.5设置为高阻。
2、P5.5下拉一个10K电阻。

(1)P5.5设置为准双向模式,P5.5接下拉电阻,上电前P5.5不接5V,上电后灯是灭的;然后P5.5接5V,灯闪烁;然后P5.5不接5V,灯没有灭,还是继续闪烁。
(2)P5.5设置为高阻输入,P5.5接下拉电阻,上电前P5.5不接5V,上电后灯是灭的;然后P5.5接5V,灯闪烁;然后P5.5不接5V,灯灭。满足设计要求。
这种情况是不是P5.5不能设置成准双向,只能是高阻输入?

点评

也可以设置为准双向口,但是下拉电阻用3K。还是建议高阻,下拉10K。  详情 回复 发表于 2023-6-1 11:18
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2023-6-1 11:18:06 | 显示全部楼层
旭日*** 发表于 2023-6-1 09:17
(1)P5.5设置为准双向模式,P5.5接下拉电阻,上电前P5.5不接5V,上电后灯是灭的;然后P5.5接5V,灯闪烁 ...

也可以设置为准双向口,但是下拉电阻用3K。还是建议高阻,下拉10K。
回复 支持 反对

使用道具 举报 送花

2

主题

7

回帖

40

积分

新手上路

积分
40
发表于 2023-6-1 14:42:33 | 显示全部楼层
梁*** 发表于 2023-6-1 11:18
也可以设置为准双向口,但是下拉电阻用3K。还是建议高阻,下拉10K。

(1)P5.5设置为准双向模式,P5.5接下拉3K电阻。
(2)P5.5设置为高阻输入,P5.5接下拉10K电阻。
经过测试,以上两种均满足设计要求。
请问下以上的两种方案是否可以作为通用设计的标准?哪里可以查阅选取电阻大小的依据?

点评

要根据实际电路设计选取,哪有什么标准,硬件是很灵活的,一定要根据具体的外部电路进行设计匹配。  详情 回复 发表于 2023-6-1 15:26
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2023-6-1 15:26:59 | 显示全部楼层
旭日*** 发表于 2023-6-1 14:42
(1)P5.5设置为准双向模式,P5.5接下拉3K电阻。
(2)P5.5设置为高阻输入,P5.5接下拉10K电阻。
经过测 ...

要根据实际电路设计选取,哪有什么标准,硬件是很灵活的,一定要根据具体的外部电路进行设计匹配。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 22:11 , Processed in 0.463000 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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