cmwdslzz 发表于 2026-7-1 09:19:16

求助STC8G1K08A的P30引脚如何点亮led

<p>求助各位大佬,在使用STC8G1K08A/Ai8G1K08A尝试实现六路流水灯的时候,发现P31-P55这五个引脚对应的LED都可以正常亮起,但是P30的LED无论如何都不亮,然后写了一个最基础的LED持续点亮的代码,发现还是不亮。考虑到代码可以正常下载以及LED单独连接电池的时候是亮的,P30和led应该都没有问题,不知道还有什么其他可能的问题原因。<br />
下方是我写的基础LED点亮代码,P31引脚对应LED常亮,P30不亮。</p>
<p>补充:后续补充了配置P30和P31为准双向的代码,但是还是不行</p>
<pre><code class="language-C">#include &quot;STC8G.h&quot;
#include &quot;Type_def.h&quot;

sbit LED0 = P3^0;
sbit LED1 = P3^1;
sbit LED2 = P3^2;
sbit LED3 = P3^3;
sbit LED4 = P5^4;
sbit LED5 = P5^5;

void delay(u16 Count)
{
    while(Count--)
    {
      _nop_();
    }
}

void main(void)
{
    P3M0 = 0x00; P3M1 = 0x00; // 补充的

    delay(100);

    LED0 = 0;
    LED1 = 0;

    while(1)
    {

    }
}
</code></pre>

soma 发表于 2026-7-1 09:35:58

io口没有初始化一下,设置输入输出模式啊。P3M0和P3M1寄存器要设置。

jwd 发表于 2026-7-1 09:50:51

需要设置端口模式,都设置为准双向口就可以了

cmwdslzz 发表于 2026-7-1 09:55:53

soma 发表于 2026-7-1 09:35
io口没有初始化一下,设置输入输出模式啊。P3M0和P3M1寄存器要设置。

这两个引脚的输出模式不是默认双向吗,所以我就没配置;另外刚才试了一下,在最开始加了一行“P3M0 = 0x00; P3M1 = 0x00;”显式配置了一下,还是不行...

cmwdslzz 发表于 2026-7-1 09:57:36

jwd 发表于 2026-7-1 09:50
需要设置端口模式,都设置为准双向口就可以了

P30和P31我看都是默认的准双向所以没有显示配置;另外P31确实点亮了,只有P30有问题,

lcwswust 发表于 2026-7-1 10:01:48

P30检查一下是不是接串口或USB了,可能被外部设备驱动了。

狂热主宰 发表于 2026-7-1 10:03:03

cmwdslzz 发表于 2026-7-1 09:55
这两个引脚的输出模式不是默认双向吗,所以我就没配置;另外刚才试了一下,在最开始加了一行“P3M0 = 0x0 ...
端口需要选择配置
STC89、90参考程序没有端口配置
后来的8G、8H、8A系列...需配置端口

梁工 发表于 2026-7-1 10:22:18

1、将所有IO初始化为推挽输出。
2、将串口下载线拔走。

cmwdslzz 发表于 2026-7-1 10:27:25

梁工 发表于 2026-7-1 10:22
1、将所有IO初始化为推挽输出。
2、将串口下载线拔走。

请问大佬准双向模式不可以吗,我之前看说如果把用于下载的P30和P31设置为推挽模式可能会导致下载失败单片机变砖所以没敢尝试。另外现在用准双向至少同为下载引脚的P31可以点亮

梁工 发表于 2026-7-1 10:31:17

cmwdslzz 发表于 2026-7-1 10:27
请问大佬准双向模式不可以吗,我之前看说如果把用于下载的P30和P31设置为推挽模式可能会导致下载失败单片 ...

准双向模式只能输出低电平点亮LED,高电平电流太小点不亮,我不知道你是高电平还是低电平点亮LED,所以推荐推完输出。
如果你的P3.0接着下载线,USB转串口的输出脚高电平往往电流较大,P3.0拉低时啦不低,还有可能烧IO。
页: [1] 2
查看完整版本: 求助STC8G1K08A的P30引脚如何点亮led