当前位置: 首页 > news >正文

51单片机的工作过程

目录

一、51单片机的总线结构​

(一)地址总线(AB)

(二)数据总线(DB)

(三)控制总线(CB)

二、51 单片机的工作过程​

第一步:取指令​

第二步:指令译码​

第三步:执行指令​


一、51单片机的总线结构​

(一)地址总线(AB)

        地址总线用于传送单片机访问存储器或 I/O 端口的地址信息

        51 单片机的地址总线为 16 位,这意味着它可以寻址的范围为 2^{16} B= 64KB。

        例如,当 CPU 要从只读存储器(ROM)中读取某条指令时,会通过地址总线将指令所在的地址发送出去,只读存储器(ROM)根据这个地址找到对应的指令并将其输出。

       同样,在访问外部数据存储器或I/O端口时,也通过地址总线指定要访问的具体单元地址。​

(二)数据总线(DB)

        数据总线负责在单片机的各个部件之间传输数据

        其位数与单片机的字长相关,51 单片机是 8 位机,所以数据总线为 8 位。

        在执行指令过程中,无论是从存储器读取数据到 CPU,还是将 CPU 运算结果写入存储器或输出到 I/O 端口都要通过数据总线进行数据传输

        比如,当执行“MOV A, 30H”指令时,数据总线会将地址为30H的单元中的数据传送到累加器 A 中。​

(三)控制总线(CB)

        控制总线用于传输各种控制信号,协调单片机各部件的工作。

        它包含多个控制信号,如读信号(RD)、写信号(WR)、ALE(地址锁存允许)等。

        ALE 信号在访问外部存储器时,用于锁存低 8 位地址;RD 和 WR 信号分别控制对存储器或 I/O 端口的读、写操作。

        例如,当 CPU 要从外部数据存储器读取数据时,会发出 RD 信号,同时通过地址总线给出要读取的地址,数据存储器根据这些信号,将对应地址单元的数据通过数据总线传送给 CPU。​

二、51 单片机的工作过程​

第一步:取指令​

        单片机的工作从取指令开始。

        程序计数器(PC)中存储着当前要执行的指令在程序存储器中的地址。单片机首先根据 PC 的值,从程序存储器中读取对应的指令。

        例如,假设 PC 的值为 0x0000,那么单片机就会从程序存储器地址 0x0000 处读取指令。

        读取完指令后,PC 会自动增加,指向下一条要执行的指令地址。如果当前指令是单字节指令,PC 加 1;如果是双字节指令,PC 加 2;若是三字节指令,PC 加 3。​

第二步:指令译码​

        读取到的指令是一串二进制代码,单片机需要对其进行译码,理解指令的含义。

        译码电路会根据指令的操作码部分,识别出该指令要执行的操作,比如是进行数据传送、算术运算还是控制跳转等。

        例如,操作码 0x74 表示立即数赋值指令,当译码电路识别到该操作码后,就知道接下来要将指令中的操作数赋值给指定的寄存器。​

第三步:执行指令​

        根据译码的结果,单片机执行相应的操作。

        如果是数据传送指令,就将数据从源地址传送到目标地址;若是算术运算指令,在运算器中进行相应的运算,并将结果存储到指定位置。

        例如,执行加法指令“ADD A, R0”时,单片机将累加器 A 中的值与寄存器 R0 中的值相加,然后将结果存回累加器 A 中。

        在执行指令过程中,可能会涉及到对存储器、I/O 端口等部件的访问和操作。​

接着循环往复......

        单片机不断重复取指令指令译码执行指令这三个步骤,直到程序结束或遇到停机指令。

        正是通过这样周而复始的工作过程,单片机能够有条不紊地完成各种复杂的任务,实现多样化的功能。

相关文章:

  • Vue-Router:构建单页面应用的路由管理利器
  • 向量数据库技术系列四-FAISS介绍
  • three.js解决非全屏射线位置错误问题
  • 第三章:大模型中的提示学习
  • 蓝桥杯备考:图论之Prim算法
  • 2.3 滑动窗口专题:最大连续1的个数 III(LeetCode 1004)
  • PostgreSQL技术大讲堂 - 第82讲,主题:数据安全利器--密码安全策略构建
  • SpringBoot 和vue前后端配合开发网页拼图10关游戏源码技术分享
  • c++图论(一)之图论的起源和图的概念
  • 易语言模拟真人鼠标轨迹算法
  • 2025年渗透测试面试题总结-某四字大厂实习面试复盘 一面 三面(题目+回答)
  • Amazon Quantum Ledger Database (QLDB):革新数据可信记录的终极解决方案
  • (C语言)写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和(递归函数)
  • Axure设计之下拉多选框制作教程B(中继器)
  • 【Aioredis实战总结】Aioredis简介
  • 详解Flutter单线程模型,以及Flutter是如何通过单线程实现异步的
  • Go语言os标准库
  • SSA-随机森林分类预测matlab代码
  • 【Linux】https 协议
  • 用SpringBoot做一个web小案例配置拦截器判断登录状态
  • 夜读丨为萤火虫哭泣的夜晚
  • 世卫大会中国代表团:中国深入参与全球卫生治理,为构建人类卫生健康共同体贡献中国力量
  • 证监会披露两起操纵市场处罚结果,今年来涉操纵股票罚没金额超7.5亿元
  • 人民网:激发博物馆创新活力,让“过去”拥有“未来”
  • 哈马斯与以色列在多哈举行新一轮加沙停火谈判
  • 中国驻美大使:远离故土的子弹库帛书正随民族复兴踏上归途