一、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. HashMap二三事

    先看看hashmap在整个Collection中的位置 HashMap中存储数据的结构是 /** * The table, resized as necessary. Length MUST Alwa ...

  2. redis菜鸟教程

    Redis 简介 http://www.runoob.com/redis/redis-intro.html Redis 安装 http://www.runoob.com/redis/redis-ins ...

  3. Linux Framebuffer驱动剖析之一—软件需求

    嵌入式企鹅圈将以本文作为2015年的终结篇,以回应第一篇<Linux字符设备驱动剖析>.嵌入式企鹅圈一直专注于嵌入式Linux和物联网IOT两方面的原创技术分享,稍后会发布嵌入式企鹅圈的2 ...

  4. listview中的adapter学习小结

    概述 Adapter是数据和UI之间的一个桥梁,在listview,gridview等控件中都会使用到,android给我们提拱了4个adapte供我们使用: BaseAdapter是一个抽象类,继承 ...

  5. redis简单主从复制

    两台ubuntu 云服务器,分别redis主从服务器,ip地址是:123.207.96.138(主)139.199.167.251(从) 安装redis,在这里我建议给redis设置密码,之前看过一篇 ...

  6. linux上搭建ftp服务器

    摘要 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行 ...

  7. Java 学习资料整理

    Java 学习资料整理 Java 精品学习视频教程下载汇总 Java视频教程 孙鑫Java无难事 (全12CD) Java视频教程 即学即会java 上海交大 Java初级编程基础 共25讲下载 av ...

  8. 实施一个SAP项目大概分为下面几个过程

    实施一个SAP项目大概分为下面几个过程 1.需求调研.了解客户需要实施的范围,比如是财务模块,后勤模块,人力资源,商务智能等等.需求调研通常有几种方法了解,和客户开会讨论:分配到具体业务人员了解:通过 ...

  9. Git快速入门进阶篇

    本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...

  10. Day6_正则表达式

    用作匹配数据的方法: print(re.findall('\w','yangshuai 123 asd \n \t')) #w:匹配字母数字下划线 print(re.findall('\W','yan ...