单片机原理

AT89S51单片机片内硬件结构

(  本节以AT89S51为例介绍51单片机的基本结构,如下图所示)

AT89S51单片机的片内结构,从图中可见 AT89S51单片机的基本组成:

1. CPU:8位的CPU 由控制器和运算器构成

2. 数据存储器(RAM):128B 用于存放读写数据、运算的中间结果

3. 程序存储器(ROM):4KB 用于存放用户程序、原始数据或表格

4. 4个8位的并行I/O口:P0~P3 用于数据的输入/输出

5. 1个全双工的异步串行口:UART 用于与其他设备间的串行数据传送

6. 中断系统: 具有5个中断源,2级中断优先级

7. 定时/计数器:有2个16位的T/C 可作为定时器也可作为计数器使用

8. 特殊功能寄存器:SFR 在80H~FFH地址区间内,离散地分布26个特殊功能寄存器

9. 看门狗定时器:WDT 可将单片机复位,使程序恢复正常运行

单片机的外部结构

   目前,51单片机多采用40引脚双列直插式(PDIP)封装形式。此外,还有44引脚塑料方型扁平式(TQFP)封装形式的芯片,如下图所示

AT89S51的引脚功能

40个引脚按其功能可分为4类:

1.电源引脚:Vcc(40脚):接+5V电源正端          

                     Vss(20脚):接+5V电源地端

2.时钟电路引脚:XTAL1(19脚):片内振荡器的反相放大器输入端

                            XTAL2(18脚):片内振荡器的反相放大器输出端。

3.并行I/O口引脚: 4个并行I/O口(P0~P3),每个口都有8个引脚,用于传送数据和地址  

4. 控制引脚

(1)RST(9脚):复位信号输入引脚,在该引脚出现2个机器周期以上的高电平,可使单片机复位。正常工作,此引脚应为≤ 0.5V的低电平

(2) PSEN(29脚):片外程序存储器读选通信号输出引脚,低电平有效

(3)ALE/PROG(30脚):低8位地址锁存控制信号输出引脚,低电平有效

         ① CPU访问外部程序存储器或外部数据存储器时,将低8位地址锁存在片外的地址锁存器中

         ② 单片机正常运行时,ALE端一直有正脉冲信号输出,此频率为时钟振荡器频率fosc的1/6

(4)EA/VPP(31脚):外部程序存储器访问允许控制信号输入引脚

AT89S51单片机存储器的结构

存储器分为两大类:

数据 存储器 (RAM):CPU在运行时,能随时对其进行数据的写入和读出。但在关闭电源时,其所存储的数据信息将丢失。它用来存放暂时性的输入输出数据、运算的中间结果

程序 存储器 (ROM):是一种写入信息后,不易改写的存储器。 断电后,ROM中的信息保留不变。用来存放固定的程序、原始的数据或表格等

AT89S51单片机的存储器有4个存储物理空间,具体如下图所示:

存储器中的每个存储单元是8位,每一个单元有一个地址编号,从0000H~FFFFH

~ROM和RAM分别在两个独立的空间,即分开编址

程序存储器(ROM)

1. 计算机的工作原理:计算机在工作时,CPU自动从程序存储器中逐条取出指令、分析指令,并根据指令的操作类型和操作对象执行指令,完成相应的操作。如此重复,直至执行完程序的所有指令,从而实现程序的基本功能,这就是微型计算机的基本工作原理

2.程序计数器PC: PC是CPU中的一个16位寄存器,用于存放CPU将要从ROM中读取的下一个指令字节码的地址,因此也称为地址指针;单片机复位后,PC的值为0000H,CPU从程序存储器0000H地址单元开始读取一个指令字节,并开始执行程序,同时PC+1→PC;依次进行,一次读取一个指令字节

3.片内与片外程序存储器的选择:

(1)EA引脚接高电平,EA接+5V

        ① 当PC值没有超出0FFFH时,只读取片内Flash存储器中程序

        ② 当PC值超出0FFFH时,CPU会自动转向读取片外程序存储器空间1000H~FFFFH内的程序

(2)EA引脚接低电平,EA接地

        CPU只根据PC值读取片外程序存储器(0000H~FFFFH)中的程序。不会读取片内4KB Flash存储器

4.程序存储器低端的几个特殊单元

程序存储器中几个低端的地址固定用作特定的入口地址

        0000H:单片机复位后的地址

        0003H:外部中断0的中断程序入口地址

        000BH:定时/计数器0溢出中断程序入口地址

        0013H:外部中断1的中断程序入口地址

        001BH:定时/计数器1溢出中断程序入口地址

        0023H:串行口的中断程序入口地址

数据存储器(RAM)

一、 片内数据存储器

AT89S51片内RAM 128字节(00H—7FH) AT89S52片内RAM 256字节(00H—FFH)

1.工作寄存器区

片内RAM前32个单元(00H—1FH)是4个工作寄存器区                                

4个工作 寄存器区:每个工作寄存器区有8个工作寄存器: R0、R1、R2、R3、R4、R5、R6、R7

注:当前工作寄存器区只能有一个

     当前工作寄存器的选择:首先由RS1,RS0选择工作寄存器区,然后确定工作寄存器对应的单元。 复位后,默认的工作寄存器区为0区

程序状态字寄存器PSW:

▼RS1(PSW.4)、RS0(PSW.3)工作寄存器区选择位

若在一个实际的单片机应用系统中,并不需要4个工作寄存器区,这个区域的多余单元可以作为一般的数据缓冲器使用

2. 位寻址区

片内RAM中,20H-2FH 这16个单元是位寻址区

这16个单元中共有128位, 每一位都有一个位地址

位地址空间:00H—7FH    

CPU对位寻址区内的RAM单元(20H~2FH):

1、既可以采用字节操作指令,整体操作某个字节

2、又可以采用位操作指令,直接对字节中的某一位进行操作

用途: 一般可用作程序运行标志、开关量控制以及位变量等

           这种位寻址能力是一般微机所不具备的,是单片机所独有的

位寻址区多余的RAM单元也可以作为一般的数据缓冲器使用

3.  数据缓冲区

地址:30H-7FH(30H-FFH)单元  

用途:存放各种读写数据和中间结果,起到数据缓冲的作用       

二、片外数据存储器

片内RAM不够用时,AT89S51最多可外扩64KB的片外RAM

注意:片外RAM和外扩的I/O接口是统一编址的,要注意地址分配的问题

特殊功能寄存器区

特殊功能寄存器区:80H~FFH的地址空间,只允许直接寻址SFR,26个特殊功能寄存器 离散地分布在80H~FFH的地址空间

特殊功能寄存器SFR(专用寄存器) 专用于控制、选择、管理、存放单片机内部各功能部件的工作方式、条件、状态、结果的寄存器

不同的SFR管理不同的功能部件,负责不同的功能——各司其职

换言之:要让单片机内部各功能部件实现预定的功能,很重要的一项工作就是对SFR写命令(编程)

AT89C51特殊功能寄存器位地址和字节地址表,如下图所示

注:字节地址尾数为0或8的特殊功能寄存器,每位都有位地址,可位操作

特殊功能寄存器每一位的定义和作用与单片机的各个部件直接相关

特殊功能寄存器详细用法在相应的章节进行说明

AT89S51的中央处理器(CPU)

组成:运算器+控制器

功能:从ROM中读取指令、分析指令并根据指令的操作类型和操作对象,控制各个功能部件执行指令

运算器

组成:算术逻辑单元ALU+有关寄存器

功能:进行数据的算术运算、逻辑运算、位操作运算以及数据传输等

专用寄存器

1.累加器A(E0H):是CPU中使用最频繁的一个8位寄存器。它既是ALU的输入数据源之一,同时又是ALU运算结果的存放单元之一;CPU中的数据传送大多都通过累加器A

2.通用寄存器B(F0H):用于乘、除法运算;若不作乘除法运算时,则可作为通用寄存器使用

