您当前的位置:钢材 > 型钢 > 市场分析

keil5中target not created,keil的target在哪

来源:头条 作者: chanong
分享到
关注德勤钢铁网在线:
  • 扫描二维码

    关注√

    德勤钢铁网微信

在线咨询:
  • 扫描或点击关注德勤钢铁网在线客服

Keil C51 高级设置Target 1. 重命名Target 打开Keil 后,您可以在左侧的工程工作区中修改Target 如何:右键单击Target——Manage Components——,然后双击要修改的项目。添加相应的对话框工具栏。 2. 目标设置选项TARGET 项目1 MEMARY MODELSmall: 变量存储在内部RAM 中Compact: 变量使用页8 位间接寻址存储在外部RAM 中Large: 变量使用16 位间接寻址存储在外部RAM 中使用Small 存储意味着微控制器首先将变量存储在内部RAM 中。如果内部RAM不够,则将其存储在外部。紧凑方法要求您指定变量的高级地址。程序一页一页地运行。编程比较复杂。如果您的外部RAM 很少,则读取256 字节会更快,因为只有256 字节。使用MOVX@Ri,A 或MOVX A,@Ri 指令。如果超过256,则一旦达到字节数就必须继续继续。切换起来会比较麻烦。紧凑模式适用于外部RAM容量较小的情况。大模式意味着变量首先分配在外部RAM 中并由MOVX A 读取。 @DPTR 或MOVX @DPTR, A。需要注意的是,所有三种存储方法都支持256 字节内部RAM 和64k 字节外部RAM。区别在于变量最初存储的位置(或默认情况下)。除非你不想保存它。如果您想将变量存储在内部RAM 中,请使用后者的紧凑模式和大模式。由于变量存储在内部RAM 中,因此它们的运行速度比存储在外部RAM 中的变量快得多。大多数应用程序选择小模式。这并不意味着使用小模式:无法保存变量。您也可以将其存储在外部,但必须将其指定为,例如:unsigned char xdata a;然后变量a 被存储在外部RAM 中。 unsigned char a; 该变量存储在内部RAM 中。如果使用ram.Large 模式则:unsigned char xdata a; 那么变量a 存储在外部RAM 中unsigned char a; 变量存储在外部RAM 中这就是区别,即这些选项是变量存储仅在区域不专门的情况下有效指定的,即默认存储的位置,如上面的变量定义中unsignedchar a .2. 代码ROM SIZESmall: 程序适用于2K 以下的芯片,例如89c2051。只有2051的代码空间为2k,所以跳转地址只有2k。编译时使用ACALLAJMP等短跳转指令,而不是使用LCALL和LJMP指令。如果代码跳转超过2k,就会出现错误。紧凑的:2k函数,64k程序:这意味着每个子函数的程序大小不超过2k,整个项目可以有64k代码。也就是说,main() 允许使用LCALL 和LJMP 指令,但仅允许使用ACALL 和AJMP 指令。它在一个子程序中。除非确定每个子程序不大于2k,否则不要使用Compact 方法。 Large:64K 程序: 表示程序或子函数可以大到64k。您可以使用代码库做得更大。这通常是选择。如果代码ROM尺寸大的话,速度不会比小的时候明显慢,所以通常不需要选择compact和small,但这里我们选择large。使用TINY 操作系统。 RTX-FULL:使用FULL操作系统。 Keil C51提供Tiny多任务操作系统,使用定时器0进行任务切换,效率极低,没有实用价值。 Full需要用户使用外部RAM并单独购买运行时库。无法使用。默认情况下选择“无”。

