总觉得KEIL编译时超过2K(破解版)后有问题,求高人指点
各位高人:我在此论坛之前发了两个贴子!我本人感觉到用KEIL编译的时候,程序不能太长,超一定长度就出现问题,一直在STARTUP.A51里转悠!总跳不到MAIN()中来!不知道大家有否同感?求答案中...
注: 我是用新华龙的C8051F330比较多!
谢谢楼上帮忙可是我加了那语句后,问题依旧!
快倒了。。。 本帖最后由 and001 于 2012-6-26 11:50 编辑
自己顶下先,自己修改过!好象还是有问题,
改前:
.....
IF IDATALEN <> 0
MOV R0,#IDATALEN - 1
CLR A
IDATALOOP: MOV @R0,A
DJNZ R0,IDATALOOP
ENDIF
....
改后: // 不清7F个RAM.
IF IDATALEN <> 0
;MOV R0,#IDATALEN - 1
;CLR A
IDATALOOP:
;MOV @R0,A
;DJNZ R0,IDATALOOP
ENDIF
可还是跳不到MAIN()
请高人指点? 已经注册过了!!
自己修改一下start。a51 估计你没用注 册 机 注册 求高人指点!是否也碰到类似问题!! 自己下载一个,然后用注册机注册!不要用别人“破解”的;
怀疑:别人破解的是不是注册之后连目录一起拷贝打包的?然后你解压之……这样的话电脑不同可能有很多……麻烦! 谢谢楼上的朋友!我按你要求试试看! 我用的2。0版本好像没有啥问题 我是用新华龙的C8051F330仿真! VER2.0应该不支持!
是不是和IC也有关系呀! 好像没有这个问题的吧? 330需要启动后首先禁止看门狗。 直接不要新建项目时生成的劳什子STARTUP.A51,没用的。 本帖最后由 and001 于 2012-6-27 20:59 编辑
11楼说的好象有些道理!但不知道默认情况下是多久喂一次狗?如果这样我感觉到是一个IC的缺陷
真是不好意思!也许我弄错了
事实上我装了EUTAL给地址软件,其实效果是一样的,为什么好象程序没在STARTUP。A51里转悠呢原来是设置问题
刚装完后,我的默认设置是这样的(看附件图片),其实默认设置是真是不好意思!也许我弄错了
事实上我装了你给地址软件,其实效果是一样的,为什么好象程序没在STARTUP。A51里转悠呢原来是设置问题
刚装完后,我的默认设置是这样的 (看附件图片)
但确实给人有程序跑的流畅的感觉!遗憾的是两不是,即不是软件仿真,有不是硬件仿真!并且不能进入软件中断处理代码中
哎!这鬼KEIL让我费尽心思了。。。。 烦死了。。
和Keil无关, C8051F系统的喂狗时间太短,而且是上电就工作的.如果程序里有大量全局变量(比如数组)要初始化, 这部分工作要在startup.a51里完成, 所以会导致还没执行到main()函数, 系统就复位了. 所以解决办法是在startup.a51里先关狗.
CSEG AT 0
?C_STARTUP: LJMP STARTUP1
RSEG ?C_C51STARTUP
STARTUP1:
MOV 0D9H,#00h; 加入这行, 关开门狗, closeWDT
IF IDATALEN <> 0
MOV R0,#IDATALEN - 1
CLR A
IDATALOOP: MOV @R0,A
DJNZ R0,IDATALOOP
ENDIF 请高人帮忙呀! 本帖最后由 and001 于 2012-7-1 20:59 编辑
谢谢楼上帮忙可是我加了那语句后,问题依旧!快倒了。。。
我把问题图片再上传一下
好象看不到了。。 程序在软件仿中中出现问题,
特别提示:我的MCU IC是C8051F330D 好象看不到了。。继续上传图3 好象看不到了。。继续上传图4 好象看不到了。。继续上传图5 好象看不到了。。继续上传图6, 请高人继续帮忙指点
期待中。。。 依然等待高人帮忙.... 软件仿真也是这样? 程序打包发上来看看. 本帖最后由 and001 于 2012-7-2 20:52 编辑
你好!为了让你看得不清楚点我去掉了不需要的部分,但编译HEX文件后长度为2139(我感觉到程序就在STARTUP.A51中转悠!!跑不到MAIN()中来)
program size :size data=83.0 xdata=64 code=2139
没有错误 但有15个无关紧要的警告
我是想写个蓝牙无线通信程序!
请高人帮忙分析,看看问题在哪里!谢谢 么用过这个启动文件呃 是的!哈哈
哈哈
and001 发表于 2012-7-2 20:51 static/image/common/back.gif
你好!为了让你看得不清楚点我去掉了不需要的部分,但编译HEX文件后长度为2139(我感觉到程序就在STARTUP. ...
编译不能过, 一大堆Warning, Keil的Warning是不能忽略的,
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL:HEARTRATE
MODULE:nRF8001.obj (NRF8001)
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL:CONFIGER
MODULE:nRF8001.obj (NRF8001)
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL:FLG_CONNECTED
MODULE:nRF8001.obj (NRF8001)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:CONFIGER
MODULE:nRF8001.obj (NRF8001)
ADDRESS: 07B2H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:FLG_CONNECTED
MODULE:nRF8001.obj (NRF8001)
ADDRESS: 06C6H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:FLG_CONNECTED
MODULE:nRF8001.obj (NRF8001)
ADDRESS: 06D4H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:HEARTRATE
MODULE:nRF8001.obj (NRF8001)
ADDRESS: 0847H
这些符号都无法链接, 编译结果必定是错误的.
因为你给的文件不全,为了编译通过(再说一遍,Keil C的Warning不能忽略, 这货连链接不上函数都不是ERROR,而是Waring), 修改nF8001.c 加了两个变量后没问题了. 见附件.
本帖最后由 and001 于 2012-7-3 09:24 编辑
谢谢高高人!考虑问题非常严谨! 真是厉害呀! 根本问题在二维数组那里!!
顺便问问 以下两个定义有什么区别(难怪我把二维数组缩短好象就没有问题了,总感觉文件长了不行)?
charcode Configer[]={};
extern constcharConfiger[]={}; 一个是实实在在的饼,一个是墙上的饼 在高人的帮忙下,可以结贴了!谢谢高人呀!这里高人多呀! 好人也多! and001 发表于 2012-7-3 09:20 static/image/common/back.gif
谢谢高高人!考虑问题非常严谨! 真是厉害呀! 根本问题在二维数组那里!!
顺便问问 以下两个定义有什么区别( ...
C51语言和标准C都不认为const的东西要存储在flash里, 而是存储在RAM中, 想表达存储在Flash中,C51 要用code 修饰.
真不好意思!我改了下我的程序还有8个警告!不知道你还修改了??
除了你定义了 (在NRF8001.C中)
unsigned char HeartRate ; // add for compile
bit flg_connected; // add for compile 我的能用 没问题的
页:
[1]