内核参考

51内核参考手册

系统梳理 8051 内核架构、存储器组织、指令系统、中断系统、定时器/计数器与串行接口,构建完整的单片机知识体系

一、8051 单片机概述

理解 8051 的历史地位与核心特征

8051 是 Intel 公司于 1981 年推出的 8 位单片机,是现代 MCU 发展的重要里程碑。凭借其结构简单、资源适中、易于教学、生态丰富等特点,8051 内核及其兼容型号(如 STC89C52RC、AT89S52 等)至今仍是中职、高校单片机教学的首选平台。

8 位 CPU

数据总线宽度 8 位,ALU 一次可处理 1 字节数据,简单直观,适合初学者建立计算机底层认知。

哈佛结构

程序存储器与数据存储器分开编址,可扩展片内/片外 ROM 与 RAM,寻址空间清晰。

片上集成

集成 CPU、RAM、ROM、定时器、中断控制器、串口、I/O 口于单一芯片,构成完整最小系统。

二、内核架构与引脚功能

掌握 8051 内部功能模块与外部引脚

8051 内部由 CPU 核心、振荡器与时序电路、程序存储器接口、数据存储器接口、中断系统、定时器/计数器、串行口及 4 组并行 I/O 口组成。典型封装为 40 引脚 DIP,常见引脚功能如下:

引脚类别 引脚名称 功能说明
电源VCC / GND+5V 电源与接地,建议就近接 0.1μF 退耦电容
时钟XTAL1 / XTAL2外接晶振输入,本课程统一采用 12MHz
复位RST高电平有效,持续 2 个机器周期以上完成复位
I/O 口P0 ~ P332 根可编程 I/O 线,P3 口具有第二功能
控制ALE / PSEN / EA地址锁存、外部程序存储器读选通、内外 ROM 选择

P3 口第二功能一览

P3.0RXD 串行接收
P3.1TXD 串行发送
P3.2INT0 外部中断 0
P3.3INT1 外部中断 1
P3.4T0 定时器 0 外部输入
P3.5T1 定时器 1 外部输入
P3.6WR 外部数据写选通
P3.7RD 外部数据读选通

三、存储器组织

程序存储器与数据存储器独立编址

8051 采用哈佛结构,程序存储器(ROM/Flash)与数据存储器(RAM)拥有各自独立的 64KB 寻址空间。理解存储器映射是掌握汇编编程的基础。

程序存储器

  • 地址范围:0000H ~ FFFFH(最大 64KB)
  • 0000H:复位后 PC 初始值,必须存放跳转指令
  • 0003H ~ 002BH:中断向量表,固定入口地址
  • 片内 ROM:由 EA 引脚决定是否使用片内程序存储器

数据存储器

  • 片内 RAM:00H ~ 7FH(128B),部分型号扩展至 256B
  • 工作寄存器区:00H ~ 1FH,分 4 组 R0~R7
  • 位寻址区:20H ~ 2FH,共 128 个可位寻址位
  • 通用 RAM:30H ~ 7FH,用户变量与堆栈区
地址区间用途说明
00H ~ 1FH工作寄存器组4 组 R0~R7,由 PSW 的 RS0、RS1 选择
20H ~ 2FH位寻址区位地址 00H~7FH,支持位操作指令
30H ~ 7FH通用 RAM用户数据、中间变量、堆栈
80H ~ FFHSFR 区特殊功能寄存器,离散分布

四、特殊功能寄存器(SFR)

控制单片机各功能模块的核心寄存器

SFR 位于片内 RAM 的 80H~FFH 区间,用于配置和控制 CPU、定时器、中断、串口、I/O 等模块。绝大多数 SFR 支持字节寻址,部分还支持位寻址。