4. Memory Selection 1. Use on-chip ROM (0x0-0x1fff) 该选项是使用片上Flash ROM。我们知道At89c52有一个8k flash rom。取决于应用系统。微控制器的EA 为: 2. 片外代码2. 选择片外代码。内存表示外部连接的ROM的开始。对于地址和大小,如果没有外部程序存储器,则不要输入数据。这里,我们假设使用片外ROM,地址从0x8000开始(不要输入8000,8000是十进制数,正常输入十六进制数),Size是外部ROM的大小。假设连接了0x1000 字节的ROM。您最多可以连接。 3. 外部ROM。如果还想使用其他地址,请添加。 3. 片外Xdata 存储器可以填充外部起始地址和大小。银行业使用代码银行技术。 Keil可以支持程序代码超出的情况。最大程序代码为64k,最大程序代码为2MB。如果你的代码超过64k,你应该使用CodeBanking技术来支持更多的程序空间。 CodeBanking 是一项支持自动库切换的先进技术,在构建大型系统时是必需的。例如,如果要在微控制器上实现汉字库和汉字输入法,则需要使用该技术。我们将在以后的文章中讨论银行。技术。这里没有选择。 2. 可选目标设置输出项对象选择文件夹:选择编译后的目标文件保存的目录默认保存在工程文件夹中可执行文件名称:设置生成的目标文件的名称,默认为工程名称.create 可执行文件:生成OMF 和HEX 文件。 OMF 文件名与项目文件名相同,但没有扩展名。 creat hex file:选择此选项可在编译后生成一个小的HEX 文件。创建库:生成lib库。 make 后: 1. Beep on finish:编译完成后提示声音2. 开始调试:编译完成后立即开始调试(软件模拟或硬件模拟)(默认不选中)。运行Program1 、 userprogram2 :可以选择设置编译的应用程序或调用外部模拟程序,例如您编写的用于对芯片进行编程的程序。 3、列表选择文件夹:选择列表文件保存的目录(默认为工程文件所在目录)。 *.lst、*.m51文件对于理解程序中使用的idata、data、bit、xdata、code、RAM、ROM、Stack等起到非常重要的作用。汇编代码产生汇编代码。根据自己的需求决定是否选择。 4.c51用于控制Keil的C51编译器的编译过程。更常用的是“代码优化”组。在该组中,该级别是优化级别。 C51在编译时最多可以编译9级代码。源程序。默认情况下使用级别8 的优化通常不需要更改。如果编译过程中遇到问题,请尝试降低优化级别。选择编译优先级的方法很重要。第一项是针对代码量的优化(最终生成的代码小),第二项是针对速度的优化(最终生成的代码快),第三项是默认。速度优先您可以根据需要更改此设置。 5.BL51 Locate使用KeilC51软件,可以非常轻松地将代码或数据定位到特定地址。 1. 代码放置: 方法一:使用伪指令CSEG。例如,如果要在代码区C:0x1000 中查找MyFunc1,则新建一个A51 文件并添加以下内容: PUBLIC MYFUNC1CSEG AT 1000HMYFUNC1: 如果其他代码RET 在其他源文件中,则可以调用MyFunc() 函数。

