模块三 · 进阶与实战 / 第 17 课
17 · 可选延伸:C 用在单片机上时
学习目标
- 知道嵌入式 C 和桌面 C 的差别
- 了解 sbit / 中断 / 定时器是「应用概念」
- 明确:先把 C 学好,再碰硬件
先说清楚定位
这一课是延伸,不是主线
你已经具备的 C 能力(变量、循环、函数、指针、结构体)足以读懂大部分单片机例程。
下面只是「以后会见到什么」,不用现在背。和桌面 C 的主要差别
| 方面 | 桌面 C | 51 单片机 C |
|---|---|---|
| 入口 | main 返回后进程结束 | 常写 while(1) 一直跑 |
| 输出 | printf 到屏幕 | 常通过串口/LED/数码管 |
| 内存 | 很大,可 malloc | 很小,省着用 |
| 特殊语法 | 标准 C | Keil 有 sbit、interrupt 等扩展 |
例程长什么样(混个眼熟)
#include <reg52.h>
sbit LED = P1^0; /* 把名字 LED 绑到引脚 P1.0 */
void main(void)
{
while (1)
{
LED = 0; /* 点亮(视电路而定) */
/* 延时省略 */
LED = 1; /* 熄灭 */
}
}
建议路径
1C 学扎实(本课之前)
2再学数字电路基础
3Keil + 点灯
4定时器 / 中断 / 串口
不要跳过 C 直接背寄存器——那会越学越痛苦。
本课过关
必做单片机主程序最常见的结构是?
逐步解析
桌面程序跑完 main 的 return 就把进程结束了;设备(单片机/固件)上电后要一直工作,不能「跑完就退」。所以主流程放在 while(1) 里反复执行:扫描按键、刷新显示、处理状态。突发事件(定时到、收到串口字节)可交给中断服务函数,中断只做短平快的事(置标志、存数据),重逻辑仍回主循环做。这样既不丢事件,也不把主循环堵死。
必做作业
- 用自己的话总结:桌面 C 和单片机 C 最大的三点不同。
- 若以后要学 51,你现在最想先补哪一块 C?写下来。
先自己写完,再点开看解答
1:入口/是否一直跑、输出方式、资源与扩展语法。
学完去哪
主线已结束。可用工具箱与速查表复习,或做随机练习检验。