51 单片机实战:点亮 LED、按键消抖与中断

51 单片机入门实战

一、最小系统

51 单片机最小系统 = 电源 + 晶振(12MHz)+ 复位电路,这是所有外设工作的前提。

二、点亮第一颗 LED

#include <reg52.h>
sbit LED = P1^0;   // 位定义

void main(void) {
  LED = 0;         // 低电平点亮
  while (1);
}

三、按键消抖

机械按键按下瞬间会抖动,软件上延时 10ms 再采样一次:

if (KEY == 0) {
  delay_ms(10);      // 消抖
  if (KEY == 0) LED = !LED;
  while (!KEY);      // 等待松手
}

四、中断:解放主循环

外部中断 INT0 触发后自动跳转中断服务函数,适合按键这类低频事件,避免主循环轮询浪费 CPU。

小结

裸机编程的精髓:轮询与中断,先会控制引脚,再慢慢啃外设。

评论(14)