C8051F350使用xdata段程序跑飞原因及解决

硬件:C8051F350/1/2/3 器件内部有位于外部数据存储器空间的 512 字节 RAM。

 

情况:但是keil编译出来有使用了外部512字节RAM中258个字节。正常情况下程序不会跑飞(其实就是进不到main函数)。


 

原因:通过仿真会发现程序一直卡在初始化变量的启动程序中,无限循环重启。

           看《C8051F35x_中文数据手册.pdf》可知:

     即单片机一上电看门狗使能,由于程序使用的全局变量过多,需要初始化变量的时间过长,导致看门狗溢出,一直复位单片机,如此循环。

 

解决:在第一次编译完程序后,工程当前目录会生成一个51内核启动文件STARTUP.A51,上电立刻关闭看门狗,如下图添加一行:

                                                anl  0D9h,    #0BFh  ;Close the watchdog   

效果如下:

?C_STARTUP:     anl  0D9h,    #0BFh  ;Close the watchdog       
                LJMP    STARTUP1
                
                RSEG    ?C_C51STARTUP

 

 

最后:重新编译执行程序即可。

 

 

全篇完。

本人博客仅仅代表我个人见解方便记录成长笔记。

若有与 看官老爷见解有冲突,我坚信看官老爷见解是对的,我的是错的。

感谢~!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本项目原本设计的是一个毫欧表,为了测试C8051F350的24bit ADC,顺便兼容了一个电压表功能。一个直流电压表最关键的有3个部分:模拟前端、ADC和基准电压。这里就做简短描述,详解附件的更详细的图文讲解。 五位半电压表参数特性: - 100mV/1000mV/10V/100V四个档位,大概有50%超量程余量 - 五位半显示,最大150000 count - 支持任意值校正,通过面板按钮即可校正。精度保守一点吧,0.01% Reading+4 LSB,后面有测试图 - Fast/Slow两档速度,Fast:10次/秒,Slow:1次/秒 - 数据从USB UART输出,波特率115200(目前只输出,不能从上位机控制) - 默认5分钟自动关机,可以关闭该功能 - 使用一节锂电池供电,支持从USB充电 - 支持背光,可以关闭 - 工作电流:17mA(背光关闭);44mA(背光打开)。一节14500(5号)锂电池可以连续工作1.5~2天(背光关闭) 五位半电压表实物截图: 模拟前端 模拟前端肩负了几个重要任务:输入信号的衰减或者放大/低通滤波/阻抗变换/防护。 大家都知道一般来说ADC只有一个量程,台式的一般是10/20V,手持的三位半或者四位半是200mV,这个称为基本量程,也是精度最高的量程,其他的量程都要把输入信号放大或者衰减到这个量程再来测量。这个表的基本量程是1V,而且由于MCU内置了PGA,因此模拟前端仅需要考虑衰减。 ADC 使用C8051F350内置的24bit ADC,这个在毫欧表里面已经说的比较多了。这个表再重温一下,在PGA=1,10Hz的条件下,RMS noise是2.38uV,峰峰值 noise为2.38*6.6=15.7uV,也就是1V档的1.5个LSB(五位半),大概看到两个数在跳(极端情况可能3个),在Slow模式下,把10个读数平均,提升log(10)/log(4)=1.66bit,2^1.66=3.16LSB,因此在Slow模式基本上不会跳数了(当然,由于舍入问题导致的最后一位跳是不能避免的)。 基准电压 这里可以使用C8051F350的内置基准(最大15ppm温度系数),或者外部基准可以用REF5025(工业级:2.5ppm(典型)/3ppm(最大)温度系数;商业级:3/8ppm)或者MAX6192(A级:2/5ppm;B级:4/10ppm;C级8/25ppm)。 使用内置和外置基准的frimware是不一样的,不能搞错。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值