有关单片机和keil的问题!

看到别人一个单片机里面可以下载进两个可执行代码文件,有点不解,想问问大家,那是如何做到的?请大家不吝赐教,求方法!希望哪位大哥能帮详细解释一下!还有那个术语上叫做什么?如果我也想在51单片机上这么做,该怎么做?回答的好,可追加分数!

你看错了吧?
如果是Keil编译器,那只是说一个C文件包含了main()函数,别的C文件中的函数被这个main()调用,最后生成的只是一个HEX文件,不论51还是ARM单片机都这样。
如果是ARM9或者11甚至Cortex-A系列的ARM处理器,要操作系统支持才能运行,这操作系统本身就是很多个可执行代码组成的,比如WinCE,你可以往这个系统中加入几十个可执行程序,然后根据自己的选择来运行其中某一个。普通的51单片机和Cortex-M系列的单片机是没法做到的,这不是我们的水平低,而是单片机本身不允许这样。追问

大哥,别生气,我没说你水平低,我说的水平低是对那个说“没意思”的人说的,没意思乱回答,废话一大片,觉得没意思就别回答。对于你的回答我还是比较满意的,分数就给你吧!我说的那个问题,其实是看到别人给同一个arm芯片下载了两个程序进去,下载完一个,再下另一个,然后硬件就可以工作了!不知道大哥对这点懂不懂?

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-23
首先告诉你一个单片机只能下载一个可执行代码文件,如果你看到的那个单片机可以做两个功能的事儿,那是因为它的程序里写了两个不同的功能在一起,当某个条件下执行功能一,某个条件下执行功能二罢了(可通过软件或硬件控制)。
一般一个单片机在烧写前,都会执行擦除,清空里面之前的内容。不过现在有一些单片机支持升级,就是在烧写的时候只烧写里面有改动的部分程序代码。追问

看来你们在这块还是低手,我见过高手确实已经做到了!

追答

下面那位说得很对,单片机是从0x0000地址开始执行的,你搞两个可执行程序进去,你说你让它怎么工作(什么情况下执行哪个程序?)。
如果你说有,那你告诉我那个单片机的型号是什么?到时我给那生产商打电话去问下就可以确定了。

第2个回答  2012-05-23
没意思追问

你直接说不会就有意思了?

第3个回答  2012-05-23
单片机的启动代码永远是从0x0000地址开始执行程序,如果是两个可执行文件,它另一个的起始地址应该是多少才能执行啊,0x0000地址只有一个。追问

是这么个意思,两段代码的起始地址是不同的!所以两段代码存放的地址也是不同的!注意是存放的地址!

追答

存放你要运行吧,启动代码总是从0x0000开始执行的,那单片机怎么知道要执行哪个程序呢?

第4个回答  2012-05-23
不可能

单片机的问题,关于KEIL和单片机的内存
这个问题的理解主要有两点:1、单片机的特殊功能寄存器。2、KEIL软件的sfr变量声明的用法。sfr P0=0x80;解释:1、特殊功能寄存器中,0x80存储的是P0口的状态。2、这个语句将P0定义为一个变量,其内容为特殊功能寄存器的0x80寄存器。3、P0可以更改名字例如:sfr PORT0=0x80;这样在程序中使用的时候,P...

单片机Keil问题
先回答你第一个问题:DATALOOP: MOV @R0,A DJNZ R0,IDATALOOP 第一条是将A中的内容放入R0所指的地址中,如果R0的数值比较大的话,用单步运行就需要很长时间。有个方法可以解决,即在KEIL调试时,修改R0里的数值,将它变成1或者01H,就可以出循环了。第二个问题:你的程序是实现P1循环→P3循环→P...

用于开发STM32、开发keil软件和开发C51的keil软件相冲突怎么解决?_百度...
\\r\\n打开stm32工程当然没有问题.\\r\\n \\r\\n第二个方法: 让keilMDK兼容51的工程,只要一个keil就都能编译51和stm32的工程了:\\r\\n1、安装keilC51,安装目录 C:\\keilC51\\\\r\\n2、安装keilMDK,安装目录 C:\\keilMDK\\\\r\\n3、把 C:\\keilC51\\ 里面的 C51 文件夹复制到 C:\\keilMDK\\ 里\\r\\...

STM32单片机在Keil5下仿真的问题解决
经过多次迭代和测试,这款编程器最终取得了用户的一致好评。它不仅适用于STM32系列、LPC系列、K60系列、HT32系列、NV32系列、EFM32系列等众多ARM Cortex-M系列单片机的调试,还能兼容市面上绝大多数ARM Cortex-M系列单片机。在稳定性、兼容性以及成本控制方面,这款编程器都展现出了优秀的表现。随着这款...

keil软件无法连接stc89c52的原因有哪些?
stc89c52单片机下载程序时一直停在 “正在检测目标单片机”,是设置错误造成的,解决方法如下:1、首先打开电脑中的keil软件,点击“工程”新建一个工程,命名为“点亮LED”,点击确定。2、出现一个选择芯片型号的对话框,选择"Atmel"里面的“89C52”,点击确定进行下一步。3、点击如图所示,新建一个文件,...

keilc开发单片机程序有哪些优缺点
keilc开发单片机程序会大大缩短开发周期,其优点是可读性好,移植容易,使用是普遍的,因为它同时兼顾了多种高级语言的特点,运算速度非常快。缺点是占用资源较多,因为指定在编码之后会变成很多条机器码,就很容易导致空间不足。keilc开发单片机程序要注意寄存器不能重复使用,否则程序的运行会变得不正常。

Keil与单片机连接上了,可以下载程序到单片机,但不能控制单片机程序的运 ...
如果你没进入硬件仿真模式,就和上面那大哥说的一样,程序自己在片子里跑,当然看不见。如果你已经进入了硬件仿真模式,就要看看有没有点RUN。

关于单片机,keil 编译程序时提示 是什么意思?
第1步:打开 keil 进入工程界面,获取 CID 号码。 点击“File” 下选择“license management ” 进入账户管理界面: 复制 CID 号码 第2步:复制 CID 号码到注册机的 CID. 选择“TAGET“为 C51 这样就配置为: 点击“Generate”按钮,生成 LIC 代码如下: 复制 LIC 代码。第3步:将复制好的 LIC ...

keil编译没有错误为什么烧进单片机不运行
Keil没有报错只能说明逻辑没有错误,但是不能运行有两方面原因:第一是你的程序设计有问题。第二是单片机硬件电路的问题。请在单片机可以正常工作的情况下,检查程序中各个子程序,引脚定义等等。

keil是不是关于单片机的开发软件
KEIL 是专门针对单片机,ARM等一些器件的开发工具,主要的作用是程序的编写,编译,仿真,调试等。是一个综合的开发平台。你所说到的和单片机无关的程序是否可以运行,这个需要实际的例子,只要没有语法错误,函数都有定义(库中存在)。这样就可以运行的,当然这里说的运行不是在在电脑上出现控制台的黑...

相似回答