符号地址名称主要功能
ACCE0H累加器运算核心,多数指令的操作数与结果存放处
BF0HB 寄存器乘除法辅助寄存器,也可作通用寄存器
PSWD0H程序状态字保存 CY、AC、OV、P 等标志位及寄存器组选择
SP81H堆栈指针指向堆栈顶部,复位初值 07H
DPTR82H/83H数据指针DPL/DPH 组成 16 位指针,用于访问片外存储器
P0~P380H/B0H
A0H/90H
并行端口4 组 8 位 I/O 口锁存器
TCON88H定时器控制定时器运行、溢出标志、外部中断触发方式
TMOD89H定时器模式设置定时器/计数器工作模式
TL0/TH0
TL1/TH1
8AH/8CH
8BH/8DH
定时器初值定时器 0/1 的 16 位计数初值寄存器
SCON98H串口控制串行口工作方式、接收发送标志
SBUF99H串口缓冲读 SBUF 为接收,写 SBUF 为发送
IEA8H中断允许总中断及各类中断源使能控制
IPB8H中断优先级设置中断源为高优先级或低优先级
PCON87H电源控制波特率倍增、空闲/掉电模式控制

PSW 程序状态字各位含义

CY (PSW.7)

进位/借位标志

AC (PSW.6)

辅助进位标志

F0 (PSW.5)

用户标志

RS1/RS0

寄存器组选择

OV (PSW.2)

溢出标志

— (PSW.1)

保留位

P (PSW.0)

累加器奇偶标志

五、寻址方式

8051 支持的七种操作数寻址方式

寻址方式描述示例
立即寻址操作数直接包含在指令中MOV A, #55H
直接寻址操作数为 8 位直接地址MOV A, 30H
寄存器寻址操作数为 R0~R7 或 A、B、DPTRMOV A, R0
寄存器间接寻址以 R0/R1/DPTR 内容为地址MOV A, @R0
变址寻址基址寄存器 DPTR/PC 加 ACC 偏移MOVC A, @A+DPTR
相对寻址以当前 PC 值为基址加 8 位偏移SJMP LOOP
位寻址对可位寻址区域单独操作SETB P1.0
; 寻址方式示例
MOV A, #0FFH     ; 立即寻址,A = 0FFH
MOV A, 30H        ; 直接寻址,A = (30H)
MOV A, R0         ; 寄存器寻址
MOV A, @R0        ; 寄存器间接寻址,A = ((R0))
MOVC A, @A+DPTR  ; 变址寻址,查表
SETB P1.0         ; 位寻址,置位 P1.0

六、指令系统

按功能分类的 8051 指令集

8051 指令系统共 111 条指令,按功能可分为数据传送、算术运算、逻辑运算、控制转移和位操作五大类。指令长度 1~3 字节,执行周期 1~4 个机器周期。

数据传送类

MOV、MOVX、MOVC、PUSH、POP、XCH、XCHD 等,负责在寄存器、RAM、SFR、片外存储器之间搬运数据。

MOV A, #data / MOV direct, A / MOVX A, @DPTR

算术运算类

ADD、ADDC、SUBB、INC、DEC、MUL、DIV、DA 等,影响 PSW 标志位。

ADD A, R0 / INC DPTR / MUL AB / DA A

逻辑运算类

ANL、ORL、XRL、CLR、CPL、RL、RLC、RR、RRC、SWAP 等,用于位运算与移位。

ANL A, #0FH / RL A / SWAP A

控制转移类

AJMP、LJMP、SJMP、JZ/JNZ、CJNE、DJNZ、ACALL、LCALL、RET、RETI 等。

SJMP $ / CJNE A, #data, rel / LCALL DELAY

位操作类指令

8051 支持对位寻址区的独立操作,这是其区别于普通 8 位机的重要特性。

SETB bit

置 1

CLR bit

清 0

CPL bit

取反

JB/JNB bit, rel

位为 1/0 跳转

JBC bit, rel

为 1 跳转并清 0

ANL C, bit

位与进位

ORL C, bit

位或进位

MOV C, bit

位传进位

七、中断系统

5 个中断源、2 级优先级、固定入口地址

8051 具有 5 个中断源:2 个外部中断(INT0、INT1)、2 个定时器溢出中断(TF0、TF1)和 1 个串行口中断(RI/TI)。中断系统通过 IE、IP、TCON、SCON 等寄存器进行管理。

中断源入口地址触发条件标志位
外部中断 00003HINT0 引脚低电平或下降沿IE0
定时器 0000BHT0 计数溢出TF0
外部中断 10013HINT1 引脚低电平或下降沿IE1
定时器 1001BHT1 计数溢出TF1
串行口0023H接收完成 RI 或发送完成 TIRI / TI