请注意,编译器不会检测传递的参数数量,只会检测函数是否有返回值。方法2:使用BL51 定位选项。例如,如果在main.c中定义了MyFunc2函数,并且希望将其定位在代码区域C:0x2000中,则从菜单中选择“项目”-“目标选项”“目标1”,然后在弹出的对话框中选择“BL51定位”页面。单击并在代码栏中写入PR MYFUNC2 MAIN (0x2000)。您还可以使用通配符* 来定位多个函数。 2. 变量放置:只有全局变量才可以绝对放置。局部变量不能绝对放置。方法1:使用_at_关键字。声明一个全局变量unsigned char data MyBuf1[8] _at_0x20; 方法2:使用BL51 Locate 选项。例如,要将main.c 中定义的所有数据类型全局变量放置到从数据区D:0x28 开始的空间中,请从菜单中选择目标“Target1”的项目选项,并在弹出的对话框中选择“BL51 Placement”页面。选择。选择并单击下面。只需在数据栏中写入DT MAIN (0x28) 即可。对于idata,使用ID MAIN (0x28),对于xdata,使用XD MAIN (0x28),对于pdata,使用PD MAIN (0x28)。 3. 堆栈放置:堆栈区域在STARTUP.A51 中定义。对于文件STACK,其起始地址也可以在BL51定位页上设置。在堆栈列中写入STACK (0x80)。 4. 函数放置:如果在C 源程序中使用函数int BIN2HEX (int xx) {.则文件tools.c.} 将放置在CODE MEMORY 中的0x1000 处。首先编译工程,打开工程的M51文件,找到*** * C O D E M E M O R Y * * *行下的函数名。格式必须为CODE xxxxH xxxxH UNIT PR _BCD2HEX TOOLS。然后输入以下内容:查找目标.-BL51 的项目选项。代码:PR _BCD2HEX TOOLS (0x1000) 再次构建。对于M51,它看起来像这样:确保函数放置在代码存储器中的0x1000 处2 定位变量以分配初始值: 如果要将变量放置在绝对位置并分配初始值,如果_at_ 不可用,则按以下步骤操作。在你的项目中新建一个文件“Among They”,如InitVars.c,并为你要处理的变量(考虑代码变量)赋值初始值: char code myVer={'COPYRIGHT 2001-11' };然后加:将该文件添加到您的项目中,编译它,然后打开M51 文件。如果定义了代码类型,您将在* * * C O D E M E M O R Y * * * 下找到以下代码: CODE xxxxH xxxxH UNIT CO INITVARS 并输入: Project-Options for Target .-BL51 code: Find CO INITVARS (0x200) and再次编译。同样,如果是xdata 变量,则在InitVars.c 中写入: char xdata myVer={'COPYRIGHT 2001-11'}; 然后将该文件添加到您的项目中,编译它,打开M51 文件并在* * * 下找到它X 数据存储器*。 * * 找到:XDATA xxxxH xxxxH UNIT XD INITVARS 然后输入:Project-Options for Target.-BL51 查找:Xdata:同理,如果定义了data/idata等变量,则进行处理。 3、如果有多个变量或函数需要绝对地址放置,则按照从最低地址到最高地址的顺序放置。

责任编辑:德勤钢铁网 标签:

热门搜索

相关文章

广告
德勤钢铁网 |市场分析

keil5中target not created,keil的target在哪

chanong

|

Keil C51 高级设置Target 1. 重命名Target 打开Keil 后,您可以在左侧的工程工作区中修改Target 如何:右键单击Target——Manage Components——,然后双击要修改的项目。添加相应的对话框工具栏。 2. 目标设置选项TARGET 项目1 MEMARY MODELSmall: 变量存储在内部RAM 中Compact: 变量使用页8 位间接寻址存储在外部RAM 中Large: 变量使用16 位间接寻址存储在外部RAM 中使用Small 存储意味着微控制器首先将变量存储在内部RAM 中。如果内部RAM不够,则将其存储在外部。紧凑方法要求您指定变量的高级地址。程序一页一页地运行。编程比较复杂。如果您的外部RAM 很少,则读取256 字节会更快,因为只有256 字节。使用MOVX@Ri,A 或MOVX A,@Ri 指令。如果超过256,则一旦达到字节数就必须继续继续。切换起来会比较麻烦。紧凑模式适用于外部RAM容量较小的情况。大模式意味着变量首先分配在外部RAM 中并由MOVX A 读取。 @DPTR 或MOVX @DPTR, A。需要注意的是,所有三种存储方法都支持256 字节内部RAM 和64k 字节外部RAM。区别在于变量最初存储的位置(或默认情况下)。除非你不想保存它。如果您想将变量存储在内部RAM 中,请使用后者的紧凑模式和大模式。由于变量存储在内部RAM 中,因此它们的运行速度比存储在外部RAM 中的变量快得多。大多数应用程序选择小模式。这并不意味着使用小模式:无法保存变量。您也可以将其存储在外部,但必须将其指定为,例如:unsigned char xdata a;然后变量a 被存储在外部RAM 中。 unsigned char a; 该变量存储在内部RAM 中。如果使用ram.Large 模式则:unsigned char xdata a; 那么变量a 存储在外部RAM 中unsigned char a; 变量存储在外部RAM 中这就是区别,即这些选项是变量存储仅在区域不专门的情况下有效指定的,即默认存储的位置,如上面的变量定义中unsignedchar a .2. 代码ROM SIZESmall: 程序适用于2K 以下的芯片,例如89c2051。只有2051的代码空间为2k,所以跳转地址只有2k。编译时使用ACALLAJMP等短跳转指令,而不是使用LCALL和LJMP指令。如果代码跳转超过2k,就会出现错误。紧凑的:2k函数,64k程序:这意味着每个子函数的程序大小不超过2k,整个项目可以有64k代码。也就是说,main() 允许使用LCALL 和LJMP 指令,但仅允许使用ACALL 和AJMP 指令。它在一个子程序中。除非确定每个子程序不大于2k,否则不要使用Compact 方法。 Large:64K 程序: 表示程序或子函数可以大到64k。您可以使用代码库做得更大。这通常是选择。如果代码ROM尺寸大的话,速度不会比小的时候明显慢,所以通常不需要选择compact和small,但这里我们选择large。使用TINY 操作系统。 RTX-FULL:使用FULL操作系统。 Keil C51提供Tiny多任务操作系统,使用定时器0进行任务切换,效率极低,没有实用价值。 Full需要用户使用外部RAM并单独购买运行时库。无法使用。默认情况下选择“无”。

