三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

全中文编程:豆包 AI居然会写单片机程序

全中文编程:豆包 AI居然会写单片机程序

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 口已正确配置,下载后立刻运行
← 返回列表