一、MCS51基本组成(STC89C52)

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

  1、组成结构简图

  

                            

  2、具体组成框图

    

二、MCS51存储器详解

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

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

    1B = 8bit , 1024(210)B = 1KB, 1024K(220)B =1MB, 1024M(230)B = 1GB , 1024G(240)B = 1TB 

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

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

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

  

  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个工作寄存器区,每个区都对应R0-R78个通用寄存器,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
DPTR 数据指针寄存器(DPH+DPL) 83H和82H
       PORT *P0 PORT0 80H
*P1 PORT1 90H
*P2 PORT2 A0H
*P3 PORT3 B0H
       中断 *IE 中断允许寄存器 A8H
*IP 中断优先级寄存器 D8H
      UART PCON 电源控制和波特率选择寄存器 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.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
Cy AC F0 RS1 RS0 OV —— P

进位标志

1、存放进位标志;

2、位操作时作累加位

辅助进位标志

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

常用于十进制数调整

供用户使用

0

0

1

1

0

1

0

1

溢出标志

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

未使用

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

      

    

微机原理基础(四)—— MSC51的更多相关文章

  1. 微机原理基础(五)—— MSP430

    一.MSP430组成 1.结构简图 2.具体组成框图

  2. Linux学习之CentOS(二十八)--RAID原理基础及Linux下软件RAID配置

    一.RAID的原理基础 在 讲解RAID的原理基础之前,我们首先来了解一下传统磁盘的劣势.我们知道一台PC机种都会包含CPU.内存.主板.硬盘.网卡等硬件,影响计算机性能的 组建包括:CPU.主板总线 ...

  3. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

  4. 单片微机原理P0:80C51结构原理

    本来我真的不想让51的东西出现在我的博客上的,因为51这种东西真的太low了,学了最多就所谓的垃圾科创利用一下,但是想一下这门课我也要考试,还是写一点东西顺便放博客上吧. 这一系列主要参考<单片 ...

  5. 80x86/Pentium微机原理及接口技术-微处理器-学习笔记

    80x86/  Pentium微机原理及接口技术 1.    计算机基础... 1 1.1常用术语... 1 1.2计算机中数与编码的表示方法... 1 1.2.1进制表示及进制转换... 1 1.2 ...

  6. Bootstrap<基础四> 代码

    Bootstrap 允许您以两种方式显示代码: 第一种是 <code> 标签.如果您想要内联显示代码,那么您应该使用 <code> 标签. 第二种是 <pre> 标 ...

  7. Python 基础 四 面向对象杂谈

    Python 基础  四  面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...

  8. MFC原理第四讲.动态创建机制

    MFC原理第四讲.动态创建机制 一丶要学习的知识点以及简介 动态创建是什么意思? 动态创建其实就是跟C++的new一样.都是创建对象.但是规避了C++语法的缺陷. 例如: char * ClassNa ...

  9. C#_02.13_基础四_.NET方法

    C#_02.13_基础四_.NET方法 一.方法概述: 方法是一块具有名称的代码.可以通过方法进行调用而在别的地方执行,也可以把数据传入方法并接受数据输出. 二.方法的结构: 方法头  AND  方法 ...

随机推荐

  1. LeetCode之“字符串”:ZigZag Conversion

    题目链接 题目要求: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...

  2. UnityEditor下文件操作方法汇总(Unity3D开发之二十四)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/50595585 ...

  3. nfc近场通信

    NFC简介: Near Field Communication 近场通信,是一种数据传输技术. 与wifi.蓝牙.红外线等数据传输技术的一个主要差异就是有效距离一般不能超过4cm. NFC支持3种工作 ...

  4. Android Data Binding代码实践(告别findViewById)(四)

    Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点 ...

  5. C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)

    在分析代码之前,我们先来了解一下,BCD码和二进制到底区别在哪? 学习过计算机原理的和数字电子技术这两门课的都会知道这两个到底是什么含义,也有的同学学过了,考过了,过了一段时间又忘记了,今天,我们通过 ...

  6. 如何在shell脚本中判断文件或者文件夹是否存在?

    1:查找文件夹 如果文件夹存在,则打印一句存在,否则打印不存在 这里的话可以自由加一些指令. if [ test -d 文件夹名称 ] ; then echo "文件夹存在!" e ...

  7. mybatis源码之SimpleStatementHandler

    /** * @author Clinton Begin */ public class SimpleStatementHandler extends BaseStatementHandler { pu ...

  8. mybatis源码之BaseStatementHandler

    /** * @author Clinton Begin */ public abstract class BaseStatementHandler implements StatementHandle ...

  9. C# /VB.NET 创建PDF项目符号列表和多级编号列表

    使用项目符号和编号,可以让文档的层次结构更清晰.更有条理,也更容易突出重点.在编辑文档的过程中,我个人也比较偏爱项目标号来标注文章重点信息.在之前的文章中,介绍了如何在Word中来创建项目标号和编号列 ...

  10. 万水千山ABP - 弹出对话框禁用回车

    模态对话框中禁用回车 ABP Zero 中,使用弹出对话框进行实体编辑,回车时会自动保存并关闭对话框.那么如何禁用这个回车功能 ? 查看实体列表视图 index.cshtml 所对应加载的脚本文件 i ...