历史上的今天
返回首页

历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2018年10月09日 | 单片机中一个程序的运行过程详解

2018-10-09 来源:eefocus

单片机中一个程序的运行过程分为取指令,分析指令和执行指令几个步骤。

取指令的任务是:根据程序计数器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就是这样一条一条地执行指令,完成所有规定的功能。

ROM是只读存储器,用于存储程序代码;RAM是数据存储器,用于存放单片机运行时的数据,也就是说RAM中的数据掉电(复位)后就会消失,而ROM中的数据不会。

中断最主要的作用是保护现场,计时器用于精确定时和长定时,如果你看不懂,在问我!

中断是通过硬件来改变CPU的运行方向的。计算机在执行程序的过程中,当出现CPU以外的某种情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”。

“中断”之后所执行的相应的处理程序通常称之为中断服务程序或中断处理子程序。

原来正常运行的程序称为主程序。

主程序被断开的位置(或地址)称为“断点”。

引起中断的原因,或能发出中断申请的来源,称为“中断源”。

中断源要求服务的请求称为“中断请求”(或中断申请)。

当硬件电路将中断信号送给cpu时,给主程序设置一个断点,然后去响应中断请求,当完成中断的内容后,在返回断点处继续执行主程序。


推荐阅读

史海拾趣

安纳森(AnaSem)公司的发展小趣事

随着技术的不断成熟和市场的逐步扩大,安纳森开始将目光投向更广阔的全球市场。公司积极与全球各地的合作伙伴建立战略合作关系,共同开拓市场。同时,安纳森还设立了多个海外研发中心和销售网点,以便更好地了解当地市场需求,提供更贴近用户的产品和服务。这一系列的全球化布局,不仅提升了安纳森的品牌影响力,也为其未来的发展奠定了坚实的基础。

Epitex Inc公司的发展小趣事

Epitex Inc公司成立于XXXX年,由一群热衷于电子技术的工程师和企业家共同创立。当时,电子行业正处于快速发展的阶段,各种新技术层出不穷。Epitex的创始人看到了电子材料在半导体制造中的巨大潜力,于是决定专注于研发和生产高性能的电子材料。

在公司创立初期,Epitex面临着资金、技术和市场等多方面的挑战。然而,通过不懈的努力和持续的创新,Epitex逐渐在电子材料领域取得了突破。他们研发出了一种新型的电子封装材料,具有优异的耐热性和绝缘性能,迅速在市场上获得了认可。

FASTRAX公司的发展小趣事

1999年,FASTRAX在芬兰赫尔辛基成立,专注于为全球设备生产商和设计商提供高性能的GPS接收模块。公司凭借对GNSS技术的深入理解,迅速在市场中崭露头角。其首创的带天线GPS接收模块以其高效、稳定的性能,赢得了客户的广泛赞誉。

Fairview Microwave Inc公司的发展小趣事

随着公司业务的不断拓展,Fairview Microwave开始面临来自同行的竞争压力。为了保持竞争优势,公司决定从源头抓起,严格把控产品质量。他们投入大量资金引进先进的生产设备和技术人才,建立起一套完善的质量管理体系。同时,公司还积极开展与高校和科研机构的合作,不断吸收新技术、新工艺,确保产品的技术领先性和可靠性。这些努力使得Fairview Microwave的产品在市场上获得了广泛认可,逐渐树立起了高品质的品牌形象。

芯旺微电子(ChipON)公司的发展小趣事

在汽车电子领域,AEC-Q100品质认证是衡量MCU产品质量的重要标准。芯旺微电子通过不懈的努力和技术创新,成功研发出满足AEC-Q100品质认证的MCU产品,并广泛应用于汽车前装市场。这一突破不仅证明了芯旺微电子的技术实力,也为其赢得了国内外众多知名汽车厂商的信赖和合作。

Amkor公司的发展小趣事

近年来,芯旺微电子在资本市场也取得了显著的成果。公司先后完成了多轮融资,吸引了众多知名投资机构的关注和投资。同时,芯旺微电子也在积极推进上市进程,计划通过资本市场进一步拓展业务规模和提升品牌影响力。这些战略布局的实施不仅为芯旺微电子提供了更多的资金支持和发展动力,也为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

运算放大器

本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 呵呵 今年大赛的原件清单有运算放大的 给大家发个运算放大的资料 希望对大家有所帮助!  …

查看全部问答>

AIGaN/GaN H EMT功率放大器设计

在小信号 参数不适于微波功率放大器的设计而大信号 参数不易获得的情况下,利用ADS软件,采用负载牵引法和输入端共轭匹配, 成功的设计出A1GaN/GaN HEMT微波功率放大器。为了解决晶体管端口出现负阻的问题,设计了输入输出端并联电阻和反馈网络两 ...…

查看全部问答>

猎头职位:赴美国工程师!咨询13381085719 13381085771刘先生

猎头职位:赴美国工程师!咨询13381085719 13381085771刘先生…

查看全部问答>

使用STC12C5410AD产生可调占空比PWM问题

//使用stc12c5410ad输出PWM波形,系统时钟用27MHz,输出的PWM固定频率是8.7kHz,可调占空比 #include\"stc12c5410ad.h\"#define uchar unsigned char#define uint unsigned intuchar table[]={0xac,0x80,0x03,0x03,0x80,0xac};//占空比 void main ...…

查看全部问答>

upsd内部sram数据保存问题

如题,PC2脚接一电池,掉电情况下电池的电压下降得比较快(芯片功耗很大),当电压下降到低于2v时,就会丢数据了。哪位大哥了解的说一下啊…

查看全部问答>

基于WEB平台的GPRS、CDMA无线LED信息发布系统

一、概述 由于传统的LED 显示屏的信息输入只能通过数据线与电脑直接连接来进行,因此对于传统LED显示屏来说不能满足远程信息实时发布的需要,因而不能构建大规模的联网式LED 屏信息发布系统。由厦门宇能科技有限公司开发的基于WEB平台 ...…

查看全部问答>

新手问一个关于data,idata,xdata的问题

由于程序里面定义了一些比较大的idata类型的全局变量,导致256字节的ram不够用了。选择的是small模式,在不考虑优化的情况下,可以把这里的idata类型变量随意的改为xdata类型吗?…

查看全部问答>

SI4432直接模式

有没有哪位大虾做过Si4432直接模式的,给小弟指导一下啊,我用si4432做串口透明传输,如果用FIFO模式,串口速率达到9600bps的时候,空中速率要很高啊,我改用直接模式,但不知道咋个弄,资料上介绍很少,而且我是刚接触这块儿不久的一个菜鸟,各种 ...…

查看全部问答>

电源设计小贴士 2:驾驭噪声电源

无噪声电源并非是偶然设计出来的。一种好的电源布局是在设计时最大程度的缩短实验时间。花费数分钟甚至是数小时的时间来仔细查看电源布局,便可以省去数天的故障排查时间。图 1 显示的是电源内部一些主要噪声敏感型电路的结构图。将输出电压与一个 ...…

查看全部问答>

2440学习记录(二)vivi的编译体验

本帖最后由 lonerzf 于 2014-7-17 17:40 编辑 vivi的编译主要就是体验一下这个配置过程。 为了更多遇到问题,这里不用CentOS,而用ubuntu 10.04。 据说编译vivi只能用cross-2.95.3.tar.bz2这个交叉编译器。 已经有人上传过了,下载地址:https ...…

查看全部问答>