课程摘要
这节课因考核程序暴露缺少完整编程思想,先补充单片机程序的基本结构:主函数中的 while(1) 让代码反复从上到下运行,并引入状态机概念,用变量 a % 2 的奇偶控制 P2 的两种状态。随后重点讲按键:按键一端接 I/O 口、另一端接地,按下读 0、松开读 1;不推荐与单片机操作功能冲突的按键,推荐使用 P3.2、P3.3。用 if(P3.2==0) 判断按下,配合 else 让 P2.0 输出 0 或 1,实现按下灯亮、松开灯灭。若要求按下再松开后执行,可用 while(P3.2==0); 等待松开;实物机械按键需在按下和松开时各延时 10-20 ms 消抖,仿真可省略。演示中按住不松会使程序卡在 while 中,松开后恢复。
要点
- 单片机程序主函数需用 while(1) 形成死循环,让代码反复从上到下运行。
- 代码较长时需引入状态机,用状态区分不同运行阶段,否则难以运行。
- 用变量 a % 2 的奇偶控制 P2:偶数进入状态一,奇数进入状态二。
- 按键一端接 I/O 口、另一端接地,松开读 1,按下读 0;推荐 P3.2、P3.3。
- 用 if(P3.2==0) 判断按下,else 判断松开,可控制 P2.0 输出。
- 让 P2.0=0 时 LED 亮,P2.0=1 时 LED 灭,实现按下亮松开灭。
- 按下再松开后执行可用 while(P3.2==0); 等待松开,期间程序卡住。
- 实物按键需消抖:按下和松开各延时 10-20 ms,演示可用 100 ms。
- 仿真中可省略消抖;按住不松会卡在 while,除电源键外无响应。
涉及知识点
- while(1):主函数中的死循环,使程序反复从上到下执行。
- 状态机:用状态区分程序运行阶段,适合较长单片机代码。
- P2:单片机端口,通过其电平控制外设状态。
- P3.2:推荐使用的独立按键端口,按下读 0。
- P3.3:推荐使用的独立按键端口,松开读 1。
- P2.0:控制 LED 的 I/O 口,输出 0 亮、1 灭。
- if:条件判断语句,条件成立时执行后续语句。
- else:与 if 配套,条件不成立时执行后续语句。
- while(P3.2==0);:等待按键松开的检测语句。
- 消抖:机械按键抖动需延时过滤,常用 10-20 ms。
- 排阻:连接 VCC 与 LED 的电阻网络。
- VCC:电源,LED 硬件连接的一端。