3.程序状态字PSW(D0H):用于保存指令执行结果的状态信息,以供程序查询和判断

▼CY(PSW.7) 进位/借位标志位:若在执行某些算术运算类指令时,最高位发生了进位或借位,则CY=1,否则CY=0。它也是位处理器中的位累加器C,可用于位操作

▼AC(PSW.6) 辅助进位/借位标志位:若在执行某些算术运算类指令时,D3位向D4位发生了进位或借位,则AC=1,否则AC=0

▼F0(PSW.5) 用户自定义标志位:在编程时,用户可根据需要对F0赋予一定的含义,通过指令来使它置1或清0;也可由指令来测试该标志位,根据测试结果控制程序的流向

▼OV (PSW.2) 溢出标志位:当执行带符号8位二进制数(-128~+127)的某些算术运算类指令时,用来指示运算结果是否产生溢出(超出范围)。如果结果产生溢出,OV=1;否则,OV=0

▼P (PSW.0) 奇偶标志位:在指令执行完后,CPU根据累加器A中“1”的个数是奇数还是偶数自动给该标志位置1或清0。累加器A中“1”的个数为奇数:P=1;为偶数:P=0  

控制器 

组成:程序计数器(PC)、指令寄存器、指令译码器、定时控制逻辑电路等

功能:是整个单片机的控制中心;

           对内:控制指令的读入、译码和执行,从而对各功能部件进行定时和逻辑控制

           对外:发出ALE、PSEN等控制信号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Frida】04_Frida中使用TypeScript脚本(采坑)

▒ 目录 ▒ 🛫 导读需求开发环境演示目标 1️⃣ 操作步骤安装node 20.10.0在 VSCode 中打开项目目录初始化一个 NodeJS 项目安装 TypeScript初始化 TypeScript 项目安装依赖配置 TypeScript编写代码编译设置编译脚本运行,查看结果 2️⃣ 采坑frida-compi…

WEB前端项目开发——(一)(2024)

目录 1 通过Git Bash安装 vue-cli 2 创建项目 3 解决Git Bash方向键失效 4 重新进行项目创建 5 浏览器输入地址查看 6 案例——简单修改v3-calendar中的内容 7 测试页面效果 本篇文章介绍通过了Git Bash创建v3-calendar项目,之后对v3-calendar进行简单…

使用gitee自动备份文件

需求 舍友磁盘前两天gg了,里面的论文没有本地备份,最后费劲巴拉的在坚果云上找到了很早前的版本。我说可以上传到github,建一个私人仓库就行了,安全性应该有保证,毕竟不是啥学术大亨,不会有人偷你论文。但是…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包,第四:trans_beta class

trans_beta class:利用trans_beta类可以变换和绘制beta分集的距离矩阵。该类中涉及到beta多样性的分析主要包括排序、群距、聚类和方差分析。我们首先使用PCoA显示排序。 > dataset$cal_betadiv() The result is stored in object$beta_diversity ... > t1 &…

ClickHouse中的设置的分类

ClickHouse中的各种设置 ClickHouse中的设置有几百个,下面对这些设置做了一个简单的分类。

游戏引擎中网络游戏的基础

一、前言 网络游戏所面临的挑战: 一致性:如何在所有的主机内都保持一样的表现可靠性:网络传输有可能出现丢包安全性:反作弊,反信息泄漏。多样性:不同设备之间链接,比如手机,ipad&a…

C到C++的敲门砖-2

文章目录 引用内联函数auto关键字基于范围的for循环指针空值nullptr后记 引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。 所谓引用就是给变量起别名&am…

RUST egui体验

egui官方提供了web版的demo&#xff0c;效果还是很不错的&#xff0c;就是用的时候有点一头雾水&#xff0c;没有找到明确的指导怎么把这些组件插入到自己的application或者web。花了一天时间撸了一遍流程&#xff0c;记录一下&#xff0c;说不定以后能用到呢 >_< efram…

asp.net 作业星软件系统

