大家帮我看看这个逻辑有什么问题,为什么不能实现
在一个while循环里,检测一个端口电平变化,有变化蜂鸣器响一声,现在是端口出现低电平,蜂鸣器响一声,
出现高电平后等很长15秒左右蜂鸣器响一声,大家帮我分析分析问题出在哪里
sbitSLEEP =P0^1;
bit S_flag=1;
while
{
if(!SLEEP)
{
if(S_flag)
{
B_PID_enable=0;
S_flag=0;
BEEP=1;
BPj=0;
}
}
else
{
if(!S_flag)
{
B_PID_enable=1;
S_flag=0;
BEEP=1;
BPj=0;
}
}
if(BPj>100)
{
BEEP=0;
}
}
问题找到了,端口设置成高阻状态的问题,高祖不是可以当成输入口的吗,奇怪奇怪,大家注意了, 高阻输入,打开内部上拉,或外部有上拉 神农鼎 发表于 2025-11-29 19:44
高阻输入,打开内部上拉,或外部有上拉
我外部有上拉,高阻检测外部高低电平,应该没有问题吧,
你把它拉低立即响应,但拉高就等待十几秒才能响应,测量电平就是高电平,
昨天我弄了一天找不到原因,最后改成准双向口,他就行了,
配置成高阻好像是有些问题 你可以试试把端口先写1再读试试 他可能配置成 强推挽了
用 下面的工具自动生成程序
jwd 发表于 2025-11-30 08:48
你可以试试把端口先写1再读试试
试过了,没用 管脚配置高阻检测外部电平状态完全没有问题,
把电路原理图发上来,一眼就看出问题出在哪里了,
大概率是有外部上拉很大阻值电阻,还并了电容下地.
如果上拉电阻不大,电容也不大,就要考虑元件损坏或者焊接问题了. 网老四 发表于 2025-12-2 17:41
管脚配置高阻检测外部电平状态完全没有问题,
把电路原理图发上来,一眼就看出问题出在哪里了,
大概率是有外 ...
你这么一说,我看了看电路图,应该就是并联电容的问题,这个隔离二极管是“罪魁祸首”,任何时候认真看电路图都是必要的,我借鉴网上9号焊台电烙,单片机改成STC32G12K128,基本功能都实现了,在加入休眠时,出现上述问题,电路图如下:
页:
[1]