4. Memory Selection 1. Use on-chip ROM (0x0-0x1fff) 该选项是使用片上Flash ROM。我们知道At89c52有一个8k flash rom。取决于应用系统。微控制器的EA 为: 2. 片外代码2. 选择片外代码。内存表示外部连接的ROM的开始。对于地址和大小,如果没有外部程序存储器,则不要输入数据。这里,我们假设使用片外ROM,地址从0x8000开始(不要输入8000,8000是十进制数,正常输入十六进制数),Size是外部ROM的大小。假设连接了0x1000 字节的ROM。您最多可以连接。 3. 外部ROM。如果还想使用其他地址,请添加。 3. 片外Xdata 存储器可以填充外部起始地址和大小。银行业使用代码银行技术。 Keil可以支持程序代码超出的情况。最大程序代码为64k,最大程序代码为2MB。如果你的代码超过64k,你应该使用CodeBanking技术来支持更多的程序空间。 CodeBanking 是一项支持自动库切换的先进技术,在构建大型系统时是必需的。例如,如果要在微控制器上实现汉字库和汉字输入法,则需要使用该技术。我们将在以后的文章中讨论银行。技术。这里没有选择。 2. 可选目标设置输出项对象选择文件夹:选择编译后的目标文件保存的目录默认保存在工程文件夹中可执行文件名称:设置生成的目标文件的名称,默认为工程名称.create 可执行文件:生成OMF 和HEX 文件。 OMF 文件名与项目文件名相同,但没有扩展名。 creat hex file:选择此选项可在编译后生成一个小的HEX 文件。创建库:生成lib库。 make 后: 1. Beep on finish:编译完成后提示声音2. 开始调试:编译完成后立即开始调试(软件模拟或硬件模拟)(默认不选中)。运行Program1 、 userprogram2 :可以选择设置编译的应用程序或调用外部模拟程序,例如您编写的用于对芯片进行编程的程序。 3、列表选择文件夹:选择列表文件保存的目录(默认为工程文件所在目录)。 *.lst、*.m51文件对于理解程序中使用的idata、data、bit、xdata、code、RAM、ROM、Stack等起到非常重要的作用。汇编代码产生汇编代码。根据自己的需求决定是否选择。 4.c51用于控制Keil的C51编译器的编译过程。更常用的是“代码优化”组。在该组中,该级别是优化级别。 C51在编译时最多可以编译9级代码。源程序。默认情况下使用级别8 的优化通常不需要更改。如果编译过程中遇到问题,请尝试降低优化级别。选择编译优先级的方法很重要。第一项是针对代码量的优化(最终生成的代码小),第二项是针对速度的优化(最终生成的代码快),第三项是默认。速度优先您可以根据需要更改此设置。 5.BL51 Locate使用KeilC51软件,可以非常轻松地将代码或数据定位到特定地址。 1. 代码放置: 方法一:使用伪指令CSEG。例如,如果要在代码区C:0x1000 中查找MyFunc1,则新建一个A51 文件并添加以下内容: PUBLIC MYFUNC1CSEG AT 1000HMYFUNC1: 如果其他代码RET 在其他源文件中,则可以调用MyFunc() 函数。

