c语言源代码-关于srartup的问题

c语言源代码-关于srartup的问题

ID:8916424

大小:52.50 KB

页数:19页

时间:2018-04-12

c语言源代码-关于srartup的问题_第1页
c语言源代码-关于srartup的问题_第2页
c语言源代码-关于srartup的问题_第3页
c语言源代码-关于srartup的问题_第4页
c语言源代码-关于srartup的问题_第5页
资源描述:

《c语言源代码-关于srartup的问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、sourcegroup下的startup.a51文件有什么用?有这个文件在的时候我的编译会有警告,而删除这个文件的时候,编译会通过,当然后面调试会出问题。这个一个试验小程序:          ORG0100HMaIN:     MOVa,#0FEH          MOVa,P1          RL  a      LCaLLDELaY      aJMP  MaINDELaY:    MOV  R7,#255D1:       MOV  R6,#255D2:       DJNZR6,D2          DJNZR7,D1      RET     

2、 END是不是程序开头要加什么呢?答1:::程序开头应该再加:ORG0000HLJMPMaIN答2:::Keil中的startup.a51文件一般不要,加了反而出错(不能通过编译).答3:哦,多谢!Buildtarget'Target1'linking...***WaRNINGL5:CODESPaCEMEMORYOVERLaP    FROM:    0000H    TO:      0112H***WaRNINGL1:UNRESOLVEDEXTERNaLSYMBOL    SYMBOL:  ?C_STaRT    MODULE:  STaRTUP.obj(?C

3、_STaRTUP)***WaRNINGL2:REFERENCEMaDETOUNRESOLVEDEXTERNaL    SYMBOL:  ?C_STaRT    MODULE:  STaRTUP.obj(?C_STaRTUP)    aDDRESS:080aHProgramSize:data=9.0xdata=0code=290"exam1"-0Error(s),3Warning(s).--------------------------------------------这几个警告还是在阿答4:多谢我删了startup.a51后警告就没了答5:个人见解startu

4、p.a51的主要任务是完成了清理内存和建立堆栈的工作,然后跳转到C环境支持的初始化任务,如果使用纯汇编,是可以不需要这个文件的,但是需要处理好堆栈,当然也可以把你的代码写到这个文件里,把跳转入口指向你的程序入口,偷懒的做法……答6:高见:谢谢啊!明白了它的用途了,因为一直写汇编程序,还没试过用Keil写C.以后希望能实践一下!答7:有些糊涂当然也可以把你的代码写到这个文件里------------------------------这句不大明白,如果使用汇编编程,初始化工作由你自己完成,可以不加.如果使用C编程,如果你在0000地址后会自己执行初始化等等其实也可以

5、不加,否则一定要加.  另外,学习这个文件对你了解51的工作也是很有价值的.在51系列中data,idata,xdata,pdata的区别data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:moxACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,

6、用DPTR访问。pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movxACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG,建议少用。但也有他的优点,具体用法属于中级问题,这里不提。startup.a51的作用和汇编一样,在C中定义的那些变量和数组的初始化就在startup.a51中进行,如果你在定义全局变量时带有数值,如unsignedchardataxxx="100";,那startup.a51中就会有相关的赋值。如果没有=100,startup.a51就会把他清0。(startup.a51==变量的初始化)。这些初始化

7、完毕后,还会设置SP指针。对非变量区域,如堆栈区,将不会有赋值或清零动作。有人喜欢改startup.a51,为了满足自己一些想当然的爱好,这是不必要的,有可能错误的。比如掉电保护的时候想保存一些变量,但改startup.a51来实现是很笨的方法,实际只要利用非变量区域的特性,定义一个指针变量指向堆栈低部:0xff处就可实现。,为什么还要去改?可以这么说:任何时候都可以不需要改startup.a51,如果你明白它的特性初学者编程最简练的指导点击:36,文章入库日期:2008-04-2411:47:31,来源:www.picavr.com这里讲述一些初学者学习c51的

8、一些误区和

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。