让SlickEdit 自动编译Keil C51工程

发布时间:2024-08-14  

上一篇文章已经讲了如何手动调用Keil的C51编译器来编译我们的工程,今天跟大家说说如何在SlickEdit环境下配置编译命令。

  1. 首先新建一个SlickEdit工程

    假设工程路径为'D:51',在Build System界面下选择第二个选项,

配置 Build 命令的 Command Line为D:51automake.cmd,此文件内容下面将贴出来。

 

    

这样便完成了配置过程。其实最核心的地方就在automake.cmd文件,下面将对此文件的关键内容做一些讲解。

  1. 关键内容讲解

    (1)变量声明:SET PROJECT=D:51 声明PROJECT变量的值为D:51,之后需要引用此变量时,需用%PROJECT%。

    (2) 变量值替换,格式为,%VAR:oldstr=newstr%, VAR为变量名,oldstr将替换成newstr;

        例:SET OUTPUT=D:5151.hex,则%OUTPUT:.hex=% 将为 D:5151,即把.hex替换成空字符串。

    (3)文件枚举,格式为:for /r 'PATH' %%i in (*.c) do (….)

        /r表示搜索子目录,'PATH'为所要搜索的文件,*.c为所要搜索的类型。 Do 后面填写所要执行的操作。

    (4)for循环内的变量多次赋值:

    在for语句里面重复对同一变量多次赋值时才需要使用'!',并且在使用'!'调用变量时,要首先'启用延迟环境变量扩充',启动命令为:SetLocal EnableDelayedExpansion。另外需要说明的是,'启用延迟环境变量扩充'后,所有的'!'都将被视为'取变量值'的特殊符号,即使用'^!'也不能输出符号'!'。若要输出'!',则需要'停用延迟环境变量扩充',命令为:SetLocal DisableDelayedExpansion。

  2. 使用此文件来编译工程有以下几点需要注意:

    1. 工程路径包括文件名中不能含有空格;

    2. 所要编译的文件只能是同一类型的文件,如都是C文件,或者都是ASM文件;

  3. Automake.cmd文件的内容如下:

    @echo off

    @rem 本批处理可自动编译PROJECT目录下(包括子目录)下的.C文件,并生成OUTPUT文件

     

    @rem 本文件由HomeWay编写,潮风工作室, 2012/2/10

     

    @rem 环境变量定义

    @rem 请根据本机情况修改以下变量

    PATH=D:KEIL4C51BIN;%PATH%

    SET C51INC=D:KEIL4C51INC

    SET C51LIB=D:KEIL4C51LIB

     

    @rem 工程所在目录

    SET PROJECT=D:51

     

    @rem 输出文件

    SET OUTPUT=D:5151.hex

     

     

    @rem 枚举所有.C文件并编译

    set OBJ=

    SetLocal EnableDelayedExpansion

    for /r '%PROJECT%' %%i in (*.c) do (

    set OBJ=!OBJ!%%i,

    %rem compile the project files

    C51 %%i

    IF ERRORLEVEL 2 GOTO :FAILED

    IF ERRORLEVEL 3 GOTO :FAILED

    )

     

     

    %rem 链接所有OBJECT文件

    echo LINK:%OBJ:.c=.obj%%C51LIB%C51S.lib

    BL51 %OBJ:.c=.obj%%C51LIB%C51S.lib TO %OUTPUT:.hex=% RAMSIZE(256)

     

    IF ERRORLEVEL 2 GOTO :FAILED

    IF ERRORLEVEL 3 GOTO :FAILED

     

    %rem 生成HEX文件

    OH51 %OUTPUT:.hex=% HEXFILE(%OUTPUT%)

    goto :SUCCESS

     

    :FAILED

    echo 编译失败!

    exit 1

     

    :SUCCESS

     

    %rem 清除所有的临时文件

    del %OUTPUT:.hex=%

    for /r '%PROJECT%' %%i in (*.obj) do del %%i

    for /r '%PROJECT%' %%i in (*.lst) do del %%i

    for /r '%PROJECT%' %%i in (*.m51) do del %%i

     

    echo 编译成功!输出文件为:%OUTPUT%

    exit 0


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    的 data xdata bit sbit一类的,还有一些中断程序写法 void int() interrput 1一类的。 2、单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译......
    -Wall -o -O(1~3)   下面解释常用命令的意思: -c:只编译不连接 此命令用于编译每一个.c 文件成为汇编语言 等着最后一起连接 -S: 只编译不生成汇编语言 -E: 只是进行预编译......
    器也成为了华为鸿蒙OS系统发展中非常重要的一环。 方舟编译器平台的IDE(集成开发环境)具有以下主要功能: 代码编辑:方舟编译器平台的IDE支持各种编程语言的代码编辑,包括Java、CC++等。它还......
    怎样才能很快找到是哪一个版本的软件出现故障呢? C几种特殊标准定义 __FILE__:正在编译文件的文件名__LINE__:正在编译文件的行号__DATE__:编译时刻的日期字符串 如“Sep 22 2020”__TIME__:编译......
    文件翻译成可执行程序的大致步骤: 所有的命令行选项大致可分为三类: 指定语言 GCC 编译程序有能力编译多种语言,有些选项只可用于其中的一两种。例如,-C89 选项只应用于 C 语言,指定......
    -> Options -> C/C++ Compiler -> output: 在配置信息中也有很多相关与编译相关的配置,会影响编译速度。 3.命令行 如果使用命令行编译代码,这个......
    Add(long,long)" (?Add@@YAJJJ@Z) 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明? (1)C++中可以通过在函数声明前加 extern......
    ARM GCC 内嵌汇编手册;关于这篇文档对于基于ARM的RISC处理器,GNU C编译器提供了在C代码中内嵌汇编的功能。这种非常酷的特性提供了C代码没有的功能,比如手动优化软件关键部分的代码、使用......
    DisableDelayedExpansion。 使用此文件来编译工程有以下几点需要注意: 工程路径包括文件名中不能含有空格; 所要编译的文件只能是同一类型的文件,如都是C文件,或者都是ASM文件......
    51单片机编程开发(一)之C语言基础一;C51编译器 51单片机开发编译有很多,现在比较有名的是IAR for 8051编译器和KEIL for C51编译器,但这两个软件都不是免费的,官网......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>