MCS-51单片机学习之路(1)

2023-05-16

  • 简介

单片机即单片机微型单片机,是将单片机主机(CPU、 内存和I/O接口)集成在一小块硅片上的微型机。

单片机又称微控制器(MCU)。

单片机具有三高优势(集成度高、可靠性高、性价比高)。

  • 单片机的历史

第一阶段,初级单片 机阶段。以Intel公司的MCS-48为代表

第二阶段(1978~1983):高性能单 片机阶段。以MCS-51系列为代表

第三阶段(1988年~):8位单片机, 巩固、完善及16位单片机推出阶段。 以MCS-96系列为代表

  • 单片机的发展趋势

CPU的改进:采用双CPU结构,以提高处理能力。增加数据总线宽度。采用流水线结构。

存储器的发展:加大存储容量。片内EPROM开始FLASH化。程序保密化。

片内I/O的改进:增加并行口的驱动能力。增加I/O口的逻辑控制功能。通信及网络功能加强。

集成更多的外围电路

引脚的多功能:

功耗

专用型单机发展加快:

  • 单片机主要技术指标

字长:8位机、16位机、32位机。

内存容量:1K=2^10=1024,1M=2^20

运算速度:时钟频率、主频、每秒运算次数

内存存取周期:50nS 、70nS 、200nS 。

  • 单片机运算基础

  • MCS-51单片机的结构与原理

一个8位CPU;

片内振荡和定时电路;

128B内部RAM(00H~7FH);

4个8位并行I/O口;

2个16位可编程定时/计数器;

一个全双工串行口;

5个中断源(可编程为两个优先级);

22个SFR(除PC外,其余21个分散在 80H~FFH之间)

堆栈深度可达80B(30H~7FH);

16B(128位,20H~2FH)可位寻址区

  • CPU内部结构

算术逻辑运算单元ALU (8位)

寄存器阵列:

1、工作寄存器R0~R7 (8位):暂存运算数据和中间结果。4个工作寄存器区,工作寄存器0区~3区。每个区均 含8个寄存器R0~R7 。用PSW中的两位PSW.4和PSW.3来切换工作寄存器区,选用一个工作寄存器区进行读写操作

2、累加器Acc(8位):需要ALU处理的数据计算结果多数要经过A累加器。

3、寄存器B(8位):与A累加器配合执行乘、除运算。也可用作通用寄存器。

4、程序状态字PSW(8位):存放ALU运算过程的标志状态,Cy AC F0 RS1 RS0 OV — P

5、数据指针DPTR(16位):存放片外存储器地址,作为片外存储器的指针。可分成 两个8位寄存器DPH、DPL使用。

6、堆栈指针SP(8位):堆栈是按“先进后出”原则存取数据的存储区。MCS-51堆栈设在片内RAM区。数据入栈/出栈时, SP自动加1/减 1,其内容始终为栈顶地址。复位时 SP=07H。

7、程序计数器PC(16位):CPU总是按PC的指示读取程序。PC可自动加1。因此CPU执行程序一般是顺序方式。当发生转移、子程序 调用、中断和复位等操作,PC被强制改写,程序执行顺序也发生改变。复位时,PC=0000H。

  • 8051存储器结构

程序存储器

在MCS-51的指令系统仅有两条:

MOVC A,@A+DPTR
MOVC A,@A+PC

复位后,程序计数器PC的内容为0000H

MCS-51最多可外扩64K字节程序存储器

数据存储器

从00H~1FH的32B单元是4个工作寄存器组。

地址20H~2FH的16B共128位,是可位寻址的内部RAM区,它们既可字节寻址, 亦可位寻址

其他80B是只能按字节寻址的内部RAM区,为用户区。

MCS-51单片机的堆栈安排在内部RAM内,堆栈 的深度以不超过内部RAM的空间为限。

  • 堆栈

堆栈是一种只允许在其一端进行数据 插入和删除操作的一种数据结构。数据 存取为“后进先出” 。

堆栈功能:保护断点和现场信息。

