STC8G1K08读取IO高低电平问题
#include "reg51.h"#include "intrins.h"
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sbit P32 = P3^2;
sbit P33 = P3^3;
sfr P5 = 0xC8;
sbit P54 = P5^4;
sbit P55 = P5^5;
void delay()
{
int i, j;
for (i=0; i<1000; i++)
for (j=0; j<500; j++);
}
void main()
{
P3M0 = 0x00;
P3M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
while(1)
{
P55 = 1;
_nop_();
_nop_();
CY = P55;
if(CY)
{
P33 = 1;
delay();
P33 = 0;
delay();
}
else
{
P33 = 0;
}
}
}
使用的是STC8G1K08,P5^5连接一个5V按钮,根据P5^5的电平值,P3^3连接Led灯输出不同的状态。设计思路是,P5^5接5V按钮则灯闪烁,P5^5不接5V按钮则灯灭。但是程序烧到板子的实际情况是,不管P5^5有没有连接按钮,灯都是在闪烁。请问问题出在哪里?
仿真看下,咋回事
用 STC-USB Link1D 仿真STC8系列MCU - 编译器/仿真器/ISP下载/做自己的ISP/ID号加密/程序加密后传输 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
神农鼎 发表于 2023-5-31 18:02
仿真看下,咋回事
现在P5.5悬空,没接5V按钮。但是运行完“CY = P55;”后,CY变为1了
你的P55是设置为准双向模式,带弱上拉。不接5V时悬空,脚位也还是高电平的。
想要实现不接5V时灯灭的话,要在P55口上加个下拉电阻。 1、P5.5设置为高阻。
2、P5.5下拉一个10K电阻。 乘风飞扬 发表于 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,灯灭。满足设计要求。 梁工 发表于 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不能设置成准双向,只能是高阻输入? 旭日圆月 发表于 2023-6-1 09:17
(1)P5.5设置为准双向模式,P5.5接下拉电阻,上电前P5.5不接5V,上电后灯是灭的;然后P5.5接5V,灯闪烁 ...
也可以设置为准双向口,但是下拉电阻用3K。还是建议高阻,下拉10K。 梁工 发表于 2023-6-1 11:18
也可以设置为准双向口,但是下拉电阻用3K。还是建议高阻,下拉10K。
(1)P5.5设置为准双向模式,P5.5接下拉3K电阻。
(2)P5.5设置为高阻输入,P5.5接下拉10K电阻。
经过测试,以上两种均满足设计要求。
请问下以上的两种方案是否可以作为通用设计的标准?哪里可以查阅选取电阻大小的依据? 旭日圆月 发表于 2023-6-1 14:42
(1)P5.5设置为准双向模式,P5.5接下拉3K电阻。
(2)P5.5设置为高阻输入,P5.5接下拉10K电阻。
经过测 ...
要根据实际电路设计选取,哪有什么标准,硬件是很灵活的,一定要根据具体的外部电路进行设计匹配。