A. 单片机应用程序一般存放在哪一个存储器中
ROM。只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。
ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。ROM所存数据稳定 ,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。
(1)程序在单片机扩展阅读
单片机的数据存储器由读写存储器RAM组成。其最大容量可扩展到64k,用于存储实时输入的数据。8051内部有256个单元的内部数据存储器,其中00H~7FH为内部随机存储器RAM,80H~FFH为专用寄存器区。
实际使用时应首先充分利用内部存储器,从使用角度讲,搞清内部数据存储器的结构和地址分配是十分重要的。因为将来在学习指令系统和程序设计时会经常用到它们。
8051内部数据存储器地址由00H至FFH共有256个字节的地址空间,该空间被分为两部分,其中内部数据RAM的地址为00H~7FH(即0~127)。
而用做特殊功能寄存器的地址为80H~FFH。在此256个字节中,还开辟有一个所谓“位地址”区,该区域内不但可按字节寻址,还可按“位(bit)”寻址。对于那些需要进行位操作的数据,可以存放到这个区域。从00H到1FH安排了四组工作寄存器,每组占用8个RAM字节,记为R0~R7。
B. 单片机中的程序是以什么形式存放在单片机
单片机是
哈弗结构。
同时读取程序存储器和数据存储器。
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。
程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。
C. 单片机中一个程序的运行过程
单片机中一个程序的运行过程分为取指令,分析指令和执行指令几个步骤。
取指令的任务是:根据程序计数器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中的数据不会。
D. 单片机里面有程序吗程序怎么才能读出来
最早的单片机里面是没有程序的,程序是在外置的程序存储器里面。现在大多数单片机都把程序区做在片内,做到真正的单片机。早期的单片机都是一次性写入(OTP)的,现在很多都是FLASH的,可以反复写的。最早的单片机是没有加密的,是可以直接读出来2进制的机器码,直接就可以写入另外一个单片机中。现在基本上都做了加密,正常的去读是读不出来的。
E. 单片机应用程序的开发步骤
具体步骤如下:
1、首先,开启我们的keil软件,具体的安装步骤就不做太多的介绍了;
开启后,点击菜单栏上的Project选项,创建我们的工程,如图所示;
编译完成后,在我们的文件夹下找到.hex的文件,将其烧写到我们的芯片中即可。
F. 如何把程序下载到单片机
以stc的单片机为例:
1、用keil编程软件写好程序,编译输出为hex和二进制文件
2、用串口电平转换板(常用MAX232芯片来做),把电脑后面的com口和单片机的(Rxd、Dxd引脚)相连,单片机还要接晶振和电源。
3、在电脑运行stc公司提供的STC-ISP软件,把前面编译好的hex文件装到单片机里。
提到的软件都可从网上下载获得,电平转换部分可以自己做也可以买编程器。
G. 怎么把程序烧写到单片机里去
现在用的单片机用的都是电可擦可编程只读存储器,英文简称:eeprom,或称
e2prom,所谓电可擦,就是通电就把之前的程序擦除掉了,所以,你只要再次烧写其他程序进去,单片机会自动删除原先的程序的。
H. 怎么把程序导入单片机中
如何将已编好的程序块导入源文件,有两种方法:
1.打开所要导入源文件的功能块,在LAD/STL/FBD编辑窗口中选择菜单FILE-->Generate Source...,输入源文件名,选择要导入的块,点击OK.后就可以在工程管理器里面的SOURCE项下找到刚才生成的源文件.打开即可
2.首先在工程管理器里面的SOURCE项建立一个源文件(打开SOURCE项,菜单:INSERT-->S7 SOFTWARE-->STL SOURCE).打开,菜单:INSERT-->BLOCK,在打开的界面选择需要导入的块.结果同上
I. 单片机应用程序一般存放在
单片机应用程序一般存放在单片机内部的程序存储器中(可能是FLASH存储器,也可能是EEPROM,可能是EPROM,也可能是PROM)