堆栈的建立:MCS-51的堆栈是设置在内部RAM 30H~7FH空间中,栈底为低地址单元,堆栈指针为SP。

  • 特殊功能寄存器SFR

SFR区部分寄存器功能介绍如下:

程序计数器(PC、16位):存放将要执行的指令地址

累加器(ACC、8位):存放数据或中间结果。

B寄存器(8位):主要用于乘、除运算。

数据指针(DPTR、16位):存放外部数据存储器的地址。

程序状态字(PSW、8位):用于寄存程序运行的状态信息。

标志位功能:

CY:(1)执行算术运算时,最高位向前 进位或借位时,CY为1;否则,CY为0。(2)在位操作中,作“位”累加器。

AC:用于十进制调整。当低四位向高四位进位或借位时,AC为1;否则AC为0。

F0:供用户定义的标志位,可以用指令置位或复位,用以控制程序的转向。

OV:(1)在带符号数的加减运算中,结果产生溢出,OV=1;否则,OV=0。(2)在乘法运算中,乘积超过255,OV=1, 表示积存放在B与A中;否则,OV=0,表示积只存放在A中。(3)在除法运算中,当除数为0时,OV=1, 除法无意义。

P:累加器A中数的奇偶性,若A中“1”的 个数为奇数,则P=1;否则,P=0。

  • 对专用寄存器的两点说明

(1) 单片机的22个专用寄存器中,有21个 是可按字节寻址的(PC除外)。这些字 节地址不连续的分散在内部RAM存储空间 的高128B中,剩余的空闲地址不允许用户使用。

(2) SFR只能使用直接寻址方式来访问它们,书写时既可使用寄存器名,也可使用寄存器单元地址

  • 具有位寻址能力专用寄存器

在21个特殊功能寄存器中,有11个特殊功能寄存器具有位寻址能力,它们的字节地址正好能被8整除,其十六进制地址的末位, 只能是0H或8H。

  • 外部数据存储器

MCS-51外部数据存储器寻址空间为64KB

MCS-51同外部数据存储器的指令有4条:

MOVX A,@Ri
MOVX A,@DPTR
MOVX @Ri, A
MOVX @DPTR,A

R0,R1为8位寄存器,寻址范围256B,DPTR为16位的数据指针,寻址范围64KB。

  • I/O端口

MCS-51有4个双向的8位并行I/O口:P0~P3

每一个口都有一个8位的锁存器

复位后它们的初始状态为全“1”

P0口是三态双向口:既可作为并行I/O口,也可作为数据总线口。当外部扩展了存储器或I/O端口,则只能作数据 总线和地址总线低8位。

P1口是专门供用户使用的I/O口,是准双向接口

P2口是准双向接口,既可作为并行I/O口,也可作为地址总线高8位口。当外部扩展了存储器或I/O端口,则只能作地址总线高8位

P3口是准双向口,又是双功能口。该口的每一 位均可独立地定义为第二功能,作为第一功能使用时,口的结构与操作与P1口相同。

P1,P2,P3口内部均有上拉电阻,当它们用作输入方式时,对应的口锁存器必须先“置”1

P0口内部没有上拉电阻,当它作为通用I/O时, 外接上拉电阻,在用作地址/数据线时,不必外加上拉电阻

P0口的每位输出可驱动8个LSTTL负载,P1-P3 口可驱动4个LSTTL负载

  • 复位电路

复位后PC值为0000H,故复位后的程序入口地址为0000H;

复位后PSW=00H,使片内存储器中选择0区工作寄存器,用户标志为F0为0状态;

复位后SP=07H,设定推栈栈底为07H;

复位后的P1,P2,P3口锁存器全为1状态,使 这些准双向口皆处于输入状态;

内部RAM不受复位的影响。

复位电路的基本功能是:系统上电时提供复位信号,在加电瞬间,RST端出现一定时间的高电平, 直至系统电源稳定后,撤销复位信号。

  • CPU时序

MCS-51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1XTAL2分别是此放大器的输入端和输出端。

