历史上的今天

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

正在发生

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

发布者:CuriousTraveler 来源: 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时,给主程序设置一个断点,然后去响应中断请求,当完成中断的内容后,在返回断点处继续执行主程序。


关键字:单片机  程序  运行过程 引用地址:单片机中一个程序的运行过程详解

上一篇:什么是单片机?单片机应用范围广吗?
下一篇:汇编C语言混合编程经验总结

推荐阅读

随着手机的摄像头规格不断向高像素推进,每家厂家都面临着为了保持相机模组小尺寸,而必须要牺牲每个Pixel的感光面积的难题。当手机主摄由1.12uM向1.0uM换代时,这个矛盾变得尤为突出。为解决此问题,各家CIS厂商纷纷采用Binning Mode,4 Cell等各种手段来增加1.0uM Pixel产品的感光度, 然而这些技术不可避免的存在这样或那样的缺陷,比如不得不放弃PDAF...
前些天,和公司的小伙伴们体验了一下某品牌新车的自动泊车功能,说实话,这款车的表现像极了我练科目二倒库的样子。我就纳闷了,好歹是个具有L2级别的自动驾驶,咋就连个白线和黄线都分不清楚呢?当然,我不是在刻意黑这个品牌,因为自动驾驶汽车识别能力差的问题还是普遍现象。自动驾驶汽车的识别能力主要还是来自于视觉智能系统,视觉智能系统则是需要不...
环境:主机:WINXP开发环境:MDK4.23MCU:STM32F103CBT6说明:串口可以配置成用DMA的方式接收数据,不过DMA需要定长才能产生接收中断,如何接收可变长度的数据呢?方法有以下3种:1.将RX脚与一路时钟外部引脚相连,当串口一帧发完,即可利用此定时器产生超时中断.这个实时性较高,可以做到1个字节实时监测.2.不改变硬件,开启一个定时器监控DMA接收,如果超时则产生中断...
矢量网络分析仪是一种电磁波能量的测试设备。它既能测量单端口网络或两端口网络的各种参数幅值,又能测相位,矢量网络分析仪能用史密斯圆图显示测试数据,是射频领域使用非常广泛的仪器,被称为射频微波领域的万用表,为工程师们提供了极大的帮助。但是,了解矢量网络分析仪的工程师都知道,一台矢量网络分析仪价格可不便宜,所以在使用它时,Agitek技术工...

史海拾趣

问答坊 | AI 解惑

一种电流型DC/DC变换器的研制

来源:通信电源技术  作者:鞠志忠 任稷林等 1 引言     开关变换器通常采用电压型和电流型两种控制方式[1]。电压型控制器只有电压反馈控制,电流型控制器增加了电流反馈控制,电流型控制比电压型控制的 PWM 具有许多优点, ...…

查看全部问答∨

单片机与TA8435的步进电机细分控制方法

1 步进电机 步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变成角位移,即给一个脉冲,步进电机就转一个角度,因此非常适合单片机控制。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响, ...…

查看全部问答∨

SAW器件封装技术概述

1 引言 现今,随着整机尺寸的减小和元器件的高度集成,促进了元器件的小型化、薄型化。由于SAW(Surface Acoustic Wave)器件小型化并且有着出众的滤波功能,它们存许多领域的应用中扮演着非常重要的角包。小型化和多功能化是SAW器件发展的主要动力 ...…

查看全部问答∨

请问这个msgQReceive函数的返回值是什么?

请问这个msgQReceive函数的返回值是什么?…

查看全部问答∨

在wince6.0下有没有像平常手机的那种数字小键盘的英文输入法?

就是平常的2是abc,3是def那种输入法,这是要自己实现还是有现成的输入法还是系统定制的时候有哪个选项? 请各位帮下忙,平常比较来论坛少分也不多,麻烦知道的说下.…

查看全部问答∨

推荐一本用PowerPC开发通信设备的书,我还是第一次见同类型的书

嵌入式设计及通信设备开发详解——基于MPC82XX处理器 卓越的链接 http://www.amazon.cn/mn/detailApp?qid=1238487283&ref=SR&sr=13-1&uid=168-0888845-7367438&prodid=bkbk941360 当当的链接 http://product.dangdang.com/product. ...…

查看全部问答∨

内存映射文件

谁在EVC 中实现过内存映射文件?我想将数据保存到配置文件中.用文件操作的方式,数据很多的时候,速度会很慢.现在我想试一下内存映射方式,不知道如何通过内存映射文件来操作配置文件,请大家发表意见.…

查看全部问答∨

WinCE中如何禁止/开启Edit自动换行功能

如题,我想实现PC上记事本的自动换行功能。…

查看全部问答∨

本人是应届毕业生,拿些什么项目去应聘呢?

本人是重点本科2008届的即将毕业生,由于大学没好好学,就过了四二级,找工作一定很难,想找两个单片机项目去面试,这样有点优势,但是不知道找些什么项目,我自己熟悉下,然后变成自己的去面试,大家给个建议吧!另外我想到深圳去找单片机的工 ...…

查看全部问答∨

一个非常奇怪的keil c51串口中断问题!

一个非常奇怪的keil c51串口中断问题! 比如我的程序如下: uchar b[10]; #define a4 0x03 void fun1(void) interrupt 4 { fun2(2); } fun2(uchar a2) { while(a2--) { .... } fun3(a4); } void fun3(uchar a3)//这个函数无论有没 ...…

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

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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