单片机原理——MCS-51单片机结构及原理
MCS-51单片机结构及原理
- MCS-51单片机结构
- MCS-51单片机的内部结构
- MCS-51引脚及功能
- MCS-51的存储器结构
- 存储器划分方法
- 程序存储器
- 数据存储器
- 单片机的复位、时钟与时序
- 复位与复位电路
MCS-51单片机结构
MCS-51单片机的内部结构
- SCM——将通用微计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统
- 80C51=(1×8)CPU+128B RAM+4KB ROM+ (2×16)T/C + (4×8)I/O + 1个UART+5个中断源
UART:通用异步收发传输器。它将要传输的资料在串行通信与并行通信之间加以转换
单片机CPU = 控制器 + 运算器
- 控制器:
作用:统一指挥和控制计算机协调工作
组成:程序计数器PC+指令译码器ID+数据指针DPTR+其它专用寄存器
功能:
(1)从存储器中取出下一条要执行的指令(取指)
(2)对取出的指令进行识别(译码)
(3)指挥运算器运算或控制数据传送(指挥) - 程序计数器(Program Counter——PC)
作用:指令地址寄存器,永远存放着下一条指令的地址, PC的变化规律决定着程序的流程。
特点:
具有16位字长→可寻址范围216(=64KB)
具有自动加1功能(计数器)→顺序运行程序功能
具有可被指令修改功能→跳转运行程序功能
复位时,PC值为0 →复位后程序从0开始运行 - 数据指针寄存器(Data Pointer ——DPTR)
16位字长,可寻址范围2162^{16}216(64KB)
可拆为2个8位的独立寄存器DPL和DPH
用于表示存储器数据地址的指针,以便对片外64K的数据RAM区进行读/写操作 - 运算器
作用:对数据进行算术运算和逻辑操作
组成:算术/逻辑部件ALU +累加器ACC+程序状态字寄存器PSW+其它工作单元
功能:
(1)对暂存器中的数据进行运算
(2)结果保存在ACC中
(3)运行状态反映在PSW中 - 累加器(Accumulater——A)
累加器A是一个8位寄存器,用来存放操作数或中间运算结果
通过暂存器与ALU相连
它是CPU中使用最频繁的寄存器 - 程序状态字寄存器(Program State Word——PSW)
PSW是一个8位的专用寄存器,用于存放程序运行过程中的各种状态信息。
寄存器名称 | 功能 |
---|---|
CY(PSW.7) | 进位标志 |
AC(PSW.6) | 辅助进位标志 |
F0(PSW.5) | 用户标志位(用户可自定义) |
RS1(PSW.4) | 工作寄存器组指针 |
RS0(PSW.3) | 工作寄存器组指针 |
OV(PSW.2) | 溢出标志 |
F1(PSW.1) | 用户标志位(用户可自定义) |
P(PSW.0) | 奇偶标志位 |
MCS-51引脚及功能
电源及晶振引脚(共4只)
控制引脚(共4只)
输入/输出引脚 (共32只)
电源及晶振引脚 | 引脚功能 |
---|---|
VCC | +5V电源引脚 |
VSS | 接地引脚 |
XTAL1 | 外接晶振引脚(内置放大器输入端) |
XTAL2 | 外接晶振引脚(内置放大器输出端) |
控制引脚 | 引脚功能 |
---|---|
RST/VPD | 为复位/ 备用电源引脚 |
ALE/PROG‾\overline{PROG}PROG | 为地址锁存使能输出/ 编程脉冲输入 |
PSEN‾\overline{PSEN}PSEN | 输出访问片外程序存储器读选通信号 |
EA‾/VPP\overline{EA}/ V_{PP}EA/VPP | 外接晶振引脚(内置放大器输出端) |
并行I/O口引脚 | 引脚功能 |
---|---|
P0.0~P0.7 | P0口 |
P1.0~P1.7 | P1口 |
P2.0~P2.7 | P2口 |
P3.0~P3.7 | P3口 |
MCS-51的存储器结构
存储器划分方法
计算机存储器地址空间的两种结构形式:
普林斯顿结构和哈佛结构。
MCS-51系列单片机采用哈佛结构,存储器配置如图 :
程序存储器
作用:存放程序、表格或常数(非易失性——掉电保存)
字长:8位
数量:4KB
ROM的6个特殊存储器单元——引导程序跳转
地址 | 功能 |
---|---|
0000H | 复位后程序自动运行的首地址 |
0003H | 外部中断0入口地址 |
000BH | 定时器0溢出中断入口地址 |
0013H | 外部中断1入口地址 |
001BH | 定时器1溢出中断入口地址 |
0023H | 串行口中断入口地址 |
所以,程序一般应安排在0030H地址以后。 | |
- 当EA引脚接高电平(开关接A点)时,4 KB以内的地址在片内ROM,大于4KB的地址在片外ROM中(图中折线),两者共同构成64KB空间;
- 当**EA引脚接低电平(开关接B点)**时,片内ROM被禁用,全部64KB地址都在片外ROM中(图中直线)。
数据存储器
作用:存放程序运行结果
字长:8位
数量:256B
低128B( 00H~7FH )为普通RAM区
高128B (80H~FFH)为特殊功能寄存器区
位寻址与字节寻址:
这里我们以一个例子进行说明
- 欲将地址(20H)中存放数 0111 0010B的最高位改为1, 而其余不变。
方法1,用 数1000 0000B与(20H)的内容进行“或”运算
MOV A, 20H ;先将 20H的内容传入A里
ORL A, #80H ;再对A进行80H的“或”运算
方法2,直接针对最高位进行“置位”操作
SETB 07H ;07H为20H最高位的位地址
单片机的复位、时钟与时序
复位与复位电路
在RST/VPDRST/V_{PD}RST/VPD引脚端出现满足复位时间要求的高电平状态,该时间等于系统时钟振荡周期建立时间再加2个机器周期时间(一般不小于10ms)。
单片机原理——MCS-51单片机结构及原理相关推荐
- 微型计算机原理和单片机,8086微机原理与51单片机对比
<8086微机原理与51单片机对比>由会员分享,可在线阅读,更多相关<8086微机原理与51单片机对比(2页珍藏版)>请在人人文库网上搜索. 1.医学信息2010年03月第23 ...
- c51单片机的语言,51单片机,stm32,arduino都是用什么语言进行编程的?
51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程. 51单片机的编程 51单片机进入中国比较早,在早前用汇编编程比较多,我在上 ...
- 单片机位寻址举例_单片机学习:51单片机寻址方式详解
51单片机是对所有兼容Intel 8031指令系统的单片机的统称.该系列单片机的始祖是Intel 8031单片机,后来随着Flash rom 技术的发展,8031单片机取得了长足的发展,成为了应用最广 ...
- 从51单片机白痴到51单片机高手的快速成长
从51单片机白痴到51单片机高手的快速成长 推荐一个不错的51单片机学习视频教程(高清晰版本)电驴下载 也可以用迅雷下载 飞龙教程------51单片机 需要更多单片信息请与我联系 飞龙QQ:90 ...
- C51汇编语言寻址方式,单片机学习:51单片机寻址方式详解
原标题:单片机学习:51单片机寻址方式详解 51单片机是对所有兼容Intel 8031指令系统的单片机的统称.该系列单片机的始祖是Intel 8031单片机,后来随着Flash rom 技术的发展,8 ...
- ADC0832测电阻原理及51单片机1602显示
前言:今天中午和高中老同学一起吃了个饭,同学计算机专业代码大佬,问起我有没有CSDN,我说有些时候会在上面看一些程序,他随即向我说起了他已经在CSDN上发表了很多文章目前排名一万多,因为我学集成电路专 ...
- 51单片机教程:51单片机驱动四个8*8点阵,拼凑16*16点阵显示标准汉字。
看此篇博文之前建议先看博主的上一篇博文: 51单片机教程:8*8 点阵显示字符.数字.简单汉字 取走点赞哦~ 教你如何用4个8乘8点阵拼成一个16乘16点阵 资料链接:点阵16乘16.rar 一.点阵 ...
- 单片机学习笔记————51单片机实现带数码管显示的象棋比赛专用计时器
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现数码管中的倒计时程序
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现带数码管显示的加法简易计算器
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
最新文章
- 【转载】Linux下套接字学习
- 个人-GIT使用方法
- Silverlight教程第三部分:使用 Networking取回数据并填充DataGrid
- Windows 2003 主域控和DNS迁移到Windows 2008 R2(1)
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:让按钮看起来像个链接 (仍然保留按钮行为)...
- I.MX6ULL镜像文件
- Java进阶:volatile使用详解
- [渝粤教育] 广东-国家-开放大学 21秋期末考试管理会计10171k2
- Java StringBuilder codePointCount()方法与示例
- BmpEncrypt v3.20.1017 ++ 加密器
- pythonide的作用_Linux程序员宝典:2020年10款出色的Python IDE!
- 欧几里德算法+拓展欧几里德算法
- TouchVG 支持 CocoaPods 了!
- 超星的Pdg/Pdz转带书签目录Pdf的好方法
- MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid
- Vijos P1304回文数
- python 等值面多边形平滑_三次贝塞尔曲线平滑多边形
- c#和java工资相差多少岁_为什么C#程序员平均工资水平比Java程序员低?
- Final shell配置
- HTML 实现打电话