asp.net 作业星软件系统 用户功能:分教师和家长&#xff08;学生) 注册登录:登录部分是用户名密码&#xff0c;以及教师和家长&#xff08;学生&#xff09;的勾选; 注册包括用户名密码确认密码再次确认密码(与上方输入的密码比对&#xff09;身份班级设置找回账号的问题和答案…

【人工智能】英文学习材料01(每日一句)

&#x1f33b;个人主页&#xff1a;相洋同学 &#x1f947;学习在于行动、总结和坚持&#xff0c;共勉&#xff01; 目录 1.Natural Language Processing&#xff0c;NLP&#xff08;自然语言处理&#xff09; 2.Machine Learing&#xff0c;ML&#xff08;机器学习&#xf…

FFplay使用滤镜添加字幕到现有视频显示

1.创建字幕文件4k.srt 4k.srt内容: 1 00:00:01.000 --> 00:00:30.000 日照香炉生紫烟2 00:00:31.000 --> 00:00:60.000 遥看瀑布挂前川3 00:01:01.000 --> 00:01:30.000 飞流直下三千尺4 00:01:31.000 --> 00:02:00.000 疑是银河落九天2.通过使用滤镜显示字幕在视…

【GPT-SOVITS-03】SOVITS 模块-生成模型解析

说明&#xff1a;该系列文章从本人知乎账号迁入&#xff0c;主要原因是知乎图片附件过于模糊。 知乎专栏地址&#xff1a; 语音生成专栏 系列文章地址&#xff1a; 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…

llama笔记:官方示例解析 example_chat_completion.py

1 导入库 from typing import List, Optional从typing模块中导入List和Optional。typing模块用于提供类型注解的支持&#xff0c;以帮助明确函数预期接收和返回的数据类型。List用于指定列表类型Optional用于指定一个变量可能是某个类型&#xff0c;也可能是None。 import fir…

Linux 下使用 socket 实现 TCP 客户端

目录 示例代码板级验证更多内容 套接字&#xff08;socket&#xff09;是 Linux 下的一种进程间通信机制&#xff08;socket IPC&#xff09;&#xff0c;它不仅支持同一主机的不同进程间通信&#xff0c;还支持跨网络的不同主机的进程间通信。 socket 允许通过标准的文件描述…

十四、GPT

在GPT-1之前&#xff0c;传统的 NLP 模型往往使用大量的数据对有监督的模型进行任务相关的模型训练&#xff0c;但是这种有监督学习的任务存在两个缺点&#xff1a;预训练语言模型之GPT 需要大量的标注数据&#xff0c;高质量的标注数据往往很难获得&#xff0c;因为在很多任务…

Android学习使用GitLab(保姆级)

实习生入职第一课 学习使用GitLab&#xff0c;熟悉Git版本控制工具 下面是我的学习笔记&#xff0c;希望能帮助到需要的人&#xff01; 目录 一、注册你的GitLab账号 二、安装Git 三、在Android studio中配置Git 四、GitLab账户配置SSH Keys 五、GitLab账号创建项目 六…

深度学习-基于机器学习的垃圾邮件过滤系统

概要 当今社会发展迅速&#xff0c;网络邮件也愈加普及。但是随之产生的垃圾邮件问题&#xff0c;也是的我们的邮件用户不堪其扰。对企业的工作以及个人用户的生活也造成了很大的影响。针对一些由于垃圾邮件导致的网络吞吐量异常和邮件系统无法正常使用的情况。建立一个机器学习…

html5黑色大气的个人博客全屏滚动个人主页源码HTML+JS+CSS

html5黑色大气的个人博客全屏滚动个人主页源码HTMLJSCSS

基于背景差法的运动目标检测(车辆检测),Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

【计算机视觉】二、图像形成——实验:2D变换编辑器2.0(Pygame)

文章目录 一、向量和矩阵的基本运算二、几何基元和变换1、几何基元(Geometric Primitives)2、几何变换(Geometric Transformations)2D变换编辑器0. 项目结构1. Package: guibutton.pywindow.py1. __init__(self, width, height, title)2. add_buttons(self)3. clear(self)4. dr…