AT89C52单片机介绍

目录

1AT89C52原理图及结构框图

[1.1 原理图](#1.1 原理图)

[1.2 AT89C52 结构框图](#1.2 AT89C52 结构框图)

[1.2.1 8 位 CPU](#1.2.1 8 位 CPU)

[1.2.2 存储器](#1.2.2 存储器)

[1.2.3 I/O 端口](#1.2.3 I/O 端口)

[1.2.4 定时器 / 计数器](#1.2.4 定时器 / 计数器)

[1.2.5 串行通信接口](#1.2.5 串行通信接口)

[1.2.6 中断系统](#1.2.6 中断系统)

[1.2.7 时钟与复位](#1.2.7 时钟与复位)

[1.2.8 总线结构](#1.2.8 总线结构)

[1.2.9 特殊功能寄存器区](#1.2.9 特殊功能寄存器区)

[2 AT89C52引脚介绍(PDIP)](#2 AT89C52引脚介绍(PDIP))

3AT89C52使用要点

4AT89C52的存储结构

4.1程序存储器(ROM/Flash)------放代码

[4.2数据存储器(RAM)------ 放变量/堆栈](#4.2数据存储器(RAM)—— 放变量/堆栈)

[4.3特殊功能寄存器(SFR)------ 控外设](#4.3特殊功能寄存器(SFR)—— 控外设)

4.4地址映射总览

4.5使用小贴士

[5定时器 / 计数器](#5定时器 / 计数器)

[5.1 共性部分](#5.1 共性部分)

[5.2 T0、T1 的 4 种工作模式(M1:M0 决定)](#5.2 T0、T1 的 4 种工作模式(M1:M0 决定))

[5.3 T2 的专用特性(8052 独有)](#5.3 T2 的专用特性(8052 独有))

[5.4 小结](#5.4 小结)

[6 中断系统](#6 中断系统)

[6.1 中断源一览](#6.1 中断源一览)

[6.2 控制寄存器](#6.2 控制寄存器)

[6.3 优先级与嵌套规则](#6.3 优先级与嵌套规则)

[6.4 外部中断细节](#6.4 外部中断细节)

6.5定时器中断

6.6串行口中断

[6.7 中断响应流程(精简记忆版)](#6.7 中断响应流程(精简记忆版))

[6.8 使用技巧](#6.8 使用技巧)


概述:文章摘要:AT89C52是一款基于8051内核的8位单片机,包含8KB Flash程序存储器、256B RAM、3个定时器/计数器、全双工串口和8个中断源。其40引脚PDIP封装提供32个可编程I/O口,支持多种外设控制。存储结构分为程序存储器(8KB片内Flash)、数据存储器(128B通用RAM+128B SFR)和可扩展64KB片外RAM。定时器/计数器包含T0/T1的4种工作模式和T2的增强功能(捕获/自动重装)。中断系统支持6个中断向量和2级优先级管理。使用需注意P0口上拉电阻、晶振选型和存储空间分配等要点。

1AT89C52原理图及结构框图

1.1 原理图

如上图所示,AT89C52 单片机有 PDIP(双列直插式封装)、PQFP/TQFP(塑料四方扁平封装)和 PLCC(塑料有引线芯片载体封装)三种封装形式,以适应不同产品的需求。PDIP 封装便于手工焊接与调试,适用于实验开发与小批量生产;PQFP/TQFP 封装具有引脚间距小、集成度高的特点,适合对体积要求严格的产品;PLCC 封装则在电气性能与散热方面表现出色,常用于对性能要求较高的工业级产品。

1.2 AT89C52 结构框图

1.2.1 8 位 CPU

ALU、累加器 A、程序计数器 PC、堆栈指针 SP、指令寄存器 IR 等

1.2.2 存储器

8 KB Flash ROM(程序存储器)

256 B RAM(128 B 通用 + 128 B 可位寻址)

1.2.3 I/O 端口

32 条可编程 I/O 线:P0~P3 四个 8 位端口

1.2.4 定时器 / 计数器

3 个 16 位可编程定时/计数器 T0、T1、T2

1.2.5 串行通信接口

全双工 UART(串口)

1.2.6 中断系统

8 个中断源、6 个中断向量、2 级优先级

1.2.7 时钟与复位

片内振荡器及时钟电路(XTAL1、XTAL2)

上电/手动复位逻辑(RST)

1.2.8 总线结构

内部 8-bit 数据总线

16-bit 地址总线(P0、P2 复用)

PSEN、ALE、EA 等控制总线

1.2.9 特殊功能寄存器区

控制/状态寄存器:TCON、TMOD、SCON、PCON、IE、IP 等

以上模块通过内部数据总线和地址总线互连,构成典型的 8051 内核微控制器。

2 AT89C52引脚介绍(PDIP)

AT89C52(40引脚PDIP封装)各引脚功能一览表

|---------|---------|---------------------------------------|
| 引脚号 | 引脚名 | 功能说明(第一功能 / 第二功能) |
| 1 | P1.0 | 口线 P1.0;T2(定时器 2 外部计数输入) |
| 2 | P1.1 | 口线 P1.1;T2EX(定时器 2 捕获/重装触发) |
| 3 | P1.2 | 口线 P1.2;普通 I/O |
| 4 | P1.3 | 口线 P1.3;普通 I/O |
| 5 | P1.4 | 口线 P1.4;普通 I/O |
| 6 | P1.5 | 口线 P1.5;普通 I/O |
| 7 | P1.6 | 口线 P1.6;普通 I/O |
| 8 | P1.7 | 口线 P1.7;普通 I/O |
| 9 | RST | 复位输入;高电平 ≥2 个机器周期复位 MCU |
| 10 | P3.0 | 口线 P3.0;RXD(串口数据输入) |
| 11 | P3.1 | 口线 P3.1;TXD(串口数据输出) |
| 12 | P3.2 | 口线 P3.2;/INT0(外部中断 0) |
| 13 | P3.3 | 口线 P3.3;/INT1(外部中断 1) |
| 14 | P3.4 | 口线 P3.4;T0(定时器 0 外部计数输入) |
| 15 | P3.5 | 口线 P3.5;T1(定时器 1 外部计数输入) |
| 16 | P3.6 | 口线 P3.6;/WR(外部 RAM 写选通) |
| 17 | P3.7 | 口线 P3.7;/RD(外部 RAM 读选通) |
| 18 | XTAL2 | 晶振输出端(接晶振一端或外部时钟输入反相端) |
| 19 | XTAL1 | 晶振输入端(接晶振另一端) |
| 20 | GND | 地 |
| 21 | P2.0 | 口线 P2.0;A8(高 8 位地址总线位 8) |
| 22 | P2.1 | 口线 P2.1;A9 |
| 23 | P2.2 | 口线 P2.2;A10 |
| 24 | P2.3 | 口线 P2.3;A11 |
| 25 | P2.4 | 口线 P2.4;A12 |
| 26 | P2.5 | 口线 P2.5;A13 |
| 27 | P2.6 | 口线 P2.6;A14 |
| 28 | P2.7 | 口线 P2.7;A15 |
| 29 | /PSEN | 程序存储器读选通(外部取指时为低电平) |
| 30 | ALE | 地址锁存允许;平时输出 fosc/6 脉冲,可关闭 |
| 31 | /EA | 外部访问使能;低电平时强制访问外部程序存储器;高电平时访问内部 Flash |
| 32 | P0.7 | 口线 P0.7;AD7(地址/数据总线位 7,需外加上拉电阻) |
| 33 | P0.6 | 口线 P0.6;AD6 |
| 34 | P0.5 | 口线 P0.5;AD5 |
| 35 | P0.4 | 口线 P0.4;AD4 |
| 36 | P0.3 | 口线 P0.3;AD3 |
| 37 | P0.2 | 口线 P0.2;AD2 |
| 38 | P0.1 | 口线 P0.1;AD1 |
| 39 | P0.0 | 口线 P0.0;AD0 |
| 40 | VCC | +5 V 电源 |

3AT89C52使用要点

1 P0 口做普通 I/O 时需外加上拉电阻(≈10 kΩ )。

2 ALE 、/PSEN 、/EA 在仅使用片内 Flash 时可固定接法:

/EA → VCC

ALE、/PSEN 可悬空或保留测试点。

3 晶振典型值 11.0592 MHz (便于串口波特率整除),两引脚加 30 pF 负载电容到地。

4AT89C52的存储结构

AT89C52的存储结构="三大块 + 可选扩展"

4.1程序存储器(ROM/Flash)------放代码

片内:8 KB(= 8×1024 B)闪存,地址 0000h~1FFFh

掉电不丢失,可重复擦写>1000 次

由 /EA 引脚决定片内/片外取指:

/EA = 1------>先片内 8 KB,超过 1FFFh 自动跳到片外

/EA = 0------>强制全部从片外 0000h 开始取指

片外:最大可扩到 64 KB(0000h~FFFFh)

通过P0(AD0~AD7)+ P2(A8~A15)+ /PSEN 选通并行总线

4.2数据存储器(RAM)------ 放变量/堆栈

1.片内 RAM 256 B(地址 00h~FFh)

├─ 低 128 B(00h~7Fh)

│ ├─ 00h~1Fh:4 组工作寄存器 R0~R7(RS0/RS1 选择)

│ ├─ 20h~2Fh:位寻址区(16 B×8 bit = 128 可位寻址位)

│ └─ 30h~7Fh:通用 RAM(函数局部变量、堆栈默认从此开始)

└─ 高 128 B(80h~FFh)

└─ 特殊功能寄存器区 SFR(与 RAM 统一编址,但用直接寻址访问)

例:P0=80h, SP=81h, DPL=82h, DPH=83h, TCON=88h ......

  1. 片外数据 RAM(可选)

独立 64 KB 空间(0000h~FFFFh)

通过 P0 + P2 + /RD、/WR 选通,与程序空间并行但物理隔离

C 语言用关键字 `xdata` 访问:`unsigned char xdata buf[512];`

4.3特殊功能寄存器(SFR)------ 控外设

占用了片内 RAM 高 128 B 的地址 80h~FFh;常用的有

端口:P0~P3

定时器:TMOD, TCON, TL0/TH0, TL1/TH1, T2CON, RCAP2L/H

串口:SCON, SBUF, PCON

中断:IE, IP

统:SP, DPL, DPH, AUXR, WDTRST ......

4.4地址映射总览

|----------------|-------------|-----------------|
| 存储区域 | 地址范围 | 说明 |
| 片内 Flash ROM | 0000h~1FFFh | 8 KB 程序代码(默认) |
| 片外 Flash/EPROM | 2000h~FFFFh | 可选扩展,最多 56 KB |
| 片内 RAM | 00h~7Fh | 128 B 通用/位/寄存器区 |
| SFR | 80h~FFh | 128 B 特殊寄存器 |
| 片外 XRAM | 0000h~FFFFh | 可选扩展,最大 64 KB |

4.5使用小贴士

  1. 片内 8 KB Flash 足够中小项目,无需外扩程序存储器;

若 /EA = 1,代码超过 8 KB 会自动到片外,无需手动切换。

  1. 堆栈默认在片内 RAM 07Fh 向上增长;如用片外 XRAM,需手动改 SP。

  2. 无内部 EEPROM;如需掉电数据保存,外挂 24C02 等 I²C EEPROM 最方便。

5定时器 / 计数器

AT89C52内部共有3个16位可编程定时/计数器:T0、T1 和 T2。它们都以"计数源→16 位加法计数器→溢出标志→中断/硬件事件"这一基本链路工作,但在计数源选择、工作模式、重装方式及附加功能上各有差异。下面按"共性-差异"方式概述其工作原理。

5.1 共性部分

  1. 核心:16 位 THn+TLn 加法计数器(n = 0,1,2)。

  2. 计数源:

内部 fOSC/12(定时方式,C/T=0)

外部 Tn 引脚负跳变(计数方式,C/T=1)

  1. 溢出:FFFFH→0000H 时置位 TFx 标志,可请求中断。

  2. 启停:由 TRn 位(TCON 或 T2CON 中)控制。

  3. 读写:通过专用寄存器 THn/TLn 访问,均为 8 位,需分两次完成。

5.2 T0、T1 的 4 种工作模式(M1:M0 决定)

00 模式0:13 位(THn 高 8 位 + TLn 低 5 位),已淘汰。

01 模式1:16 位,一次计数,溢出后需软件重装初值。

10 模式2:8 位自动重装,TLn 计数,THn 存重装值。

11 模式3:T0 分裂为两个 8 位定时器,T1 停止计数(仅作波特率发生器)。

5.3 T2 的专用特性(8052 独有)

  1. 计数器:TH2+TL2 仍为 16 位。

  2. 捕获/自动重装:

由 T2CON 中 CP/RL2 位决定。

CP/RL2=1:捕获方式。当 T2EX(P1.1)出现负跳变时,把当前 TH2/TL2 锁存到 RCAP2H/RCAP2L,并置 EXF2 标志。

CP/RL2=0:自动重装方式。溢出时将 RCAP2H/RCAP2L 预存值装入 TH2/TL2,并置 TF2。

  1. 计数源扩展:除 fOSC/12、T2(P1.0) 外,还可选"向下计数"模式(由 DCEN 位允许),实现可逆计数。

  2. 时钟输出:置 T2OE=1 时,T2 引脚可输出 fOSC/24/(65536-初值) 的方波。

  3. 中断:TF2(溢出)和 EXF2(捕获/外部重载)共用中断向量 5。

5.4 小结

T0、T1:经典 8051 定时器,模式简单,常用来产生延时、波特率或外部事件计数。

T2:8052 增强定时器,带捕获/自动重装、可选向下计数、时钟输出,适合更复杂的定时需求(如脉冲宽度测量、可编程时钟产生)。

6 中断系统

AT89C52的中断系统="6 组固定中断向量 + 1 组共用中断向量 + 2 级优先级管理"

6.1 中断源一览

|--------|----------|----------|---------------|------------|
| 编号 | 向量地址 | 标志位 | 源/ 功能 | 触发方式 |
| 0 | 0003H | IE0 | 外部中断 0 (INT0) | 低电平 / 下降沿 |
| 1 | 000BH | TF0 | 定时器 0 溢出 | 内部计数溢出 |
| 2 | 0013H | IE1 | 外部中断 1 (INT1) | 低电平 / 下降沿 |
| 3 | 001BH | TF1 | 定时器 1 溢出 | 内部计数溢出 |
| 4 | 0023H | RI/TI | 串行口 (UART) | 收完/发完 1 字节 |
| 5 | 002BH | TF2+EXF2 | 定时器 2 | 溢出或捕获/重载 |

共 8 个"物理"中断源,但向量只有 6 个(T2 两个标志共用 002BH)。

6.2 控制寄存器

  1. IE(A8H)------总中断允许

EA ES ET2 ES ET1 EX1 ET0 EX0

1 = 允许;0 = 屏蔽

  1. IP(B8H)------优先级(1 = 高优先级,0 = 低优先级)

--- --- PT2 PS PT1 PX1 PT0 PX0

8052 新增 PT2,其余位含义同 8051。

  1. T2CON(C8H)------T2 专用

TF2、EXF2 由软件清 0。

6.3 优先级与嵌套规则

两级:高优先级可打断低优先级,同级不嵌套。

同优先级内部再按自然序号 0→5 排队。

6.4 外部中断细节

IT0/IT1(TCON.0/TCON.2)

0 = 低电平触发(需手动撤除低电平才能再次触发)

1 = 下降沿触发(自动锁存,脉冲宽度 ≥ 1 机器周期即可)

6.5定时器中断

TF0/TF1 在计数器溢出时置 1,CPU 响应后硬件自动清 0。

TF2/EXF2 共用向量,中断服务程序需判断是溢出还是捕获/重载,再分别清 0。

6.6串行口中断

RI 和 TI 共用向量,进入服务程序后先读 SCON 判定是"接收完"还是"发送完",再清相应标志。

6.7 中断响应流程(精简记忆版)

  1. 标志置位 → 2. 总中断 EA=1 且对应位允许 → 3. 优先级仲裁 → 4. 完成当前指令 → 5. 自动把 PC 压栈 → 6. 装入向量地址 → 7. 执行 ISR → 8. RETI 返回。

6.8 使用技巧

下降沿触发外部中断时,ITn=1 可避免"电平保持"误触发。

高优先级 ISR 里可再被更高优先级打断,但同级或低优先级不能打断。

T2 的 TF2/EXF2 必须软件清 0,否则会不停地进入中断。

相关推荐
代码游侠4 小时前
ARM开发——阶段问题综述(二)
运维·arm开发·笔记·单片机·嵌入式硬件·学习
DLGXY4 小时前
STM32——旋转编码器计次(七)
stm32·单片机·嵌入式硬件
羽获飞4 小时前
从零开始学嵌入式之STM32——3.使用寄存器点亮一盏LED灯
单片机·嵌入式硬件
浩子智控5 小时前
商业航天计算机抗辐射设计
单片机·嵌入式硬件
独处东汉9 小时前
freertos开发空气检测仪之输入子系统结构体设计
数据结构·人工智能·stm32·单片机·嵌入式硬件·算法
czy87874759 小时前
机智云 MCU OTA可以对MCU程序进行无线远程升级。
单片机·嵌入式硬件
麦托团子10 小时前
51单片机学习笔记17-红外遥控(外部中断)
51单片机
A9better11 小时前
嵌入式开发学习日志52——二值与计数信号量
单片机·嵌入式硬件·学习
日更嵌入式的打工仔13 小时前
(实用向)中断服务程序(ISR)的优化方向
笔记·单片机
想放学的刺客13 小时前
单片机嵌入式试题(第25)嵌入式系统可靠性设计与外设驱动异常处理
stm32·单片机·嵌入式硬件·mcu·物联网