期末复习:51单片机核心知识点梳理

51单片机基础概念

51单片机属于Intel MCS-51系列,以8051为典型代表,采用哈佛结构(程序与数据存储分离)。核心特点包括:

  • 基本架构:8位CPU、4KB ROM(程序存储器)、128B RAM、32个I/O口、2个定时器/计数器、1个串行通信接口。
  • 时钟周期与机器周期:时钟周期为晶振频率倒数,12个时钟周期构成1个机器周期(传统8051)。
  • 引脚功能:P0口需外接上拉电阻,P3口复用为串口、中断等特殊功能。
存储器结构与寻址方式
  • 存储器分区
    • 程序存储器(ROM):存放代码,通过MOVC A, @A+DPTR读取。
    • 数据存储器(RAM):分为内部RAM(00H~7FH)、特殊功能寄存器(80H~FFH)。
  • 寻址方式:立即寻址(MOV A, #30H)、直接寻址(MOV A, 30H)、寄存器间接寻址(MOV A, @R0)。
中断系统
  • 中断源:外部中断(INT0/INT1)、定时器中断(TF0/TF1)、串口中断(TI/RI)。
  • 中断优先级:通过IP寄存器设置,默认优先级为INT0 > T0 > INT1 > T1 > 串口。
  • 中断响应流程:硬件压栈PC → 跳转至中断向量地址 → 执行中断服务程序(ISR)→ RETI返回。
定时器/计数器
  • 工作模式
    • 模式1(16位定时器):TH0TL0组成16位计数器,溢出触发TF0。
    • 模式2(8位自动重装):TL0计数,TH0存放重装值。
  • 计算公式:定时初值 = 65536 - (所需时间 × 晶振频率) / 12。
串行通信
  • 工作方式
    • 方式1(10位异步):1起始位 + 8数据位 + 1停止位,波特率由定时器T1控制。
    • 方式2(11位异步):增加第9位校验位。
  • 波特率计算:方式1波特率 = (2^SMOD × 定时器T1溢出率) / 32。
编程实例

按键控制LED闪烁(使用定时器中断):

#include <reg51.h>  
sbit LED = P1^0;  
void Timer0_Init() {  
    TMOD = 0x01;    // 定时器0模式1  
    TH0 = 0xFC;     // 1ms定时初值(12MHz晶振)  
    TL0 = 0x18;  
    EA = 1;         // 开总中断  
    ET0 = 1;        // 开定时器0中断  
    TR0 = 1;        // 启动定时器  
}  
void Timer0_ISR() interrupt 1 {  
    static unsigned int count = 0;  
    TH0 = 0xFC;     // 重装初值  
    TL0 = 0x18;  
    if (++count == 1000) {  // 1s到达  
        count = 0;  
        LED = ~LED; // LED状态翻转  
    }  
}  
void main() {  
    Timer0_Init();  
    while(1);  
}  
常见问题与调试技巧
  • 硬件问题:检查晶振是否起振、复位电路是否正常(高电平复位)。
  • 软件问题:使用Keil仿真观察寄存器值,注意堆栈溢出(尤其是中断嵌套时)。
  • 抗干扰设计:加入看门狗(WDT)、电源滤波电容。

通过掌握以上核心内容,结合实验调试,可系统性完成51单片机期末复习。建议重点练习中断、定时器及串口通信的编程应用。

更多推荐