CPU执行一条指令的时间称为指令周期,它是 以机器周期为单位的,MCS-51典型的指令周 期为一个机器周期。

每个机器周期由6个状态周期组成,每个状态周期由2个振荡周期组成,状态周期即S1、S2、 S3、S4、S5、S6,而每个状态周期由两个节拍Pl,P2组成。

大多数8051指令执行时间为一个机器周期, MUL(乘法)和DIV(除法)需要4个机器周期

  • CPU引脚功能

双列直插式封装(DIP,Dual Inline Package

方形封装(PLCC,Plastic Leaded Chip Carrier

  • 引脚功能

端口线(4×8 = 32条)

1)P0.0-P0.7         2)P1.0-P1.7          3)P2.0-P2.7           4)P3.0-P3.7

电源线(2条):    VCC为+5V电源线,VSS为地线

控制线(6条):

ALE/PROG :地址锁存允许/编程线

EA/VPP:允许访问片外存储器/编程电源线

PSEN:片外ROM选通线

RST/VPD:复位/备用电源线

XTAL1和XTAL2:片内振荡电路输入/输出线

  1. ALE/PROG :地址锁存允许/编程线

配合P0口引脚的第二功能使用 ,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器

在不访问片外存储器时,MCS-51自动在 ALE线上输出频率为fosc/6的脉冲序列。 该脉冲序列可用作外部时钟源或作为定时脉 冲源使用。

它可以在对8751片内EPROM编程/校验时传送5ms宽的负脉冲。

  1. EA/VPP:允许访问片外存储器/编程电源线

控制MCS-51使用片内ROM还是使用外ROM。 若=1,则允许使用片内ROM; 若=0,则只能使用片外ROM。

对8751的EA/VPP用于在片内EPROM编程/ 校验时输入21V或12.5V编程电源。

  1. PSEN:片外ROM选通线

执行访问片外ROM的指令MOVC时, 自动在线上产生一个负脉冲,用于为片外 ROM芯片的选通(相当于读信号RD)。其 他情况下,线均为高电平封锁状态。

  1. RST/VPD:复位/备用电源线

使CPU处于复位(即初始化)工作状态。 复位有上电自动复位人工按钮复位两种

RST/VPD的第二功能是作为备用电源输入端。 当主电源VCC,发生故障而降低到规定低电平 时,RST/VPD线上的备用电源自动投入,以保证片内RAM中信息不丢失。

  1. XTAL1和XTAL2:

片内振荡电路输入/输出线,这两个端子用来外接石英晶体和微调电容,即用来连接片内 OSC的定时反馈回路,

  • 单片机的工作方式

复位方式:

单片机在开机时都需要复位,以便CPU以及 其他功能部件都处于一个确定的初始状态, 并从这个状态开始工作,RST引脚是复位信号的输入端,复位信号是高电平有效,持续时间要有24个 时钟周期以上,若时钟频率为12MHz,则复位脉冲宽度至少 应为2µS。

程序执行方式:单步执行方式 、连续执行方式

单步执行方式是指按一次单步执行键就执行一 条用户指令的方式。 单步执行方式常常用于用户程序的调试。 单步执行方式是利用单片机外部中断功能实现的。

连续执行方式是单片机都需要的一种工作方式 被执行程序可以放在片内或片外ROM中,由于复位后程序计数器PC=0000H,可以预先在0000H处放一条转移指令,以便跳转到 0000H~0FFFFH中的任何地方执行程序。

节电方式:待机方式 、掉电保护方式

 

