单片机中一个程序的运行过程
kuaidi.ping-jia.net 作者:佚名 更新日期:2024-08-30
单片机中一个程序的运行过程
取指令的任务是:根据程序计数器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中的数据不会。
单片机中一个程序的运行过程
答:开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,0000H单元中已...
单片机如何进行工作
答:详细来说,单片机的工作流程可以大致分为以下几个步骤:1. 电源启动与复位:当单片机接通电源后,它会首先进行一个复位操作,将所有内部寄存器设置为一个预定义的初始状态。这是为了确保单片机从一个确定的状态开始执行。2. 程序加载:接着,存储在单片机内部或外部存储器中的程序会被加载到内存中。这些程...
51单片机如何用一个按键控制一段程序的运行与停止
答:首先,你需要为你的项目创建一个新的文件,这是基础步骤,它将承载你的代码逻辑(1、在51单片机项目中,新建一个文件用于存放程序代码。)。接着,配置你的按键和LED。假设你选择的按键S1连接到P3的第2引脚,当按键按下时,可以通过编程使其对应P1的第5引脚点亮LED(2、按键S1的输入设置为P3^2,LED...
单片机的开发过程包括哪些步骤?
答:步骤大体如下:1.新建,进行程序的编写 2.连上仿真器或烧写器,这一步有可能要对仿真器或烧写器进行设置,具体可看它们的使用说明 3.对程序进行编译,这一步会自动检测你的程序有没错,如果有错,是不能进入下一步的.如果你用的是仿真器,这一步编译成功后就可以直接运行进行在线调试了。4.如果用...
单片机应用程序的开发步骤是什么?
答:1:针对需要开发的设备构建原理图,可以用AD09,PROTEUS 软件 2:针对需要实现的功能编程,使用KEIL编写调试(51,AVR单片机)3:程序编好测试,测试包括功能测试,老化测试,可靠性测试等 单片机编程就是简单的嵌入式软件开发过程,首先你应该精通C语言(当然也有使用汇编语言的,不过主流还是使用C的),...
C语言中,程序的一个完整的运行过程是怎样的?
答:1、一个C语言源程序可以由一个或多个源文件组成。2、每个源文件可由一个或多个函数组成。3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源...
51单片机如何用一个按键控制一段程序的运行与停止
答:1、创建项目文件。2、按键:S1=P3^2,点亮: led=P1^5。3、创建C语言主函数。4、创建循环效果,检测效果。while(1) {}。5、选择输出的效果。6、当按下一个按键时,关闭灯,整个程序运行,再按一次,程序停止。
单片机复位后怎么运行程序?
答:在单片机的运行过程中,复位是一个重要的操作。当单片机复位后,它会重新启动,清除掉之前的运行状态,然后从一个特定的地址开始重新运行程序。这个特定的地址通常被称为启动地址或复位向量。这个启动地址是预先设定好的,不同的单片机可能有不同的启动地址。例如,对于某些ARM架构的单片机来说,启动地址可能...
简述CPU执行一条指令的过程
答:1.取指令阶段 取指令(InstructionFetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。程序计数器PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增:若为单字长指令,则(PC)+1àPC;若为双字长指令,则(PC)+2àPC,依此类推。2....
单片机的这个主程序是怎样运行的,我的理解是定时器和while{}里面的程序...
答:while{}是一个死循环,然后定时器要先设定定时时长。程序在死循环里跑然后每当定时时间到的时候就中断来处理定时器的程序,同时重新更改定时值。然后跳出中断再回到主程序while{}中中断的位置继续执行。如此往复!
还是冯诺依曼的结构
存储器,运算器,输入输出
我觉得是这样的,单片机的定时器,它的计数过程是相当于电脑里面一个后台运行的东东一样。在计数时单片机同时在执行其他程序,计数周期就是单片机的一个机器周期。
当我们给定时器初始化后,一但打开(这指内部定时器方式,还有外部脉冲计数方式,都差不多),下个机器周期到来便累加一次。计满时,即定时器十六位为0xffff,再计一次后,相应中断标志置1(TF0、TF1),若之前开启了相应的定时器中断(ET0、ET1)且有相应中断服务函数,单片机会暂停当前正在执行的程序,进入相应中断服务函数里面执行,若定时器还在开启状态,则仍会计数。中断执行完后回到暂停处的主程序里。在一个机器周期一般会做六件事情,其中有项是检查访问内部寄存器,包括中断标志。
取指令的任务是:根据程序计数器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中的数据不会。
答:开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,0000H单元中已...
答:详细来说,单片机的工作流程可以大致分为以下几个步骤:1. 电源启动与复位:当单片机接通电源后,它会首先进行一个复位操作,将所有内部寄存器设置为一个预定义的初始状态。这是为了确保单片机从一个确定的状态开始执行。2. 程序加载:接着,存储在单片机内部或外部存储器中的程序会被加载到内存中。这些程...
答:首先,你需要为你的项目创建一个新的文件,这是基础步骤,它将承载你的代码逻辑(1、在51单片机项目中,新建一个文件用于存放程序代码。)。接着,配置你的按键和LED。假设你选择的按键S1连接到P3的第2引脚,当按键按下时,可以通过编程使其对应P1的第5引脚点亮LED(2、按键S1的输入设置为P3^2,LED...
答:步骤大体如下:1.新建,进行程序的编写 2.连上仿真器或烧写器,这一步有可能要对仿真器或烧写器进行设置,具体可看它们的使用说明 3.对程序进行编译,这一步会自动检测你的程序有没错,如果有错,是不能进入下一步的.如果你用的是仿真器,这一步编译成功后就可以直接运行进行在线调试了。4.如果用...
答:1:针对需要开发的设备构建原理图,可以用AD09,PROTEUS 软件 2:针对需要实现的功能编程,使用KEIL编写调试(51,AVR单片机)3:程序编好测试,测试包括功能测试,老化测试,可靠性测试等 单片机编程就是简单的嵌入式软件开发过程,首先你应该精通C语言(当然也有使用汇编语言的,不过主流还是使用C的),...
答:1、一个C语言源程序可以由一个或多个源文件组成。2、每个源文件可由一个或多个函数组成。3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源...
答:1、创建项目文件。2、按键:S1=P3^2,点亮: led=P1^5。3、创建C语言主函数。4、创建循环效果,检测效果。while(1) {}。5、选择输出的效果。6、当按下一个按键时,关闭灯,整个程序运行,再按一次,程序停止。
答:在单片机的运行过程中,复位是一个重要的操作。当单片机复位后,它会重新启动,清除掉之前的运行状态,然后从一个特定的地址开始重新运行程序。这个特定的地址通常被称为启动地址或复位向量。这个启动地址是预先设定好的,不同的单片机可能有不同的启动地址。例如,对于某些ARM架构的单片机来说,启动地址可能...
答:1.取指令阶段 取指令(InstructionFetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。程序计数器PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增:若为单字长指令,则(PC)+1àPC;若为双字长指令,则(PC)+2àPC,依此类推。2....
答:while{}是一个死循环,然后定时器要先设定定时时长。程序在死循环里跑然后每当定时时间到的时候就中断来处理定时器的程序,同时重新更改定时值。然后跳出中断再回到主程序while{}中中断的位置继续执行。如此往复!