3 MCS-51 MCU结构与原理

学习笔记
作者: MingXiao

3.1 51结构

3.2 CPU

分为运算器和控制器

运算器

  • ALU
  • ACC(Accumulator):在与外部的MEM进行读写时,必须有ACC参与
  • PSW(Program Status Word):程序状态字
  • TMP1/2:两个暂存寄存器
  • Reg B:MULDIV指令,就是BX

控制器

  • IR(Instruction Reg)
  • ID(Instruction Decoder)
  • PC(Program Counter):16b,与地址线同宽
  • 定时控制与条件转移逻辑电路

CPU工作过程

  1. 写代码,烧录
  2. 上电/RST复位
  3. PC=0000H,跳转到程序入口
  4. IF, ID
  5. EX,MEM,WB
  6. 三种可能
    • PC += 1
    • PC跳转
    • 中断/函数
  7. 重复,直到结束

3.3 存储器组织

统一编址

存储器的逻辑地址与物理地址对应,如8086,MSP430等

MCS-51的CPU是统一编址的,如0x0000H可以对应片内/外 ROM/RAM

MCS-51的存储器架构

包括片内4KBROM,128BRAM;和片外64KBROM,64KBRAM寻址能力(16根地址线)

8051内部是ROM

访问不同空间的指令

  • 程序存储器空间:MOVC;片内/外通过\(\mathsf{\overline{EA}}\)决定

    当其为高电平,执行片内4KBROM地址中程序,超过4KB时从片外读取

    当其为低电平,所有程序都在片外,此时片外从0000H开始编址

  • 片内数据存储器:MOV

  • 片外数据存储器:MOVX其中一个操作数必须是A

存储器特殊区域

  • 0000H:8051复位后PC指向
  • 0003H:外部中断0入口
  • 000BH:定时器0溢出中断入口
  • 0013H:外部中断1入口
  • 001BH:定时器1溢出中断入口
  • 0023H:串行口中断入口

通常会在这些地址存放一条绝对跳转指令,如

ORG 0000H
	LJMP main
	
	ORG 0013H	;外部中断1入口,中断时PC自动跳转到这里
	LJMP INT1
	
	ORG 0040H
main:			;xxxx
INT1:			;xxxx
	END

片内RAM空间分布

如下图

其中位地址区是bit编址,即每个bit都有自己的地址

寄存器组也可以直接当一般的缓存区使用

3.4 寄存器和功能

特殊功能寄存器:Special Functional Register(SFR)

与ALU相关SFR

  • A Reg(Accumulator):8bit累加器,用A/ACC表示,可以字节寻址(E0H)或位寻址(E0H - E7H)

    ALU在运算时一个数一定在ACC

  • B Reg:8bit暂存寄存器,字节寻址(F0H),在MUL, DIV时使用

  • PSW(Program Status Word):8bit程序状态字,也就是FLAGS,可字节寻址(D0H)

    • CY:进位标志,在第8位进位时为1

    • AC:半进位标志,在第4位进位时为1

    • F0:用户标志位

    • RS1, RS0:工作寄存器组选择位,其值**00, 01, 10, 11分别对应寄存器组0,1,2,3**工作

    • P:奇偶校验位,累加器**ACC中若奇数个1P=1**

    • OV:溢出标志位,当符号位(MSB)与次高位不同时进位时OV=1

      主要受ADD, ADDC, SUBB, MUL, DIV影响,MUL结果大于16bit(255)时、DIV 0OV=1,其他为0

      • MUL指令:MUL AB,表示\(A\cdot B\),结果的低8位在A,高8位在B
      • DIV指令:DIV AB,表示\(A\div B\),结果的商在A,余数在B
    • 例:

与指针相关SFR

  • SP(Stack Pointer):8位寄存器,指向栈顶,初始化后SP=07H

  • DPTR(Data Pointer):16位寄存器,可以分为两个8位DPH, DPL

    可以用来访问外部RAM中的任一单元,也可以作为通用Reg使用

MCS-51的栈操作:与8086完全不同

  • ASP += 1,将A中值入栈
  • POP A:将栈顶值赋给A,SP -= 1
  • 在发生函数调用CALL时自动入栈两次(PC是16位),函数返回RET也是两次

与端口相关SFR

  • P0 - P3:I/O口的寄存器,存放上一个状态所有管脚的输出,初始值为FFH
  • SCON
  • SBUF
  • PCON

与定时/计数器相关SFR

  • TMOD
  • TCON
  • TH0,TL0,TH1,TL1

与中断相关SFR

  • IE(Interrupt Enable Register):地址为A8H,可按位寻址A8H - AFH

    EA=0总中断禁止EA=1,按各个设置

  • IP(Interrupt Priority Register):地址为B8H,可按位寻址B8H - BFH

    某个bit = 1,这个优先级

PC

  • CS:IP相同
  • 低8位从P0输出,高8位从P2输出

例:需要往程序存储器写信息时,通过改变PC的值

解:错误,程序存储器只能烧录不能写

3.5 MCS-51管脚定义与功能

  • 4个P脚都能用作I/O

    • P0脚作为**8b数据口**和16b地址口的低8位使用
    • P1脚只能用于I/O
    • P2脚用于地址口的高8b
    • P3脚与单片机的功能输入/出复用
  • Vss = GND

  • XTAL1/2外接晶振,产生CPU的工作时钟(芯片内部存在振荡电路,产生时钟)

    一般用12MHz作为时钟的振荡周期,12个振荡周期作为机器周期(1us)

  • RST/Vpd外接复位电路;当CPU工作时,RST超过两个机器周期(2us)的高电平可以让CPU复位

    当CPU掉电时,该脚接上备用电源,保持RAM中的数据

  • ALE/PROG提供地址的低字节锁存信号,ALE以6倍振荡周期为周期进行输出

    当访问外部数据存储器时,跳过一个ALE脉冲(表示数据不需要锁存)

    对于EPROM机,在EPROM编程期间,这个脚接受编程脉冲

  • PSEN是外部程序存储器选通信号输出,在读写外部MEM时,每个机器周期内两次有效(访问指令和数据)

  • EA/Vpp高电平,访问内部程序MEM;低电平,访问外部程序MEM

    在EPROM编程期间,这个脚加上21V EPROM编程电源(不是编程脉冲)

  • P3的一些第二功能

注意在串口通讯时,RXDTXD(Receiver和Transmitter)是交叉

3.6 MCS-51的最小系统

包括

  • 电源和地:电源用稳压芯片

  • 时钟电路:外部晶振

  • 复位电路:包括上电复位手动按钮复位和看门狗芯片复位

看门狗是一个计数器,MCU会周期性发送清空信号;当MCU死机后,看门狗计数会计满,自动向RST发送高电平;但是只能修复软件问题,硬件出错是不能修复的



Comments