打印

用KEILC 多年,遇到了这么一个问题。

[复制链接]
1968|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dudongdao|  楼主 | 2009-7-29 22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教一个KEIL的问题.问了好多人,没有人给出解决办法,请各位隐士大侠们指点迷津~~~
     用STC12C5404~~  程序量有4K,EEP区域有2K~~  由于程序量不够,想把一些表格数据放到EEP中,本来想用_at_来指定绝对地址,但是指定了绝对地址就不能给绝对地址赋初始值,所以想C中嵌入汇编来解决,遇到下面问题:
   程序区地址:0-1024*4  4K
   EPP区地址:0X2E00--0X2F00  2K
   用嵌入汇编指令
   #pragma  asm
   org 0X2E00
   DB 00H,02H.........
   #pragma  endasm
   这样写后编译没问题,但看编译出来的HEX文件,程序都放到0X2E00之后了
   我想把程序放前4K,数据表格放0X2E00之后~~  有没有好办法,问了STC的
   老姚,他说这个芯片是我设计的,但我只会汇编~~  不会C~~ 
   请高手指点一下~~
    

相关帖子

沙发
jerkoh| | 2009-7-29 22:38 | 只看该作者

re

STC12C5404  的EEPROM 部分不这么用的吧

有10几条指令 配置檫 读 写 PDF上有代码的

像操作EEPROM一样

你要查这些表

得像操作EEPROM一样 读出来后再使用

偶且如果程序 不停的读写这所谓的EEPROM 估计寿命不长的



使用特权

评论回复
板凳
dudongdao|  楼主 | 2009-7-29 22:53 | 只看该作者

你没看明白啊

    我拿EEP当数据表格用~~  我想烧程序的时候直接烧进去~~~
    你说的对~~  得读出来才能用~~  但是前提是你先烧一个有效值进去~
    
   有些人和我说,你先写一个初始化EEP的程序,烧进去之后再烧一个FLASH程序。 还有人说,你用程序去初始化EEP区域。  这些办法是能达到目的~~ 但是第一种太麻烦~~  第二种我程序量本来就不够了~~~  还有人说直接改HEX文件,直接用键盘敲进去~~  也是太笨了啊~~~
    烧程序的时候直接烧进去是最普通最简洁的办法了~~~
    请高手指点一下~~~  我就是想直接烧进去~~~  STC烧写软件判断HEX文件的地址来区分程序和EEP数据。

使用特权

评论回复
地板
cool_coder| | 2009-7-29 23:19 | 只看该作者

EEPROM和FLASH不在同一个地址空间,

KEIL多年没用了,不知道是否支持声明EEPROM变量。查查编译器手册吧。

使用特权

评论回复
5
jerkoh| | 2009-7-29 23:29 | 只看该作者

re



ROM 不够 ,想办法优化代码(这个当然 可行性差些) 
但改大型号的 兼容的

STC12C5406
STC12C5408
STC12C5410
STC12C5412
这才是正路啊

查ROM表     普遍用在循环里面 一直操作

10W次 够一直去读写擦吗?

使用特权

评论回复
6
dudongdao|  楼主 | 2009-7-30 00:07 | 只看该作者

不是解决问题的好办法啊

优化程序是不可能的了~~   
改大型号要花钱啊~~
读多少次都没事的~~ 写的话一般EEP都是10次,不知道宏晶如何,但是10W肯定是一般标准,你要求太高了。

谢谢你的建议~~  同时也谢谢我在3楼列举那些人给的建议。

我只想能用最简单的办法解决,并且是可行的,真是最一般的方法了。

使用特权

评论回复
7
ruiwei0201| | 2009-7-30 16:24 | 只看该作者

汇编里不用指定段的吗?

如: segment xdata之类的。

使用特权

评论回复
8
dudongdao|  楼主 | 2009-7-30 16:45 | 只看该作者

嗯~~ 能制定地址吗~~

可以制定地址并且不影响其他地址吗~~  你给个例子好吗~~  有明白我的问题吗?  有的话就给个例子,谢谢,看得出,你是高手。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

413

帖子

1

粉丝