一、MCS51基本组成(STC89C52)

  CPU(8051CPU) + 存储器(4KB ROM/256B RAM)+外设(4组IO口,两个定时器,一个串口)

  1、组成结构简图

  

                           微机原理基础(四)—— MSC51-LMLPHP 

  2、具体组成框图

    微机原理基础(四)—— MSC51-LMLPHP

二、MCS51存储器详解

  注:1、CPU的组成基本之前已讲,本篇重点讲述存储器

    2、存储单元的基本单位是Byte,

    1B = 8bit , 1024(2)B = 1KB, 1024K(2)B =1MB, 1024M(2)B = 1GB , 1024G(2)B = 1TB 

  MCS51的存储器采用哈佛架构,ROM 和 RAM独立,主要分为四个区域:内部ROM,内部RAM,外部ROM,外部RAM;

  ROM主要用来存放程序、表格、常数;

  RAM主要用来存放变量、原始数据、中间数据、运算结果;

  微机原理基础(四)—— MSC51-LMLPHP

  1、程序存储区

    程序存储区的地址由程序计数器PC指针(16位寄存器)指示的,每执行一次PC自动加一,PC复位值为0000H,所以CPU从0000H处开始取指;

    • 0000H-0002H 这三个存储单元通常存储无条件跳转指令,CPU跳转地址去执行程序;
    • 0003H-002AH 这40个存储单元被分为五段,对应5个中断源,该处本应该存放对应的中断服务程序,然而每段区域只有8B的大小,是存放不了完整的中断服务程序的,所以通常只用来存放一条无条件转移指令,CPU跳转去执行中断服务程序;
    • 0030H-0FFFH 这(4KB-3B-40B)个存储单元是用来放用户程序的,还可以放表格(对应C语言数组),常数等;

  2、内部数据存储区

    • 00H-1FH  这32个存储单元分为4个工作寄存器区,每个区都对应R-R8个通用寄存器,CPU使用哪个工作区由PSW寄存器中RS1和RS0两个位决定,默认使用工作区0;

          特别注意的是,堆栈指针默认值为07H,即从08H开始为8051堆栈区,但是08H开始是工作寄存器区1/2/3,所以,若编程时用到了这三个工作区,需要初始化SP指针到用户RAM区,也就是30H-7FH;

    • 20H-2FH 这16个存储单元为位寻址区,对应128位,留给用户使用,CPU可以直接位寻址并进行操作(置1,清0,取反等)
    • 30H-7FH 这80个存储单元为用户RAM,留给用户使用,但只能进行字节寻址;
    • 80H-FFH   这128个存储单元为专用寄存器区,有21个特殊功能寄存器,但只占用了28个存储单元,如果访问这28个之外的,得到的是一个随机数;这21个SFR中,有的寄存器可以进行位寻址,有的不能,具体见下表:      

    

  对应分组标识符名称地址
        CPU*ACC(A)累加器E0H
*B辅助寄存器(乘除法用)F0H
*PSW程序状态寄存器D0H
SP堆栈指针寄存器81H
DPTR83H和82H
       PORT*P0PORT080H
*P1PORT190H
*P2PORT2A0H
*P3PORT3B0H
       中断*IE中断允许寄存器A8H
*IP中断优先级寄存器D8H
      UARTPCON电源控制和波特率选择寄存器87H
*SCON串行口控制寄存器98H
SBUF串口数据缓冲器99H
  TIMER*TCON定时器控制器88H
TMOD定时器方式选择器89H
TL0定时器0低8位8AH
TH0定时器0高8位8BH
TL1定时器1低8位8CH
TH1定时器1高8位8DH

    这些寄存器中除了外设寄存器,最重要的就是PSW程序状态寄存器,下面具体看下:

PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0
CyACF0RS1RS0OV——P

进位标志

1、存放进位标志;

2、位操作时作累加位

辅助进位标志

存放低4位向高4位的进位

常用于十进制数调整

供用户使用

0

0

1

1

0

1

0

1

溢出标志

(有符号数运算时结果超出了A所能表示的有效范围(-128-127),则产生溢出)

未使用

奇偶校验(A中1的个数)

      

    

05-08 08:42