我想再请教你;我过去用老式编程器烧写,为何只需obj文件,而现在写at89c2051单片机为何要用hex文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想再请教你;我过去用老式编程器烧写,为何只需obj文件,而现在写at89c2051单片机为何要用hex文件?相关的知识,希望对你有一定的参考价值。

我想再请教你;我过去用老式编程器烧写,为何只需obj文件,而现在写at89c2051单片机为何要用hex文件?我现在学用leil uvision2编译同样源程序时,得到的hex文件的字节数为何如此大,还大过at89c2051的可擦写Rom(2048字节)呢?我的工程项目在构造目标时的输出窗口如下:
构造目标'Target 1'
TC89-10J.ASM...
连接中...
*** WARNING L5: CODE SPACE MEMORY OVERLAP
FROM: 0000H
TO: 0012H
正在从 "CGCJJ-2" 产生 HEX文件...
"CGCJJ-2" - 0 错误(s), 1 警告(s).你能帮我指出吗?这种错误是怎么一回事呢?

代码中..
有重叠的地址

另外老式编程器要的是 bin文件不是obj文件..

hex文件可以简单的转化成bin文件.

bin文件是没有..各种校验的,,文件如果部分破会不能检测出来.
hex更加的安全,里面都带有校验,部分破会.
编程器多半会告诉你,你的文件有问题(有些垃圾编程器软件不会)

hex文件是 ascii形式存放的.在加上检验.文件肯定比bin的大.
bin是存二进制文件..把内容一一放入 单片机存储器就可以执行
hex文件..编程器软件.会自动帮你解码文件(解码的最终结果就是bin文件的内容)

网上有相互转化的工具 bin2hex/ hex2bin
参考技术A 以前KEIL在没注册的时候倒是不能写超过两K的代码哦。这hex大于两K是很正常的,比如说,你将2K的数据存入FLASH中,你就需要把他们写在程序当中吧,而关于这段代码的长度绝对长于2K。 参考技术B 需要什么 文件由编程器的软件决定的。有的编程器除了可以用HEX文件,还可以用BIN文件烧写 参考技术C 你是不是编译了两个文件,0000H到0012H的地址重叠了来自:求助得到的回答 参考技术C 是你的编程器变了吧,有些编程器要hex文件,有些要obj文件。
“CGCJJ-2" - 0 错误(s), 1 警告(s).”只是警告而已,没有错误产生。
“正在从 "CGCJJ-2" 产生 HEX文件...”不是说已产生hex文件了吗,那就是可以执行文件啦。而这些警告有时候是可以忽略的,而有时是由于个人疏忽例如不小心搞错了等等造成的。本回答被提问者采纳

以上是关于我想再请教你;我过去用老式编程器烧写,为何只需obj文件,而现在写at89c2051单片机为何要用hex文件?的主要内容,如果未能解决你的问题,请参考以下文章

GORust 这些新一代高并发编程语言为何都极其讨厌共享内存?

GORust 这些新一代高并发编程语言为何都极其讨厌共享内存?

GORust这些新一代高并发编程语言为何都极其讨厌共享内存?

请教下为何MSDN里查不到GetAdaptersInfo这个API,

stm32用什么软件编程烧写比较好呢?

stm32用什么软件编程烧写比较好呢?