C51 代码解释与教学可视化
将用户提交的完整 C51 源程序转化为面向高职《单片机应用技术》初学者的教学材料。源代码完整性与可读性高于图形美观;依据实际语句解释行为,不把注释、文件名或惯用电路当作事实。
输入与交付范围
- 默认交付中文 PNG 信息图,1814×867 像素、横向、白底,适合插在 PPT 标题下方。默认尝试 1 张,按可读性增加分页;用户明确指定张数或布局时优先遵循。
- 用户只要解析、提示词或规划时,仅完成该范围。制作本技能本身不意味着执行生图;没有实际代码时,不把示例或占位文字当成程序。
- 读取完整代码、程序名(如有)、图片数量、布局和已知电路条件。缺少代码必须索取代码;其他可合理推定的参数直接说明默认值并推进。未知有效电平可以带显式假设分析,也可只展示端口位状态。
- 文件名以用户给定或源代码明确标注为准;无法识别时使用“未命名程序.c”并说明是显示名,不冒称原文件名。
- 输出默认写入当前任务的独立结果目录,不向技能目录写用户作业。
源码不可变基准
- 将源文件按原字节保存。聊天代码则只提取代码围栏内部的原文,保留空行、缩进和末尾换行情况,保存后建立基准。不同编码必须显式解码,禁止用替换字符吞掉错误。
- 记录文件名、编码、SHA-256、物理行数、各行内容和括号字符数量。括号数量包含注释/字符串时只作字符审计,不等于语法检查。
- 不改写标识符、常量、注释、运算符、括号或重复语句,不优化代码、不自动补括号。不在源码区域加入省略号。发现错误在图外说明。
- 默认保留原始行序及缩进。行号、语法着色属于显示层,不能写回源文本。Tab 可按明确的制表位展开显示,但保留原字符供核验。
- 分页或代码双栏必须覆盖源文件每一行且仅一次,按原始顺序连续编号。代码片段在讲解区再次引用不算源码分页重复,但须明确区分。
依据程序建立教学解释
分析时读取 references/c51-analysis.md,按实际程序梳理:
- 输入输出引脚、类型、变量初值与函数职责。
- 初始化、主循环、条件分支、阻塞循环和中断之间的真实关系。
- 表达式求值顺序、循环次数、移位/循环移位、端口数值和状态变化。
- 按键检测、消抖、再次确认、等待释放是否确实存在,以及一次按下是否可能重复触发。
- 电路已知事实、必要假设、无法由源码独自确定的部分。
每条关键解释使用“从源码直接引用的语句 → 语句功能 → 实际效果”。只选与本页相关的 3~6 个知识点,功能概括通常 2~4 条。不要为凑数量增加源码不存在的知识点。
布局与生成
生成图片前读取 references/rendering.md,其中有渲染工具命令、教学 JSON 格式和分页规则。
- 白底、细边框、圆角卡片,四周安全边距 20~30px。代码蓝色主题;关键说明绿色;运行效果橙色;流程青色。没有历史图片时按本规范制作,不声称已匹配未见过的历史作品。
- 不添加额外课程总标题。代码卡片标题显示实际文件名,右侧标注“C语言(51单片机)”及页码。
- 左侧代码区通常占 55%~65%,使用等宽代码字体和支持中文的回退字体,注释绿、关键字蓝/紫、数值橙。代码与注释不得溢出、裁切或通过极小字号硬塞。
- 右侧按内容放程序功能、关键语句、硬件效果、真实流程;多页时分配到关联页面,不要求每页重复全部模块。代码过长可用代码专页加解析专页。
- 优先运行本技能的
scripts/render_infographic.py确定性渲染完整 PNG。它负责源码逐行读取、分页、行号、高亮、教学卡片、端口灯珠和带连接线的流程节点;教学内容由你分析后写入 JSON,工具不推断语义。 - 脚本因行宽、文字容量或布局约束拒绝时,调整分页或布局,必要时用程序化 SVG/HTML 等工具实现同样的源码基准与覆盖核验。不要截断或悄悄缩字绕过失败。
- 普通卡片、引脚、灯珠、数码管、箭头应程序化绘制,无需图像模型。仅在用户希望或内容确实需要位图插画时使用可用 imagegen 技能;它只能负责非代码素材。不能让图像模型重画源码后宣称准确。
- 用户硬性指定的张数无法同时满足完整性和可读性时,说明需要的页数和原因,提出明确排版选择;不擅自删减源码。自动张数模式直接采用清晰可读的分页。
核验与交付
- 重建所有源码页的文本,逐字符对比基准,检查连续行号、无重无漏、原始结束括号和末尾换行。保留结果清单。
- 检查程序解释、分支条件、按键行为和硬件状态;LED 电平、位序及方向必须与已知接线或标出的假设一致。
- 逐张打开最终 PNG,检查代码、中文注释、流程节点和讲解文字是否清楚,无重叠、缺字、裁切或错位;确认每张实际尺寸。
- 区分核验范围:源码比对通过证明排版输入一致;最终像素可读性还需视觉检查。不把源码哈希或 PNG 哈希当作 OCR 或语义正确性证明。
- 交付图片及简短说明:张数、每页源码行号与主要讲解内容、实际尺寸、完成的核验范围、发现的源程序问题和硬件假设。提供源码基准与
manifest.json链接,便于复核。 - 若只得到提示词、代码面板或未核验草图,明确标示交付状态,不称为完整教学信息图。工具受限时说明实际限制及已完成内容。