历史上的今天
返回首页

历史上的今天

今天是:2025年04月13日(星期日)

正在发生

2018年04月13日 | 单片机执行程序的过程

2018-04-13 来源:eefocus

为了加深初学者对51单片机指令的理解,现在把指令执行的过程在此详细说明,希望对你有启发! 



单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。 

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。 
计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。 

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。 

下面我们将举个实例来说明指令的执行过程: 

开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。 

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器, 

0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是: 
1 程序计数器的内容(这时是0000H)送到地址寄存器; 

2 程序计数器的内容自动加1(变为0001H); 

3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中; 

4 CPU使读控制线有效; 

5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。 

由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在 
这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程 

与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为 
指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完 

毕。单片机中PC="0002H",PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到 
暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。  

推荐阅读

史海拾趣

Bellin Dynamic Systems公司的发展小趣事

随着公司规模的扩大和业务范围的拓展,Bellin Dynamic Systems开始注重品牌建设和市场推广。公司加大了对品牌形象的宣传力度,通过参加行业展会、举办技术研讨会等方式提升品牌知名度。同时,公司还加强了与媒体和客户的沟通互动,积极传递公司的价值观和企业文化。这些举措有效地提升了Bellin Dynamic Systems在市场上的影响力和竞争力。

Echelon公司的发展小趣事

随着公司业务的不断发展,Echelon开始积极拓展全球市场。公司通过在海外设立分支机构、与当地企业合作等方式,将LonWorks技术和能源管理服务方案推广至全球各地。同时,Echelon还积极参与国际能源管理标准的制定和推广工作,提升了公司在国际市场的知名度和影响力。

Bomar Interconnect公司的发展小趣事

为了确保产品质量和稳定性,Bomar Interconnect公司建立了严格的质量管理体系。公司引进了先进的质量检测设备和方法,对原材料、生产过程、成品进行全面检测和控制。同时,公司还加强了员工培训,提高了员工的质量意识和操作技能。这些措施有效提升了产品的质量水平,降低了不良品率,为客户提供了更加可靠的产品和服务。

Defense Logistics Agency公司的发展小趣事

Defense Logistics Agency(DLA)于1961年成立,是美国国防部(DOD)的一个独立作战支援机构。在成立初期,DLA就明确了其战略定位:为全球范围内的美军及国防部其他部门提供统一、高效的后勤保障服务。这一战略定位的确立,为DLA的后续发展指明了方向。

Ericsson公司的发展小趣事

Ericsson公司始终将创新作为企业发展的核心动力。从早期生产电话机、电话交换机到今天提供端到端全面通信解决方案以及专业服务,Ericsson不断定义电信行业“进步”的含义,并通过实现每一个“进步”引领全球电信业的技术发展与变革。特别是在移动通信领域,Ericsson一直处于领先地位,为全球所有主要移动通信标准提供设备和服务。

DBM REFLEX公司的发展小趣事

随着公司实力的不断增强,DBM REFLEX开始积极拓展全球市场。通过与全球知名企业的合作,公司成功将产品推向了世界各地。同时,DBM REFLEX还积极寻求与产业链上下游企业的合作,建立了稳定的供应链和销售渠道。这些合作伙伴的加入,不仅为公司提供了更多的市场机会,还进一步提升了公司的品牌影响力。

问答坊 | AI 解惑

视频服务器常用重要附属功能

关键字:视频服务器     面对琳琅满目的基于MPEG-4/H.264等多种压缩算法的视频服务器,该如何选择呢?这里我们主要是根据功能需求来选择合适的产品。     首先,要明白需要视频服务器来完成什么样的事情,这个很重要, ...…

查看全部问答>

第一次写驱动程序,无法读写硬件,请高手指点!

我把周立功的实验教材上的流接口驱动程序的例子进行了修改,加入了写硬件的部分,但是驱动程序无法读写硬件,请高手帮我分析一下。 测试程序中只用到了写函数,,目的是往硬件里写数据,从串口打印的信息显示数据正确,但是硬件里没反应。 #inclu ...…

查看全部问答>

请教大家一个问题,我买了个实验板,上边是AT89S52的单片机,能不能换成别的单片机呢?

请教大家一个问题,我买了个实验板,上边是AT89S52的单片机,我能不能换成STC的单片机,听说STC的单片机擦写次数多,寿命长。…

查看全部问答>

请教关于DSP的几个问题!

其实我也非常不愿意在这里发作业帖,没办法,学校在武汉,我现一直在北京公司 实习,上学期在学校又选了一门DSP的课,布置了几道考试题作业,明天就要交了, 按学校的规定如果不过可能毕业会有问题,没办法只好向eeworld的各位兄弟求救了, 请大 ...…

查看全部问答>

最近用CC430做的一个控制器总死机,没有思路,请各位出点建议

最近用CC430做的一个控制器总死机,没有思路,请各位出点建议…

查看全部问答>

【设计工具】赛灵思ROM使用中文教程

潘徐君编写的使用教程,适合赛灵思FPGA/CPLD用户,介绍了赛灵思ROM的使用技巧,有实战价值。   …

查看全部问答>

有没有放大十万倍的电路将100纳安的电流放大,用三极管做

  有没有放大十万倍的电路将100纳安的电流放大,用三极管做…

查看全部问答>

enet-io 看不懂啊

哪位朋友看懂了LM3S8962中的enet-io 例程,能比较详细的解释一下么,看的晕啊…

查看全部问答>

直流功率输出板

(潮光光耦网整理编辑)2012-07-13 1.产品简介 可以驱动8路直流功率输出(控制直流电机、电磁阀、继电器等直流设备)、6路LED指示灯输出、6路开关量输入。 客户可通过简单的控制命令控制功率输出口、LED端口开闭,闪烁,监控开关量状态变化。 ...…

查看全部问答>

关于CAN通讯中断

本程序基于LM3S5K31 #include \"config.h\"#include \"can_deal.h\"#include \"serial_com.h\"/**/tCANMsgObject g_MsgObjectRx;                          ...…

查看全部问答>