IE 中断允许寄存器

EA — 总中断允许位,EA=1 才允许各中断源单独使能

ES — 串行口中断允许

ET1 / ET0 — 定时器 1/0 中断允许

EX1 / EX0 — 外部中断 1/0 允许

IP 中断优先级寄存器

PS / PT1 / PT0 / PX1 / PX0

置 1 为高优先级,清 0 为低优先级。同一优先级内按自然优先级排队,外部中断 0 最高,串行口最低。

八、定时器/计数器

T0/T1 的四种工作模式与初值计算

8051 内部集成两个 16 位定时器/计数器 T0 和 T1,既可对内部机器周期计数(定时模式),也可对外部脉冲计数(计数模式)。通过 TMOD 设置工作方式,通过 TCON 控制启停与溢出标志。

M1 M0模式说明
0 0模式 013 位定时器,THx 8 位 + TLx 低 5 位
0 1模式 116 位定时器,最常用
1 0模式 28 位自动重装,TLx 计数,THx 保存初值
1 1模式 3T0 拆成两个 8 位定时器,T1 作波特率发生器

定时初值计算公式

; 模式 1(16 位)定时初值计算
; 初值 X = 65536 - (定时时间 × 晶振频率) / 12
; 例:晶振 12MHz,定时 1ms
; X = 65536 - (0.001 × 12000000) / 12 = 64536 = 0FC18H

TMOD 的 GATE 位决定定时器是否受外部中断引脚控制;C/T 位选择定时(0)或计数(1)模式。

九、串行通信接口

UART 全双工异步串行通信

8051 内置一个全双工异步串行口,通过 P3.0(RXD)和 P3.1(TXD)进行数据收发。可工作于 4 种方式,最常用的是方式 1(10 位异步)和方式 3(11 位异步,带第 9 位校验)。

SCON 寄存器

SM0/SM1 — 工作方式选择

SM2 — 多机通信控制位

REN — 接收允许位

TB8 / RB8 — 发送/接收第 9 位数据

TI / RI — 发送/接收中断标志

波特率设置

方式 0:固定 fosc/12

方式 2:fosc × 2^SMOD / 64

方式 1/3:由 T1 溢出率决定

Baud = (2^SMOD / 32) × (T1 溢出率)

; 串口初始化示例:方式 1,波特率 2400,晶振 12MHz
MOV SCON, #50H   ; 方式 1,允许接收
MOV TMOD, #20H   ; T1 方式 2 自动重装
MOV TH1, #0F3H   ; 2400bps 初值(误差约 0.16%)
MOV TL1, #0F3H
SETB TR1           ; 启动 T1

十、并行 I/O 端口

P0 ~ P3 口的结构与驱动特性

8051 提供 4 组 8 位双向 I/O 口,每组端口均由锁存器、输出驱动器和输入缓冲器组成。不同端口因第二功能、内部上拉结构差异,使用时需注意驱动能力。

P0 口

开漏输出,内部无上拉电阻。作为通用 I/O 时需外接上拉电阻;作为地址/数据复用总线时无需外接。

P1 口

内部带弱上拉,为准双向口。通用 I/O 使用最方便,可直接驱动 LED(需限流电阻)。

P2 口

内部带弱上拉。通用 I/O 外接高 8 位地址总线时输出地址码,否则可作为普通 I/O。

P3 口

内部带弱上拉,除通用 I/O 外还具有丰富的第二功能,如串口、中断、定时器输入等。

使用注意

  • 作为输入口前,必须先向对应锁存器写 1,关闭输出驱动管。
  • P0 口驱动能力最强,但需外接上拉电阻;P1~P3 内部上拉较弱,不适合直接驱动大电流负载。
  • 读取端口时应区分读锁存器(读-修改-写指令)与读引脚。

学习建议

由表及里,建立完整知识框架

学习 8051 单片机应遵循"先结构、后指令、再外设"的路径:先理解内核架构与存储器映射,再掌握寻址方式与指令系统,最后将定时器、中断、串口、I/O 等模块融会贯通。建议结合 Keil 编译、Proteus 仿真与自研实训板进行动手实践,通过 LED、按键、数码管、定时器中断等基础实验逐步加深理解。