Skip to content

51单片机内部结构探秘 🕵️♂️

🌟 微型计算机的魔法城堡

欢迎来到51单片机奇幻世界!这座魔法城堡包含:

  • 中央指挥所:8位CPU指挥官 🧠
  • 记忆宫殿:4KB ROM + 128B RAM 🏰
  • 外交官团队:32根I/O引脚使者 🌐
  • 时间管理者:2个16位定时器 ⏳
  • 通讯专家:全双工UART 📡

1. 核心指挥部 ⚡

asm
; 🌰 栗子1:CPU工作流程
MOV A, #55H  ; 取指令 → 译码 → 执行
ADD A, #10H  ; ALU开始运算
MOV P1, A    ; 结果输出到端口

寄存器天团 💫

成员职责特别技能
ACC数据搬运工唯一能直接运算的寄存器
B乘除专家配合ACC完成乘除运算
PSW状态记录员记录CY/AC/OV等标志位
DPTR数据指针唯一16位地址寄存器
SP堆栈管理员永远指向栈顶

2. 记忆宫殿 🏰

asm
ORG 0000H       ; 程序起始地址
LJMP MAIN       ; 跳过中断向量区
ORG 0030H
MAIN:           ; 用户程序区
MOV A, #01H     ; 程序存储在ROM中
asm
MOV R0, #30H    ; 工作寄存器区(00H-1FH)
MOV 30H, #55H   ; 直接寻址区(20H-7FH)
MOV @R0, #0AAH  ; 间接寻址区(80H-FFH需特殊访问)

存储空间对照表 📚

空间类型地址范围访问方式容量典型值
程序ROM0000H-0FFFH自动寻址4KB
数据RAM00H-7FH直接/间接寻址128B
SFR80H-FFH直接寻址21个特殊寄存器
扩展RAM0000H-FFFFHMOVX指令访问最大64KB

3. 外设天团 🌟

🛠️ 多功能工具人集合

asm
; 定时器配置示例
MOV TMOD, #01H   ; 定时器0模式1
SETB TR0         ; 启动定时器

; 串口初始化
MOV SCON, #50H   ; 模式1,允许接收
MOV TH1, #0FDH   ; 波特率9600
SETB TR1         ; 启动波特率发生器

🔧 外设技能清单:

  • 定时器:定时/计数/波特率生成
  • 串口:自发自收/异步通信
  • 中断系统:5源2优先级
  • 看门狗:防程序跑飞(需特殊型号) ::>

4. 时钟与电源管理 ⏰

🌐 心跳与呼吸机制
asm
; 时钟源选择
; 内部RC振荡器(默认)
; 或外部晶振(XTAL1/XTAL2)

; 电源控制
SETB IDL        ; 进入空闲模式
CLR  PD         ; 退出掉电模式

🔋 省电秘籍:

  • 空闲模式:CPU休眠,外设工作
  • 掉电模式:全机休眠(电流<1μA)
  • 唤醒方式:中断/复位 ::>

5. 实战城堡搭建 🏗️

asm
; 最小系统配置
; 1. 接18pF晶振(11.0592MHz)
; 2. 接10K上拉电阻(RST)
; 3. 电源滤波电容(10μF+0.1μF)

ORG 0000H
LJMP INIT       ; 上电跳转

INIT:
MOV SP, #60H    ; 设置堆栈
MOV P1, #00FFH  ; 初始化端口
LCALL DELAY     ; 调用延时程序

⚠️ 血泪教训:

asm
; 🚨 新手常见错误
MOV A, #256      ; 立即数超限(最大255)
MOVX @R0, A      ; 忘记设置DPTR或P2口
SETB EA          ; 开了中断没写中断服务程序

💡 生存指南:

  • 复位后所有端口输出高电平
  • 未用I/O口建议上拉到VCC
  • 关键操作记得关中断