EPROM的编程和校验方式

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MCS-51单片机学习之路(1) 的相关文章

  • Spyder cell分块运行 run cell

    Spyder是一个使用方便的Python开发环境 xff0c 安装Anaconda时自带 python代码分块 xff1a 使用Spyder xff0c 可以在python文件 xff08 py xff09 里使用 In 进行分块 如下图
  • C语言中实现bool(布尔型变量)

    C语言中 xff0c 本身没有bool xff08 布尔型变量 xff09 但是我们可以用其他方式来模拟 一 如果简单的使用char int long变量来表示0 1 xff0c 则太浪费空间了 二 这里介绍一种巧妙的方式实现bool xf
  • 随机解调-多频点信号与伪随机序列混频

    随机解调的多频点信号x与伪随机序列经过混频后 xff0c 被均匀的涂抹到了整个频率轴上 xff0c 然后经低通滤波 xff0c 低速均匀采样 xff0c 最后通过OMP等算法恢复原始信号 xff0c 整体上是压缩感知求解欠定方程y 61 A
  • 寻路算法 Astar A星算法

    lt span style 61 34 white space pre 34 gt lt span gt lt span style 61 34 white space pre 34 gt lt span gt 首先是创建一些变量 lt p
  • eclipse调试C代码时printf()不能输出到控制台的解决方法

    1 问题 在ecplise下使用CDT开发C C 43 43 程序中 xff0c 使用debug调试时 xff0c 到了printf 打印函数 xff0c 在console窗口中并没有打印出信息来 xff0c 停止后才会有输出 2 原因 在
  • C语言中带参宏定义

    include lt stdio h gt 1 带参宏定义中 xff0c 宏名和形参表之间不能有空格出现 2 宏定义中不存在值传递 xff0c 它只是一个符号的替换过程 3 带参宏定义中 xff0c 形参不分配内存空间 xff0c 因此不必
  • kaldi新手入门及语音识别的流程(标贝科技)

    kaldi新手入门及语音识别的流程 标贝科技 欢迎体验标贝语音开放平台 地址 xff1a https ai data baker com source 61 qaz123 xff08 注 xff1a 填写邀请码hi25d7 xff0c 每日
  • 结构体字节对齐详解【含实例】

    一 前言 结构体字节对齐属于老生常谈的问题 xff0c 看似简单 xff0c 却很容易忘记 而且因为结构体使用的普遍性 xff0c 使得字节对齐也成为了一个不得不谈的话题 二 什么是结构体字节对齐 假设现在有一个结构体如下 xff0c 问你
  • Mina基础(五):编写自定义协议及编解码器

    为什么要制定协议呢 xff1f 我们知道 xff0c 底层传输的都是二进制数据 xff0c 服务端和客户端建立连接后进行数据的交互 xff0c 接受这对方发送来的消息 xff0c 如何判定发送的请求或者响应的数据结束了呢 xff1f 总不能
  • c++之存储类

    C 43 43 存储类 存储类定义 C 43 43 程序中变量 函数的范围 xff08 可见性 xff09 和生命周期 这些说明符放置在它们所修饰的类型之前 下面列出 C 43 43 程序中可用的存储类 xff1a autoregister
  • STM32串口通信 中断配置

    一 关于如何配置通过中断的方式配置串口的收发 xff0c 一共就是这8个步骤 1 使能串口时钟 使能GPIO时钟 2 引脚复用映射 3 GPIO端口模式设置 4 串口参数初始化设置 5 开启中断初始化NVIC 6 使能串口 7 编写中断处理
  • altium designer导出bom表和贴片图

    altium designer的简单使用 xff0c 做一下记录 1 导出bom表 xff0c https jingyan baidu com article cb5d6105133e8f005c2fe0fe html 2 导出贴片图 xf
  • 基于RPLIDAR激光雷达开发无人机机载室内二维重建装置(2)——RPLIDAR测试

    从官网上 xff08 http www slamtec com xff09 下载开发用的SDK及数据手册等相关资料 xff0c 但Arduino相关资料貌似已失效 xff0c 之后尝试从其他渠道下载 先安装对应系统的驱动 xff0c 之后打
  • Visio2016与office2016安装解决方法终极版

    基本解决方案 删除注册表 office软件在我们日常生活中的应用十分广泛 xff0c 在购买电脑时大部分会给电脑装上office家庭版 xff0c 但是有些人由于工作需要可能使用office更多的功能 xff0c 因此可以选择安装专业版 而
  • 微带天线学习

    微带天线学习 侧馈矩形微带天线同轴馈电矩形微带天线双频微带天线 学习方法是根据HFSS软件学习微带天线的优化 参数计算 xff0c 以及根据HFSS仿真结果进一步理解微带天线中参数对天线性能的影响 微带天线贴片尺寸计算方法及matlab代码
  • Zotero IEEE trans期刊cls格式调整

    Zotero IEEE trans期刊cls格式调整 Zotero软件自带的IEEE期刊的引用格式不符合期刊投稿要求 xff0c 因此需要改变cls文件 xff0c 改变引用格式 cls格式编辑网站 xff1a https editor c
  • ADS2021安装

    1 ADS简介 先进设计系统 Advanced Design system xff08 ADS xff09 Agilent Technologies 是领先的电子设计自动化软件 xff0c 适用于射频 微波和信号完整性应用 2 ADS的安装
  • Mysql整体介绍(适用于5.X版本)(上)(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 Mysql整体介绍 xff08 适用于5 X版本 xff09 标贝科技 Mysql 8
  • TE、TM、TEM模式的区别

    在一众电磁仿真软件的使用中 xff0c 牵涉到平面波的设置或Floquet端口的设置 在设置平面波时 xff0c 论坛里有不少人提到TE波 TM波 xff1b 在设置Floquet端口时 xff0c 又有不少人提到TE极化 TM极化 其实
  • linux下TCP socket编程入门案例(二)——非阻塞的TCP server&client

    文章目录 1 相关概念介绍1 1 阻塞与非阻塞1 2 两者区别1 3 select模型 2 编码实现2 1 代码改进2 2 实现服务端客户端 3 运行结果 在 上一篇 阻塞的TCP server amp client 中 xff0c 介绍了

随机推荐

  • cartographer 主从机rviz订阅地图出错

    cartographer 主从机rviz订阅地图出错 配置及想法 机器人以及虚拟机都是ubuntu16 43 kinetic xff0c 本意想在虚拟机端查看机器人cartographer的建图情况 直接在虚拟机端运行命令 rviz d t
  • TCP的连接和建立(三次握手和四次挥手)

    1 TCP连接的建立 连接的建立 xff0c 通常称为三次握手 建立连接前服务器处在收听状态 第一步 xff1a 客户机的TCP向服务器的TCP发送连接请求报文段 同步位 61 1 这时客户进程进入同步已发送状态 第二步 xff1a 服务器
  • 网络编程(8)自定义网络通讯协议

    C C 43 43 网络通讯真正要用起来 xff0c 不但要写一个好的网络服务器 xff0c 还要定好一套通讯协议才能真正实用 通讯协议业界目前除了用开源的如XMPP以外 xff0c 基本上都是自定义一套通讯协议 xff0c 自已负责封包
  • libtorch导致OPENCV错误:对‘cv::imread(std::string const&, int)’未定义的引用

    1 问题描述 xff1a 报错 xff1a cmakelist txt 提示 xff1a 如果你报了相同的错误 xff0c 但是没有安装libtorch的话 xff0c 可能是cmakelist中没有target link librarie
  • 串口调试助手-QT

    串口调试助手 该程序使用Qt框架 xff0c C 43 43 语言编译而成 项目文件介绍 xff1a main cpp 该文件为该程序的入口程序 mainwindow h 该文件为该程序的主要声明部分 mainwindow cpp 该文件为
  • 基于STM32的电机--电机概述

    文章目录 电机直流有刷电机步进电机伺服电机直流无刷电机舵机 电机 电机 xff1a 俗称 马达 xff0c 依据电磁感应定律实现 电能转换或传递 的一种电磁装置 包括 xff1a 电动机和发电机 电动机在电路中是用M表示 xff0c 它的主
  • 免费公测 标贝声音理解,检测声音性别和年龄

    古有听声辨位 xff0c 今有听声 识 人 说到声音 xff0c 其本质是不同频率声音的集合 xff0c 以波的形式振动 xff08 震动 xff09 传播 由于每个人的发声器官 xff08 口腔 鼻腔 声带 xff09 各不相同 xff0
  • 前后端分离Token验证流程

    1 根据header获取token request getHeader Authorization 2 判断token 是否存在 3 token 不存在 过滤器放行 存在 根据token 获取用户名 根据用户名查询用户记录 UserDeta
  • 车载毫米波雷达MIMO阵列的天线发射问题

    说明 关于MIMO Multiple Input Multiple Output xff0c 多发多收 就不做过多介绍了 xff0c MIMO技术用于车载毫米波雷达主要的目的是增加虚拟通道 xff0c 以期使用较少的收发天线数量来达到较大的
  • 毫米波雷达的硬件架构与射频前端

    说明 本篇博文梳理 车载 毫米波雷达的系统构成 xff0c 特别地 xff0c 对其射频前端各部件做细节性的原理说明 本篇博文会基于对这方面知识理解的加深以及读者的反馈长期更新内容和所附资料 xff0c 有不当之处或有其它有益的参考资料可以
  • 串口+DMA 数据收发编程实践

    更多交流欢迎关注作者抖音号 xff1a 81849645041 目标 了解DMA 的工作原理 xff0c 通过配置 STM32F407 芯片的DMA xff0c 实现串口 43 DMA数据收发 原理 基于USART的数据通讯中采用中断方式可
  • W25Q128读写实验

    更多交流欢迎关注作者抖音号 xff1a 81849645041 目的 熟悉W25Q128串行FLASH的特性和操作指令 掌握通过SPI通讯读写W25Q128数据 原理 本章是结合SPI通讯对串行FLASH的读写 xff0c 通过SPI发送指
  • TFTLCD屏幕实验

    更多交流欢迎关注作者抖音号 xff1a 81849645041 目的 了解TFTLCD屏幕和FSMC的驱动原理 xff0c 通过STM32F4的FSMC接口来控制TFTLCD的显示 原理 1 液晶显示器 显示器属于计算机的I O设备 xff
  • STM32F4主板硬件设计与接口

    更多交流欢迎关注作者抖音号 xff1a 81849645041 本专栏的所有程序都在飞航科技 STM32 F407 开发板上测试通过 xff0c 本文介绍一下STM32 F407 开发板硬件设计与接口 xff0c 便于读者学习交流 STM3
  • 基于STM32F0实现人体红外传感器

    目的 了解人体红外传感器 HC SR501 的驱动原理和STM32F030的中断机制 xff0c 通过配置 STM32F030 芯片 GPIO 相关寄存器和外部触发中断实现人体红外传感器检测人体 原理 中断是指当CPU执行程序时 xff0c
  • STM32F0底板硬件架构设计与原理

    STM32F0底板接口明细 xff1a STM32F0底板作为整块节点的核心 xff08 如下图所示 xff09 xff0c 因此其接口相对应来说较多 xff0c 具体的接口有 xff1a 1 xff1a 5V电源输入口 xff0c STM
  • 基于STM32F030驱动SHT10温湿度传感器

    目的 了解温湿度传感器SHT10的驱动原理 xff0c 通过配置 STM32F030 的GPIO来采集温湿度传感器的温度 湿度和露点的 值 原理 SHT1x 包括 SHT10 SHT11 和 SHT15 属于Sensirion温湿度传感器家
  • Mysql整体介绍(适用于5.X版本)(下)(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 Mysql整体介绍 xff08 适用于5 X版本 xff09 下 xff09 xff0
  • 基于STM32F030实现RFID射频识别

    目的 了解MFRC522读写卡芯片和S50非接触IC卡的驱动原理 xff0c 通过配置 STM32F030 的GPIO和外设SPI xff0c 完成MFRC522传感器与卡的数据读写以及扣款充值实验 原理 MFRC522是高度集成的非接触式
  • MCS-51单片机学习之路(1)

    简介 单片机即单片机微型单片机 xff0c 是将单片机主机 CPU 内存和I O接口 集成在一小块硅片上的微型机 单片机又称微控制器 MCU 单片机具有三高优势 集成度高 可靠性高 性价比高 单片机的历史 第一阶段 xff0c 初级单片 机