请注意,编译器不会检测传递的参数数量,只会检测函数是否有返回值。方法2:使用BL51 定位选项。例如,如果在main.c中定义了MyFunc2函数,并且希望将其定位在代码区域C:0x2000中,则从菜单中选择“项目”-“目标选项”“目标1”,然后在弹出的对话框中选择“BL51定位”页面。单击并在代码栏中写入PR MYFUNC2 MAIN (0x2000)。您还可以使用通配符* 来定位多个函数。 2. 变量放置:只有全局变量才可以绝对放置。局部变量不能绝对放置。方法1:使用_at_关键字。声明一个全局变量unsigned char data MyBuf1[8] _at_0x20; 方法2:使用BL51 Locate 选项。例如,要将main.c 中定义的所有数据类型全局变量放置到从数据区D:0x28 开始的空间中,请从菜单中选择目标“Target1”的项目选项,并在弹出的对话框中选择“BL51 Placement”页面。选择。选择并单击下面。只需在数据栏中写入DT MAIN (0x28) 即可。对于idata,使用ID MAIN (0x28),对于xdata,使用XD MAIN (0x28),对于pdata,使用PD MAIN (0x28)。 3. 堆栈放置:堆栈区域在STARTUP.A51 中定义。对于文件STACK,其起始地址也可以在BL51定位页上设置。在堆栈列中写入STACK (0x80)。 4. 函数放置:如果在C 源程序中使用函数int BIN2HEX (int xx) {.则文件tools.c.} 将放置在CODE MEMORY 中的0x1000 处。首先编译工程,打开工程的M51文件,找到*** * C O D E M E M O R Y * * *行下的函数名。格式必须为CODE xxxxH xxxxH UNIT PR _BCD2HEX TOOLS。然后输入以下内容:查找目标.-BL51 的项目选项。代码:PR _BCD2HEX TOOLS (0x1000) 再次构建。对于M51,它看起来像这样:确保函数放置在代码存储器中的0x1000 处2 定位变量以分配初始值: 如果要将变量放置在绝对位置并分配初始值,如果_at_ 不可用,则按以下步骤操作。在你的项目中新建一个文件“Among They”,如InitVars.c,并为你要处理的变量(考虑代码变量)赋值初始值: char code myVer={'COPYRIGHT 2001-11' };然后加:将该文件添加到您的项目中,编译它,然后打开M51 文件。如果定义了代码类型,您将在* * * C O D E M E M O R Y * * * 下找到以下代码: CODE xxxxH xxxxH UNIT CO INITVARS 并输入: Project-Options for Target .-BL51 code: Find CO INITVARS (0x200) and再次编译。同样,如果是xdata 变量,则在InitVars.c 中写入: char xdata myVer={'COPYRIGHT 2001-11'}; 然后将该文件添加到您的项目中,编译它,打开M51 文件并在* * * 下找到它X 数据存储器*。 * * 找到:XDATA xxxxH xxxxH UNIT XD INITVARS 然后输入:Project-Options for Target.-BL51 查找:Xdata:同理,如果定义了data/idata等变量,则进行处理。 3、如果有多个变量或函数需要绝对地址放置,则按照从最低地址到最高地址的顺序放置。


市场分析