1. 51单片机入门基础回顾
在开始第二部分的51单片机学习之前,我们先快速回顾一下基础内容。51单片机作为最经典的8位微控制器,以其结构简单、资源丰富、学习资料众多而成为嵌入式入门的首选。在第一部分中,我们已经完成了开发环境搭建(通常是Keil C51或SDCC)、了解了单片机的基本结构(CPU、ROM、RAM、I/O、定时器、中断系统等),并实现了第一个LED闪烁程序。
提示:如果你还没有完成开发环境搭建,建议先回到第一部分内容,确保能够成功编译和下载最简单的测试程序。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 深入GPIO操作与寄存器配置
2.1 GPIO工作模式详解
51单片机的GPIO(通用输入输出)通常有四种工作模式:
- 准双向口模式(默认):可输入可输出,内部有弱上拉
- 推挽输出模式:强驱动能力,高低电平都能输出
- 开漏输出模式:只能拉低电平,需要外接上拉电阻
- 高阻输入模式:用于ADC输入或高阻态信号检测
以P1口为例,其模式配置主要通过P1M0和P1M1两个寄存器控制:
c复制// 设置P1.0为推挽输出,P1.1为开漏输出,其余保持准双向
P1M0 = 0x01; // 00000001
P1M1 = 0x02; // 00000010
2.2 端口操作进阶技巧
实际开发中,直接操作整个端口(如P1=0x55)虽然简单,但容易影响其他引脚状态。更安全的做法是使用位操作:
c复制sbit LED = P1^0; // 定义P1.0为LED控制引脚
void main() {
while(1) {
LED = ~LED; // 翻转LED状态
delay_ms(500);
}
}
注意:51单片机对端口的读-修改-写操作是原子性的,但在中断服务程序中修改端口时仍需考虑竞态问题。
3. 定时器系统深度解析
3.1 定时器工作模式配置
51单片机通常有2-3个定时器(Timer0/1/2),每种定时器都有多种工作模式:
- 模式0:13位定时器(THx+TLx的低5位)
- 模式1:16位定时器(最常用)
- 模式2:8位自动重装定时器
- 模式3:Timer0特有的双8位定时器
以Timer0模式1配置
