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 等 I2C 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.pswp.cn/news/919240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919240.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

聯網車輛功能安全和網絡安全的挑戰與當前解決方案

摘要在過去的二十年里,數字化重塑了我們的日常生活,汽車行業也身處這一變革之中。如今的車輛正變得日益智能且聯網,具備了更多的安全和便捷功能(如自動緊急制動、自適應巡航控制)。下一代車輛將實現高度自動化乃至 5 級…

網絡安全(Java語言)腳本 匯總(二)

文章目錄目錄遍歷漏洞掃描器源代碼思路一、核心功能二、依賴庫三、核心流程四、關鍵方法五、數據結構六、輸出信息目錄遍歷漏洞掃描器 源代碼 /*** description : 目錄遍歷漏洞掃描器* 注意; 在輸入URL時 要求必須保存 ?page 的末尾 才能保證路徑合成的有效性*//*** desc…

基于 ArcFace/ArcMargin 損失函數的深度特征學習高性能人臉識別解決方案

要實現當前最先進的人臉識別系統,我們需要采用業界公認性能最佳的算法框架,主要包括基于 ArcFace/ArcMargin 損失函數的深度特征學習、MTCNN 人臉檢測與對齊以及高效特征檢索三大核心技術。以下是優化后的解決方案: 核心優化點說明 算法選擇:采用 ArcFace(Additive Angul…

Sql server 查詢每個表大小

在SQL Server中,你可以通過查詢系統視圖和系統表來獲取數據庫中每個表的大小。這可以通過幾種不同的方式來實現,下面是一些常用的方法:方法1:使用sp_spaceused存儲過程sp_spaceused是一個內置的存儲過程,可以用來顯示數…

react 錯誤邊界

注意點: 類組件是可以和函數式組件混合寫的!!!getDerivedStateFromError是靜態的,避免副作用,如果想將錯誤上報到服務器,則去componentDidCatch里去處理。getDerivedStateFromError直接返回{ ha…

自定義 VSCode 標題欄以區分不同版本

自定義 VSCode 標題欄以區分不同版本 當您在同一臺計算機上使用多個 Visual Studio Code 版本時,自定義窗口標題欄是一個有效的方法,可以幫助您快速區分它們。 為何需要區分多個 VSCode 版本? 在同一臺電腦上安裝和使用多個 VSCode 實例是很常…

失敗存儲:查看未成功的內容

作者:來自 Elastic James Baiera 及 Graham Hudgins 了解失敗存儲,這是 Elastic Stack 的一項新功能,用于捕獲和索引之前丟失的事件。 想獲得 Elastic 認證嗎?看看下一期 Elasticsearch Engineer 培訓什么時候開始! E…

基于Spring Boot+Vue的萊元元電商數據分析系統 銷售數據分析 天貓電商訂單系統

🔥作者:it畢設實戰小研🔥 💖簡介:java、微信小程序、安卓;定制開發,遠程調試 代碼講解,文檔指導,ppt制作💖 精彩專欄推薦訂閱:在下方專欄&#x1…

Node.js/Python 實戰:封裝淘寶商品詳情 API 客戶端庫(SDK)

在開發電商相關應用時,我們經常需要與淘寶 API 交互獲取商品數據。直接在業務代碼中處理 API 調用邏輯會導致代碼冗余且難以維護。本文將實戰演示如何使用 Node.js 和 Python 封裝一個高質量的淘寶商品詳情 API 客戶端庫(SDK),使開…

【Docker】關于hub.docker.com,無法打開,國內使用dockers.xuanyuan.me搜索容器鏡像、查看容器鏡像的使用文檔

🔧 一、國內鏡像搜索替代方案 國內鏡像源網站 毫秒鏡像:支持鏡像搜索(如 https://dockers.xuanyuan.me),提供中文文檔服務(https://dockerdocs.xuanyuan.me),可直接搜索鏡像名稱并…

2025盛夏AI熱浪:八大技術浪潮重構數字未來

——從大模型革命到物理智能,AI如何重塑產業與人機關系🌟 引言:AI從“技術爆炸”邁向“應用深水區」代碼示例:AI商業化閉環驗證模型# 驗證AI商業化閉環的飛輪效應 def validate_ai_flywheel(compute_invest, app_adoption): re…

從希格斯玻色子到 QPU:C++ 的跨維度征服

一、引言:粒子物理與量子計算的交匯點在當代物理學和計算機科學的前沿領域,希格斯玻色子研究與量子計算技術的交匯正形成一個激動人心的跨學科研究方向。希格斯玻色子作為標準模型中最后被發現的基本粒子,其性質和行為對我們理解物質質量的起…

Elasticsearch:如何使用 Qwen3 來做向量搜索

在這篇文章中,我們將使用 Qwen3 來針對數據進行向量搜索。我們將對數據使用 qwen3 嵌入模型來進行向量化,并使用 Qwen3 來對它進行推理。在閱讀這篇文章之前,請閱讀之前的文章 “如何使用 Ollama 在本地設置并運行 Qwen3”。 安裝 Elasticsea…

Mybatis實現頁面增刪改查

一、改變路由警告 二、實現新增數據 1.UserMapper.xml 2.Controller層 注意:前端傳的是json對象,所以后臺也需要使用JSON 3.設置提交的表單 <el-dialog title"信息" v-model"data.formVisible" width"30%" destroy-on-close><el-form…

Rabbitmq+STS+discovery_k8s +localpv部署排坑詳解

#作者&#xff1a;朱雷 文章目錄一、部署排坑1.1. configmap配置文件1.2. pv文件1.3. sc文件1.4. serviceAccount文件1.5. headless-service文件1.6. sts文件二、RabbitMQ集群部署關鍵問題總結一、部署排坑 1.1. configmap配置文件 編輯cm.yaml 文件 apiVersion: v1 kind: C…

8.14 模擬

lc658. deque 定長滑窗class Solution { public:vector<int> findClosestElements(vector<int>& arr, int k, int x) {int n arr.size();int l 0, r 0;deque<int> dq;while (r < n) {dq.push_back(arr[r]);if (dq.size() > k) {// 核心&#xf…

JavaScript 核心語法與實戰筆記:從基礎到面試高頻題

一、面試高頻:apply 與 call 調用模式的區別 apply 和 call 的核心作用一致——改變函數內 this 的指向并立即執行函數,唯一區別是參數傳遞方式不同: apply:第二個參數需以數組形式傳入,格式為 函數名.apply(this指向, [參數1, 參數2, ...]) 示例:test.apply(param, [1,…

自動駕駛系統“測試”的“要求”與“規范體系”

讓數據真正閉環的&#xff0c;L4級自動駕駛仿真工具鏈-杭州千岑智能科技有限公司&#xff1a;RSim。 自動駕駛系統測試的要求與規范體系 自動駕駛技術作為汽車產業智能化轉型的核心領域&#xff0c;其測試驗證環節直接關系到技術的安全性和可靠性。隨著自動駕駛等級的提高&…

人工智能——CNN基礎:卷積和池化

一、CNN入門介紹1、卷積神經網絡&#xff08;Convolutional Neural Network&#xff0c;簡稱 CNN&#xff09;是一種專門為處理具有網格結構數據&#xff08;如圖像、音頻&#xff09;而設計的深度學習模型。在傳統的全連接神經網絡&#xff08;FNN&#xff09;中&#xff0c;輸…

適用監測農作物長勢和病蟲害的高光譜/多光譜相機有哪些?

面對農作物長勢分析和病蟲害監測&#xff0c;光譜技術在農業中得到了有效的應用。本篇文章給大家介紹下適合監測農作物長勢和病蟲害的高光譜/多光譜相機。農作物在遭受病蟲害侵襲時&#xff0c;其葉片的細胞結構、水分含量、色素組成會發生變化&#xff0c;從而導致農作物對不同…