1.4编译、连接
下面我们通过一个例子来介绍 C 程序编译、连接的过程。这个例子使P1 口所接LED
以流水灯状态显示。
将下面的源程序输入,命名为exam3.c,并建立名为exam3 的工程文件,将exam3.c 文
件加入该工程中,设置工程,在Target 页将Xtal 后的值由24.0 改为12.0,以便后面调试时
观察延时时间是否正确,本项目中还要用到我们所提供的实验仿真板,为此需在Debug 页
对Dialog DLL 对话框作一个设置,在进行项目设置时点击Debug,打开Debug 页,可以看
到Dialog DLL 对话框后的Parmeter:输入框中已有默认值-pAT52,在其后键入空格后再输入
-dledkey,如图1-8 所示。
例 1-3 使P1 口所接LED 以流水灯状态显示
/**************************************************
; Copyright 2003 pingfan's McuStudio
; All rights Reserved
;作者:周坚
;lsd.c
;流水灯程序
**************************************************/
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
/*延时程序
由 Delay 参数确定延迟时间
*/
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
void main()
{ unsigned char OutData=0xfe;
for(;;)
{
图1-8 Debug 选项设置
P1=OutData;
OutData=_crol_(OutData,1); //循环左移
mDelay(1000); /*延时1000 毫秒*/
}
}
设置好工程后,即可进行编译、连接。选择菜单Project->Build target,对当前工程进行
连接,如果当前文件已修改,将先对该文件进行编译,然后再连接以产生目标代码;如果选
择Rebuild All target files 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终
生产的目标代码是最新的,而Translate ….项则仅对当前文件进行编译,不进行连接。以上
操作也可以通过工具栏按钮直接进行。图1-9 是有关编译、设置的工具栏按钮,从左到右分
别是:编译、编译连接、全部重建、停止编译和对工程进行设置。
编译过程中的信息将出现在输出窗口中的 Build 页中,如果源程序中有语法错误,会有
错误报告出现,双击该行,可以定位到出错的位置,对源程序修改之后再次编译,最终要得
到如图1-10 所示的结果,提示获得了名为exam3.hex 的文件,该文件即可被编程器读入并
写到芯片中,同时还可看到,该程序的代码量(code=63),内部RAM 的使用量(data=9),
外部RAM 的使用量(xdata=0)等一些信息。除此之外,编译、连接还产生了一些其它相关
的文件,可被用于Keil 的仿真与调试,到了这一步后即进行调试。
以流水灯状态显示。
将下面的源程序输入,命名为exam3.c,并建立名为exam3 的工程文件,将exam3.c 文
件加入该工程中,设置工程,在Target 页将Xtal 后的值由24.0 改为12.0,以便后面调试时
观察延时时间是否正确,本项目中还要用到我们所提供的实验仿真板,为此需在Debug 页
对Dialog DLL 对话框作一个设置,在进行项目设置时点击Debug,打开Debug 页,可以看
到Dialog DLL 对话框后的Parmeter:输入框中已有默认值-pAT52,在其后键入空格后再输入
-dledkey,如图1-8 所示。
例 1-3 使P1 口所接LED 以流水灯状态显示
/**************************************************
; Copyright 2003 pingfan's McuStudio
; All rights Reserved
;作者:周坚
;lsd.c
;流水灯程序
**************************************************/
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
/*延时程序
由 Delay 参数确定延迟时间
*/
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
void main()
{ unsigned char OutData=0xfe;
for(;;)
{
图1-8 Debug 选项设置
P1=OutData;
OutData=_crol_(OutData,1); //循环左移
mDelay(1000); /*延时1000 毫秒*/
}
}
设置好工程后,即可进行编译、连接。选择菜单Project->Build target,对当前工程进行
连接,如果当前文件已修改,将先对该文件进行编译,然后再连接以产生目标代码;如果选
择Rebuild All target files 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终
生产的目标代码是最新的,而Translate ….项则仅对当前文件进行编译,不进行连接。以上
操作也可以通过工具栏按钮直接进行。图1-9 是有关编译、设置的工具栏按钮,从左到右分
别是:编译、编译连接、全部重建、停止编译和对工程进行设置。
编译过程中的信息将出现在输出窗口中的 Build 页中,如果源程序中有语法错误,会有
错误报告出现,双击该行,可以定位到出错的位置,对源程序修改之后再次编译,最终要得
到如图1-10 所示的结果,提示获得了名为exam3.hex 的文件,该文件即可被编程器读入并
写到芯片中,同时还可看到,该程序的代码量(code=63),内部RAM 的使用量(data=9),
外部RAM 的使用量(xdata=0)等一些信息。除此之外,编译、连接还产生了一些其它相关
的文件,可被用于Keil 的仿真与调试,到了这一步后即进行调试。