当前位置: 首页 > news >正文

AT89C52单片机介绍

目录

1AT89C52原理图及结构框图

1.1 原理图

1.2 AT89C52 结构框图

1.2.1 8 位 CPU

1.2.2 存储器

1.2.3 I/O 端口

1.2.4 定时器 / 计数器

1.2.5 串行通信接口 

1.2.6 中断系统

1.2.7 时钟与复位

1.2.8 总线结构 

1.2.9 特殊功能寄存器区 

2 AT89C52引脚介绍(PDIP)

3AT89C52使用要点

4AT89C52的存储结构

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

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

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

4.4地址映射总览

4.5使用小贴士

5定时器 / 计数器

5.1 共性部分

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

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

5.4 小结

6 中断系统

6.1 中断源一览

6.2 控制寄存器

6.3 优先级与嵌套规则 

6.4 外部中断细节

6.5定时器中断 

6.6串行口中断

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

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)

AT89C5240引脚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 …… 

2. 片外数据 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 会自动到片外,无需手动切换。 

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

3. 无内部 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) 

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

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

5. 读写:通过专用寄存器 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。

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

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

5. 中断: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 = 屏蔽 

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

   —   —   PT2  PS  PT1  PX1  PT0  PX0 

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

3. 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,否则会不停地进入中断。

http://www.dtcms.com/a/333956.html

相关文章:

  • 《设计模式》代理模式
  • Day56 Java面向对象10 方法重写
  • 《Python学习之字典(一):基础操作与核心用法》
  • duiLib 实现鼠标拖动状态栏时,窗口跟着拖动
  • 拒绝造轮子(C#篇)使用SqlSugar实现数据库的访问
  • Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析
  • 玩转tokenizer
  • huggingface TRL中的对齐算法: KTO
  • PMP-项目管理-十大知识领域:成本管理-估算预算、控制成本、避免超支
  • 免费下载 Landsat 系列遥感影像——地理空间数据云
  • 《吃透 C++ 类和对象(中):const 成员函数与取地址运算符重载解析》
  • ALBEF/BLIP/BLIP2/Instruct BLIP/X Instruct BLIP
  • 从废弃到珍宝——旧物二手回收小程序系统的价值发现之旅
  • 曲面/线 拟合gnuplot
  • 新手向:Python列表、元组、集合和字典的用法对比
  • 谷歌手机刷机和面具ROOT保姆级别教程
  • 基于 LoRA的广义知识蒸馏(GKD)训练
  • 软考 系统架构设计师系列知识点之杂项集萃(125)
  • 给纯小白的 Python 操作 Excel 笔记
  • STM32 延时函数详解
  • HackMyVM-Uvalde
  • 第七十五章:AI的“思维操控师”:Prompt变动对潜在空间(Latent Space)的影响可视化——看懂AI的“微言大义”!
  • 整体设计 符号学与诠释学融合的整体设计框架(本篇暂时命名)--PromptPilot (助手)答问之1
  • 第四章:大模型(LLM)】06.langchain原理-(5)LangChain Prompt 用法
  • PowerPoint和WPS演示放映PPT时如何禁止鼠标翻页
  • [1Prompt1Story] 注意力机制增强 IPCA | 去噪神经网络 UNet | U型架构分步去噪
  • 国产之光时空克隆:功能对标谷歌地球,旅游规划还能加载倾斜摄影模型,三维视频融合 免费使用
  • GaussDB 数据库架构师修炼(十三)安全管理(3)-行级访问控制
  • 【C++】C++11
  • implement copy file content to clipboard on Windows