51单片机期末复习知识点总结

文章目录
  • 51单片机期末复习知识点总结
    • [0. 速记口诀](#0. 速记口诀)
    • [1. 基本概念](#1. 基本概念)
      • [1.1 时钟与时序](#1.1 时钟与时序)
      • [1.2 复位状态](#1.2 复位状态)
    • [2. 寄存器总结](#2. 寄存器总结)
      • [2.1 常用 SFR 一览](#2.1 常用 SFR 一览)
      • [2.2 TCON(88H)](#2.2 TCON(88H))
      • [2.3 TMOD(89H)](#2.3 TMOD(89H))
      • [2.4 IE(A8H)](#2.4 IE(A8H))
      • [2.5 IP(B8H)](#2.5 IP(B8H))
      • [2.6 SCON(98H)](#2.6 SCON(98H))
      • [2.7 PSW(D0H)](#2.7 PSW(D0H))
    • [3. 寻址方式(7种)](#3. 寻址方式(7种))
    • [4. 中断系统](#4. 中断系统)
      • [4.1 中断源与入口地址](#4.1 中断源与入口地址)
      • [4.2 外部中断](#4.2 外部中断)
      • [4.3 定时器中断](#4.3 定时器中断)
      • [4.4 串口中断](#4.4 串口中断)
    • [5. I/O 端口](#5. I/O 端口)
      • [5.1 四端口对比](#5.1 四端口对比)
      • [5.2 P3 口第二功能](#5.2 P3 口第二功能)
    • [6. 定时器/计数器](#6. 定时器/计数器)
      • [6.1 定时 vs 计数](#6.1 定时 vs 计数)
      • [6.2 四种工作方式](#6.2 四种工作方式)
      • [6.3 初值计算](#6.3 初值计算)
    • [7. 串行通信](#7. 串行通信)
      • [7.1 四种工作方式](#7.1 四种工作方式)
      • [7.2 方式1 波特率](#7.2 方式1 波特率)
    • [8. 存储器结构](#8. 存储器结构)
      • [8.1 三存储空间](#8.1 三存储空间)
      • [8.2 RAM 分区](#8.2 RAM 分区)
      • [8.3 SFR 特点](#8.3 SFR 特点)
    • [9. C51 编程要点](#9. C51 编程要点)
    • [10. 总线扩展与接口](#10. 总线扩展与接口)
    • [11. 常用程序模板](#11. 常用程序模板)
    • [12. 易混淆点对比](#12. 易混淆点对比)
    • [13. 期末必背 20 条](#13. 期末必背 20 条)

0. 速记口诀

寄存器功能口诀

TCON 管定时和中断,TMOD 管方式门控门。

IE 总开关 EA 加子开关,IP 管优先级高低分。

SCON 串口方式收发位,PSW 管标志和寄存器组。
中断优先级口诀(由高到低)

外0 → T0 → 外1 → T1 → 串口
P3 口第二功能

串行收发外中断,定时计数读写存。


1. 基本概念

1.1 时钟与时序

概念 含义 计算
振荡周期 晶振振荡一次的时间 T_osc = 1/fosc
时钟周期 振荡周期的 2 分频(状态周期) T = 2T_osc
机器周期 CPU 完成一个基本操作的时间 1 机器周期 = 12 振荡周期 = 6 时钟周期
指令周期 执行一条指令所需时间 1~4 个机器周期

重要结论fosc = 12 MHz 时,1 机器周期 = 1 μs

1.2 复位状态

  • 复位条件 :RST 引脚保持 2 个机器周期 以上的高电平
  • 复位入口地址:0000H
  • 复位后 SFR 初始值
寄存器 初值 寄存器 初值
PC 0000H ACC 00H
SP 07H(指向 08H) PSW 00H
P0-P3 FFH DPTR 0000H
TCON 00H TMOD 00H
SCON 00H IE 00H(中断全关)
IP 00H PCON 0xxx0000B

复位后各 I/O 口为高电平,SP=07H(栈底在 08H,使用前需重设 SP


2. 寄存器总结

2.1 常用 SFR 一览

SFR 类别 寄存器 功能 地址
定时器 TCON / TMOD 定时控制 / 模式 88H / 89H
定时器 TH0/TL0 / TH1/TL1 T0、T1 高/低字节 8CH/8AH / 8DH/8BH
中断 IE / IP 允许 / 优先级 A8H / B8H
串口 SCON / SBUF 控制 / 数据缓冲 98H / 99H
I/O P0 / P1 / P2 / P3 4 个 8 位并行口 80H / 90H / A0H / B0H
状态 PSW / A / B 标志 / 累加器 / 辅存 D0H / E0H / F0H
指针 SP / DPTR 栈指针 / 数据指针 81H / 82H-83H

2.2 TCON(88H)

名称 功能
D7 TF1 T1 溢出标志(硬件置 1,自动清 0)
D6 TR1 T1 运行控制(软件置位)
D5 TF0 T0 溢出标志
D4 TR0 T0 运行控制
D3 IE1 外中断 1 请求标志
D2 IT1 外中断 1 触发方式(0=低电平,1=下降沿)
D1 IE0 外中断 0 请求标志
D0 IT0 外中断 0 触发方式

⚠️ TF0/TF1、IE0/IE1 响应中断后硬件自动清 0 ;TI/RI 必须软件清 0

2.3 TMOD(89H,高 4 位 T1,低 4 位 T0)

D7/D3 D6/D2 D5/D4 / D1/D0 含义
GATE C/T M1 M0 见下表
M1 M0 方式 功能
0 0 方式 0 13 位定时器(兼容 8048)
0 1 方式 1 16 位定时器(最常用
1 0 方式 2 8 位自动重装(波特率专用
1 1 方式 3 T0 拆为两个 8 位定时器

常用 TMOD 值

TMOD 含义
0x01 T0 方式 1(16 位定时)
0x02 T0 方式 2(8 位自动重装)
0x10 T1 方式 1
0x20 T1 方式 2(波特率发生器)

2.4 IE(A8H)

名称 功能
D7 EA 总中断允许
D6 - 保留
D5 ET2 T2 中断允许(8052 才有)
D4 ES 串口中断允许
D3 ET1 T1 中断允许
D2 EX1 外中断 1 允许
D1 ET0 T0 中断允许
D0 EX0 外中断 0 允许

中断开放条件EA = 1 对应中断允许位 = 1

2.5 IP(B8H)

名称 功能
D4 PS 串口优先级
D3 PT1 T1 优先级
D2 PX1 外中断 1 优先级
D1 PT0 T0 优先级
D0 PX0 外中断 0 优先级

1=高优先级;同优先级按自然顺序:外0 > T0 > 外1 > T1 > 串口

2.6 SCON(98H)

名称 功能
D7/D6 SM0/SM1 工作方式选择
D5 SM2 多机通信控制
D4 REN 允许接收
D3/D2 TB8/RB8 方式 2/3 第 9 位数据
D1 TI 发送中断标志(软件清 0
D0 RI 接收中断标志(软件清 0
SM0 SM1 方式 功能 波特率
0 0 方式 0 8 位同步移位 fosc/12
0 1 方式 1 8 位 UART 可变(T1 溢出率)
1 0 方式 2 9 位 UART fosc/32 或 fosc/64
1 1 方式 3 9 位 UART 可变

2.7 PSW(D0H)

名称 功能
D7 CY 进位标志
D6 AC 辅助进位(BCD 调整用)
D5 F0 用户自定义标志
D4/D3 RS1/RS0 工作寄存器区选择
D2 OV 溢出标志
D0 P 奇偶标志(A 中 1 的个数为奇→P=0,偶→P=1)

工作寄存器区

RS1 RS0 地址
0 0 0 区 00H-07H
0 1 1 区 08H-0FH
1 0 2 区 10H-17H
1 1 3 区 18H-1FH

3. 寻址方式(7 种)

序号 寻址方式 示例 说明
立即寻址 MOV A, #30H 操作数在指令中
直接寻址 MOV A, 30H 操作数在 RAM/SFR 地址中
寄存器寻址 MOV A, R0 操作数在 R0-R7 中
寄存器间接寻址 MOV A, @R0 操作数在 @R0/@R1/@DPTR 所指单元
变址寻址 MOVC A, @A+DPTR 常用于查表(DPTR 或 PC 作基址)
相对寻址 SJMP rel 以 PC 当前值为基准的跳转
位寻址 ANL C, P1.0 对可位寻址位操作

可位寻址区 :RAM 20H-2FH(128 位)+ SFR 字节地址能被 8 整除的寄存器


4. 中断系统

4.1 中断源与入口地址

中断源 符号 中断号 入口地址 自然优先级
外部中断 0 INT0(P3.2) 0 0003H 最高
定时器 0 T0 1 000BH
外部中断 1 INT1(P3.3) 2 0013H
定时器 1 T1 3 001BH
串行口 TI/RI 4 0023H 最低

4.2 外部中断

  • 触发方式由 IT0/IT1 决定:
    • ITx = 0低电平触发(低电平期间须保持)
    • ITx = 1下降沿触发(更常用)
  • 中断请求标志:IE0/IE1(TCON 中)
  • 响应条件:EA=1EXx=1、无同级/高优先级中断

4.3 定时器中断

  • 请求标志:TF0/TF1(溢出时硬件置 1)
  • 初始化步骤:TMOD → 初值 → ETx → EA → TRx

4.4 串口中断

  • 请求标志:TI(发送完成)、RI(接收完成)
  • ⚠️ TI 和 RI 必须软件清 0(与外中断/TF 不同!)
  • 初始化步骤:SCON → PCON(SMOD) → TMOD → TH1 → ES → EA → TR1

5. I/O 端口

5.1 四端口对比

端口 地址 类型 上拉电阻 第二功能 驱动能力
P0 80H 漏极开路 必须外接 数据/地址低 8 位复用 8 个 TTL
P1 90H 准双向 内部有 4 个 TTL
P2 A0H 准双向 内部有 高 8 位地址 4 个 TTL
P3 B0H 准双向 内部有 见下表 4 个 TTL

⚠️ P0 口唯一必须外接上拉电阻(4.7kΩ~10kΩ)

5.2 P3 口第二功能

引脚 第二功能 引脚 第二功能
P3.0 RXD(串行输入) P3.4 T0(定时器 0 外部输入)
P3.1 TXD(串行输出) P3.5 T1(定时器 1 外部输入)
P3.2 INT0(外中断 0) P3.6 WR(外部写)
P3.3 INT1(外中断 1) P3.7 RD(外部读)

6. 定时器/计数器

6.1 定时 vs 计数

模式 信号源 C/T 位 典型用途
定时 内部机器周期 (fosc/12) C/T = 0 定时、波特率
计数 外部脉冲 (T0/T1 引脚) C/T = 1 计外部事件

6.2 四种工作方式

方式 位数 初值范围 特点
0 13 位 0-8191 兼容 8048,少用
1 16 位 0-65535 最常用,需手动重装初值
2 8 位自动重装 0-255 波特率发生器专用
3 两个 8 位 0-255 仅 T0 有效,TL0/TH0 独立

6.3 初值计算

定时时间公式

  • 方式 1:T = (65536 - X) × 12 / foscX = 65536 - T × fosc/12
  • 方式 2:T = (256 - X) × 12 / foscX = 256 - T × fosc/12

经典例题(fosc = 12 MHz):定时 50 ms

  • X = 65536 - 50000 = 15536 = 3CB0H
  • TH0 = 3CHTL0 = B0H

7. 串行通信

7.1 四种工作方式

方式 帧格式 用途 波特率
0 8 位数据 扩展 I/O(74HC164/165) fosc/12
1 10 位(1 起始+8 数据+1 停止) 异步通信(最常用) T1 溢出率
2 11 位(含可编程第 9 位) 多机通信 fosc/32 或 64
3 11 位 多机通信 T1 溢出率

7.2 方式 1 波特率

公式

复制代码
波特率 = (2^SMOD / 32) × (fosc / (12 × (256 - X)))

常用初值表(fosc = 11.0592 MHz)

波特率 SMOD TH1 初值
2400 0 F4H
4800 0 FAH
9600 0 FDH
19200 1 FDH

11.0592 MHz 的好处:能整除常用波特率,误差为 0


8. 存储器结构

8.1 三存储空间

空间 容量 地址 用途
程序存储器 ROM 4KB(8051) 0000H-0FFFH 存程序代码、表格常量
内部 RAM 128B 00H-7FH 工作寄存器、位寻址、用户 RAM
外部 RAM 64KB 0000H-FFFFH 外扩数据存储

特殊地址

  • 0000H:复位入口
  • 0003H-002AH:5 个中断入口(每个占 8 字节)

8.2 RAM 分区

地址范围 功能
00H-1FH 工作寄存器区(4 组 × 8 字节)
20H-2FH 位寻址区(16 字节 = 128 位,对应位地址 00H-7FH)
30H-7FH 用户数据缓冲区
80H-FFH SFR 区(仅 21 个字节有定义)

8.3 SFR 特点

  • 地址范围:80H-FFH
  • 21 个字节有定义(8051)
  • 可位寻址的 SFR:字节地址能被 8 整除(A、B、PSW、IP、P3、IE、SCON、TCON、P0、P1、P2)

9. C51 编程要点

9.1 C51 扩充数据类型

类型 长度 说明
bit 1 位 位变量(0 或 1)
sfr 8 位 特殊功能寄存器声明
sfr16 16 位 16 位 SFR(如 DPTR)
sbit 1 位 特殊位声明(可寻址位)
idata 8 位 间接寻址内部 RAM
pdata 8 位 分页外部 RAM(MOVX @R0)
xdata 16 位 外部 RAM(MOVX @DPTR)
code 16 位 程序存储器(ROM,查表用)

9.2 常用声明示例

复制代码
sfr  P0  = 0x80;
sfr  SCON = 0x98;
sbit LED = P1^0;           // P1.0
sbit TI  = SCON^1;         // SCON.1

unsigned char code table[] = {0x3F, 0x06, 0x5B, 0x4F};  // 存 ROM
unsigned char xdata buf[100];                            // 存外 RAM

9.3 中断函数

复制代码
void Timer0_ISR(void) interrupt 1 {  // 1 = 中断号
    // 函数体
}
中断号 中断源 函数名(自定义)
0 外中断 0 interrupt 0
1 定时器 0 interrupt 1
2 外中断 1 interrupt 2
3 定时器 1 interrupt 3
4 串口 interrupt 4

中断函数默认使用寄存器组 3 (如需切换在 using n


10. 总线扩展与接口

10.1 系统扩展三总线

总线 来源 作用
地址总线 AB 由 P0(低 8 位)+ P2(高 8 位)组成 16 位,寻址 64KB
数据总线 DB P0 口 8 位双向
控制总线 CB RD(P3.7)、WR(P3.6)、ALE、PSEN 读/写控制

ALE:地址锁存使能(P0 低 8 位地址需经 74HC373 锁存)

10.2 扩展外设时 P0/P2 的角色

  • 扩展 ROM(如 2764):P0 分时复用低 8 位地址/数据,P2 输出高 8 位地址,PSEN 选通
  • 扩展 RAM(如 6264):同上,但用 RD/WR 选通
  • P2 口 在扩展时一般作为高 8 位地址口,不再作普通 I/O

10.3 常用接口芯片

  • 74HC373:地址锁存器(接 ALE)
  • 74HC138:3-8 译码器(片选)
  • 74HC164/165:串入并出/并入串出(接串口方式 0)
  • 8255A:可编程并行 I/O 扩展
  • 8155/8156:RAM+IO+定时器

11. 常用程序模板

11.1 定时器初始化

复制代码
void Timer0_Init(void) {
    TMOD &= 0xF0;      // 清 T0 控制位
    TMOD |= 0x01;      // T0 方式 1
    TH0 = 0x3C;        // 50ms @ 12MHz
    TL0 = 0xB0;
    ET0 = 1;           // 允许 T0 中断
    EA  = 1;           // 开总中断
    TR0 = 1;           // 启动 T0
}

11.2 串口初始化(9600bps@11.0592MHz

复制代码
void UART_Init(void) {
    SCON = 0x50;       // 方式 1,REN=1
    PCON = 0x00;       // SMOD = 0
    TMOD &= 0x0F;
    TMOD |= 0x20;      // T1 方式 2
    TH1 = 0xFD;        // 9600bps
    TL1 = 0xFD;
    ES = 1; EA = 1;    // 开串口中断
    TR1 = 1;           // 启动 T1
}

11.3 中断服务程序

复制代码
void Timer0_ISR(void) interrupt 1 {
    TH0 = 0x3C;        // 方式 1 必须手动重装
    TL0 = 0xB0;
    // 用户逻辑
}

void UART_ISR(void) interrupt 4 {
    if (RI) { RI = 0;          /* 处理接收 */ }
    if (TI) { TI = 0;          /* 处理发送 */ }
}

11.4 LED 闪烁 / 按键扫描关键代码

复制代码
// LED 闪烁(查询法)
P1 = 0xFE;        // P1.0 亮
delay_ms(500);
P1 = 0xFF;        // 全灭

// 按键去抖
if (KEY == 0) {
    delay_ms(10);
    if (KEY == 0) { /* 确认按下 */ }
    while (KEY == 0);   // 等待释放
}

12. 易混淆点对比

易错点 正确 错误理解
SP 复位值 07H(栈底 08H) 00H
TI/RI 清零 必须软件清 0 认为硬件自动清 0
P0 口上拉 必须外接 内部有上拉
方式 1 重装 必须手动重装初值 自动重装
中断入口地址 0003H-002AH(8 字节间隔 以为 64K 任意
定时器初值单位 机器周期数(μs 级) 振荡周期数
方式 2 是几位的 8 位自动重装 16 位
扩展 RAM 用什么指令 MOVX MOV 或 MOVC
查表用 MOVC A,@A+DPTR MOVX
中断函数关键字 interrupt n void timer0() interrupt 0
晶振 11.0592MHz 原因 整除标准波特率误差为 0 以为只是常用值

13. 期末必背 20 条

  1. 51 单片机是 8 位 机,16 位地址总线
  2. 1 机器周期 = 12 振荡周期
  3. 复位后 PC=0000H,SP=07H,P0~P3=FFH
  4. P0 必须外接上拉电阻;P1/P2/P3 内部有上拉
  5. TMOD 89H、TCON 88H、IE A8H、IP B8H、SCON 98H、PSW D0H
  6. 中断入口:0003H 000BH 0013H 001BH 0023H
  7. 自然优先级:外0 > T0 > 外1 > T1 > 串口
  8. 定时器初值公式:X = 2^n - T × fosc / 12(n=13/16/8)
  9. 方式 1 是 16 位,需手动重装
  10. 方式 2 是 8 位自动重装 ,专用于波特率
  11. 串口方式 1 是 10 位帧(1 起始+8 数据+1 停止)
  12. TI、RI 必须软件清 0(其他中断标志硬件自动清 0)
  13. 位寻址区:20H~2FH(共 128 位)
  14. SFR 地址范围:80H~FFH,可位寻址须被 8 整除
  15. 工作寄存器 4 组,由 PSW 的 RS1、RS0
  16. C51 查表关键字 code,中断关键字 interrupt n
  17. 扩展总线时 P0 分时复用地址/数据,经 74HC373 锁存
  18. 读外 RAM 用 RD(P3.7) ,写外 RAM 用 WR(P3.6)
  19. 11.0592MHz 晶振 → 9600bps → TH1=FDH
  20. C51 中断函数:void Func(void) interrupt n [using m]

复习建议:先背会「速记口诀」和「必背 20 条」,再做 2~3 套历年真题即可覆盖 90% 考点。

相关推荐
榴莲llll3 小时前
应用于计时器/微波炉等产品的高亮LED数显驱动VK16K33C 数码管屏显驱动芯片
单片机
华一精品Adreamer4 小时前
T606 vs 骁龙662/RK3566:主流安卓+4G定制平板芯片横向测评指南
单片机
Zyed4 小时前
[STM32]Day9-Part1USART+串口接收+串口收发
stm32·单片机·嵌入式硬件
小慧10246 小时前
手动建立工程模板
stm32·单片机
嵌入式ZYXC7 小时前
STM32烧录一次后无法再次烧录的两种原因
stm32·单片机·嵌入式硬件
踏着七彩祥云的小丑8 小时前
嵌入式测试学习第33 天:压力测试、反复开关机、反复插拔接口测试
单片机·嵌入式硬件·学习
布子麟9 小时前
NodeMcu(ESP8266)之更新固件
单片机·物联网·iot
开发笔记-阿牛9 小时前
CK6159A 可靠性测评:芯片工艺、环境测试与量产稳定性分析
stm32·单片机·嵌入式硬件
国科安芯9 小时前
商业航天通信载荷数字处理单元供电架构研究——基于ASP7A84AS的高精度低压差线性稳压器技术分析
前端·单片机·嵌入式硬件·fpga开发·架构·安全性测试