分类: WINDOWS
2011-12-08 09:18:04
Nmake Tool
NMAKE Reference
附件为中文版 NMake参考(整理自MSDN).pdf
Cx51 User's Guide
Ax51 User's Guide
LX51 User's Guide
OH51 User's Guide
---------------------------------------------------------
BL51 User's Guide
LX51 Enhanced Linker
8051 Instruction Set Manual
---------------------------------------------------------
详见A51手册的附录D:汇编器的差异
A51与BL51:
针对传统8051单片机的开发工具,最大支持32×64KB Code Bank。
AX51与LX51:
针对传统8051单片机以及部分衍生型号的开发工具,最大支持外扩16 MB的xdata或code。AX51汇编器是A51汇编器的超集,两者的主要差异包括:
1.AX51中的数值默认为32位,A51是16位;
2.AX51不包含8051的默认SFR定义;
3.AX51支持更多的特殊符号,例如ECALL等;
4.生成的目标文件不同。AX51生成的目标文件为OMF-251/51MX格式,不受传统OMF-51格式中每个模块不得超过256个外部符号及段的限制。
====================================================================
http://blog.sina.com.cn/s/blog_54e279190100l78t.html
keil中函数变量定位方法(2010-09-14 16:02:58)转载标签: 杂谈 分类: 技术
函数绝对定位方法:
将链接方式从LX51改回BL51,然后再BL51 Locate中的Code框中写入:
?PR?_DELAY?DELAY(0x8000)
其中,前面那个_DELAY是指函数名叫做delay,前面为什么要加_还不清楚,而且原来无论是什么这里都是大写;
后面那个DELAY是指文件名叫做delay,也就是说这个函数要到delay.c中去找;
括号里面的当然就是要定位到的地址了。
如果不强制定位,连接器一般都会把程序从0开始安排,有多大安排多大。
ouravr网友总结(比较全):
使用KeilC51软件,可以很方便地将代码或者数据绝对定位到某个地址。
1、代码定位:
方法1:使用伪指令CSEG。比如要将MyFunc1定位到代码区C:0x1000,则新建一个A51文件,添加以下内容:
PUBLIC MYFUNC1
CSEG AT 1000H
MYFUNC1:
;其它代码
RET
在其它源文件中,就可以调用MyFunc()函数了。需要注意的是,编译器不检测传递参数的数目,仅检测函数是否有返回值。
方法2:使用BL51 Locate选项。比如在main.c中定义了一个MyFunc2函数,并且要将该函数定位到代码区C:0x2000,则从菜单中选择Project->Options for Target 'Target1',在弹出的对话框中选择BL51 Locate页,在下面的code栏中写上?PR?MYFUNC2?MAIN(0x2000)即可。
如果想定位多个函数,也可以使用*通配符。
2、变量定位:
只有全局变量可以绝对定位,局部变量无法实现绝对定位。
方法1:使用_at_关键字。声明一个全局变量unsigned char data MyBuf1[8] _at_ 0x20;
方法2:使用BL51 Locate选项。比如将main.c中定义的所有data型的全局变量定位到数据区D:0x28开始的空间,则从菜单中
选择Project->Options for Target 'Target1',在弹出的对话框中选择BL51 Locate页,在下面的data栏中写上?DT?MAIN(0x28)即可。
如果是idata,则使用?ID?MAIN(0x28),如果是xdata,则使用?XD?MAIN(0x28),如果是pdata,则使用?PD?MAIN(0x28)
3、堆栈定位:
在STARTUP.A51文件中定义了堆栈区?STACK,其起始地址同样可以在BL51 Locate页中设置,在Stack栏写上?STACK(0x80)
LX51定位方法:
这个方法是在WizNet的ISP教程中发现的。
首先在需要定位的那个文件的首行写上 #pragma userclass(CODE = ISP)
当然=后面的那个名字是自己起的。
然后再options的LX51 Locate中的userclass中写上 CODE_ISP(C:0x8000)即可
很显然:后面的是定位地址,如果有多个,就再加逗号继续写。
=====================================================================================
http://blog.sina.com.cn/s/blog_54e279190100l78m.html
在keil c51中加入生成bin方法:
在bin文件夹中拷入HEX2BIN.exe文件,然后在option的user标签下,选择Run User Programs After Build/Rebuild,选中Run #1,填入HEX2BIN.exe @p.hex @p.bin后,再选中右边的DOS16,确定就OK了。
=====================================================================================