历史上的今天

今天是:2024年11月19日(星期二)

2018年11月19日 | 单片机执行程序的过程,加深对51单片机指令的理解

发布者:Serendipity66 来源: 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就是这样一条一条地执行指令,完成所有规定的功能。


关键字:单片机  执行程序  指令 引用地址:单片机执行程序的过程,加深对51单片机指令的理解

上一篇:教你如何来看单片机外设A/D转换器ADC0804时序图
下一篇:51单片机--LED类编程技巧续

推荐阅读

1、业界|智能机器人:机器人系统用高强度超声波靶向脑肿瘤Tami Freeman Gregory Fischer(左)和Christopher Nycz研究了一种用于治疗脑肿瘤的MRI兼容机器人系统原型,通过高强度治疗超声波向大脑提供基于针头的探针,以摧毁肿瘤。该机器人设计用于在MRI扫描仪内操作,以实现实时治疗指导。 由伍斯特理工学院(WPI)的首席研究员Gregory Fischer和奥...
实时示波器必须进行正确的配置以实现精确的抖动测量。在这里介绍一种可以应用于任何品牌实时示波器的分步流程,手动设置你的仪器来测量所有类型的抖动。虽然你可以向仪器制造商购买专门的抖动分析软件,以使用一个按钮或向导类型的方法自动配置你的仪器,但软件并不总是产生最佳配置。因此,自动配置的设置也应使用相同的下述流程进行验证。要正确配置您的...
  英国将再次提前燃油车禁售计划。据外媒报道,英国首相约翰逊或很快宣布,英国将在2030年前禁售汽油和柴油车。今年2月,约翰逊曾经将禁售计划从2040年提前到2035年。   在各国禁售燃油车的另一边,是新能源汽车的火爆——特斯拉市值超过丰田,蔚来汽车市值超过福特。   作为新能源汽车的重要基础设施,充电桩建设这些年同样迎来井喷。   11...
11月18日,中环半导体DW智慧工厂(三期)项目在滨海高新区开工。滨海发布消息显示,中环半导体DW智慧工厂(三期)项目总占地面积160亩,投资总额预计将超过30亿元,规划产能25GW,达产后年产值将超百亿元。项目建成后,中环半导体在滨海高新区的G12光伏硅片总体产能将超过50GW,成为全球最大的光伏单晶硅片生产基地。据介绍,该项目将继续发挥中环半导体G1...

史海拾趣

问答坊 | AI 解惑

基于LPC2104型CPU的汽车行使记录仪

摘要:介绍基于LPC2104型CPU的汽车行驶记录仪。该记录仪采用大容量闪速存储器作为存储载体,利用定时器中断方式来实现秒间隔的数据采集与存储,用利串行口中断方式实现与微机的数据通信。     关键词:汽车行驶记录仪;LPC2104;闪 ...…

查看全部问答∨

MAX2140内部ESD二极管的保护电路设计

在对MAX2140 SDARS接收器进行热插拔操作(接通电源或断开电源)时,可能使其内部静电放电(ESD)保护二极管失效,热插拔不是该器件的标准操作。但这种情况会发生在很多应用中,尤其是在汽车工业中,经常会进行热插拔的操作。本文分析了热插拔操作可能造 ...…

查看全部问答∨

用过PIC的请进

谁有PIC的学习群呀?说一下进去一起讨论一下吧…

查看全部问答∨

FPGA板的usb口与上位机的连接问题

FPGA板的usb口与上位机的连接问题:我买的FPGA开发板上,usb输出口是由引脚输出D+、D-信号直接到电脑的usb口上,可以吗?请指教…

查看全部问答∨

一个单片机串口通信问答

一个单片机串口通信问答 问题: 我现在正搞双机通信,不过遇到一个问题,问题是这样的: 这样就可以 while(TI==0); TI=0; …… …… 这样就不行,我用以下方法不能检测到TI=1,为何呀? for(i=0;(i<10)&&(TI==0);i++); TI=0; if( ...…

查看全部问答∨

求关于avr和tcp网络编程

本人没学过avr单片机,却选了《基于TCP/IP协议的力传感器弹性体疲劳测试远程监测》这个毕业设计来做。现在一头雾水。是否有童鞋有这方面相近的资料和论文。万分感激…

查看全部问答∨

2.4版本的内核模块驱动Makefile编写的奇怪问题

写了一个gpio驱动模块,放入内核源码包,可以重新编译内核,出现gpio.o模块,没问题。 使用命令行模式编译模块: arm-linux-gcc -D__KERNEL__ -DMODULE -DLINUX -I /home/fineshang/apro-kernel/include -c -o gpio.o gpio.c 也没有问题,但是使 ...…

查看全部问答∨

高价求购 Tornado V 2.2.1的序列号

高价求购 Tornado V 2.2.1的序列号 联系方式:站内消息.…

查看全部问答∨

如何改变设备电源状态

我想在WinCE下通过DeviceIOControl来改变LCD背光电源的状态以实现背光灯的亮灭控制。 bResult = DeviceIoControl(hDevice,  // device to be queried                    ...…

查看全部问答∨

成功移植ffmpeg 0.6到ARM平台

    ffmpeg已变成多媒体处理领域最有影响力的开源组件,接近50万行源代码的工程对ARM模拟器来说是个巨大的挑战,但多年的稳定性给了我很大信心。整个过程比较顺利,前后大约花2个半小时,包括在ARM开发板上验证。ffmpeg0.6的移植成 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved