AI时代,我写了一段全中文的程序:

请写一个STC8H8K单片机的程序,要求连接在P0端口的八个LED灯左边四个与右边四个交替闪烁

然后豆包AI 给了我下面的结果。

我想问大家三个问题:

(1)上面那段话算不算是一个全中文的C语言程序?如果不算,那么AI时代的“要求连接在P0端口的八个LED灯左边四个与右边四个交替闪烁”的全中文的C语言程序?

(2)豆包AI靠不靠谱,下面它给的程序能不能点亮LED灯?

(3)如果(1)的答案是“算”,(2)的答案是“能点亮”,那么如果让你写程序,你是愿意写下面的“正宗C语言程序”,还是愿意写上面的那句中文话“请写一个STC8H8K单片机的程序,要求连接在P0端口的八个LED灯左边四个与右边四个交替闪烁”?

下面是豆包AI写的程序:

STC8H8K64S4 单片机 P0 口左右 4 个 LED 交替闪烁程序

我给你写一个可直接编译、下载运行的标准程序,适配 STC8H8K 系列单片机,P0 口接 8 个 LED,左边 4 个 / 右边 4 个交替闪烁

硬件说明

  • 单片机:STC8H8K64S4
  • LED 连接:8 个 LED 负极接 P0.0~P0.7,正极通过 220Ω 电阻接 VCC(共阳极接法,输出低电平 LED 亮
  • 晶振:默认 11.0592MHz(通用配置)

完整程序代码

c

运行

// STC8H8K 头文件
#include <STC8H.H>  

// 简单延时函数(11.0592MHz 下,约 500ms)
void Delay_ms(void)
{
    unsigned int i, j;
    i = 50000;
    j = 20;
    do
    {
        while (--j);
    } while (--i);
}

void main(void)
{
    // P0 口设置为准双向口(默认模式,可点亮 LED)
    P0M0 = 0x00;
    P0M1 = 0x00;

    while(1)  // 无限循环
    {
        // ======================
        // 左边4个亮(P0.0~P0.3),右边4个灭
        // 二进制:1111 0000 → 十六进制:0xF0
        // ======================
        P0 = 0xF0;
        Delay_ms();  // 延时保持

        // ======================
        // 右边4个亮(P0.4~P0.7),左边4个灭
        // 二进制:0000 1111 → 十六进制:0x0F
        // ======================
        P0 = 0x0F;
        Delay_ms();  // 延时保持
    }
}

程序说明

  1. IO 口模式

    • STC8H 系列需要配置 IO 口模式,P0M0=0x00; P0M1=0x00; 把 P0 设置为准双向口,可以直接驱动 LED。
  2. 亮灯逻辑(共阳极)

    • 输出 0 → LED 亮
    • 输出 1 → LED 灭
    • P0 = 0xF01111 0000左 4 亮,右 4 灭
    • P0 = 0x0F0000 1111右 4 亮,左 4 灭
  3. 延时函数

    • 11.0592MHz 下大约延时 500ms,你可以修改数值调整闪烁速度。

如果你是共阴极接法(LED 正极接 P0,负极接地)

只需要把赋值改成:

c

运行

P0 = 0x0F;  // 左4亮
P0 = 0xF0;  // 右4亮

总结

  • 代码直接可用,适配 STC8H8K 单片机 + P0 口 8 个 LED
  • 左 4 个 / 右 4 个交替闪烁,间隔约 500ms
  • 支持共阳极 / 共阴极两种接法,只需修改两行赋值即可切换
  • IO 口已正确配置,下载后立刻运行

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