手动编译链接生成c51的hex文件

发布者:MindfulYogi最新更新时间:2022-09-29 来源: csdn关键字:c51  hex文件 手机看文章 扫描二维码
随时随地手机看文章

这个纯粹是个人爱好。现在系统的UI的做得越来越好,但还是莫名的喜欢那个命令行,算是种怀旧吧。


再次声明:该举动仅为个人爱好而已


虽然是手动编译,但还是需要个keil安装后的环境。


详细步骤:


1.用记事本或者notepad++编写超简单的代码


例如:


#include


sbit L1 = P1^2;


void main()


{


     L1 = 0;


     while(1);


}


保存为test.c


这个源码最好建立到keilC51BIN目录下,避免敲过多的路径。


2.cmd 下进入keil 安装目录 keilC51BIN


执行如下命令:


c51x test.c


lx51 test.obj TO test.abs


ohx51 test.abs   


注意“ohx51”是字母“o”。然后看看当前目录下有没有hex文件,呵呵


我用STC89C52测试的流水灯成功了。大的没试,不知道效果如何。


还有就是针对多个文件的操作。


源码是必须的。假设有两个源码文件 example.c  sexample.c 。分别用c51x生成obj文件


操作为:


c51x example.c


c51x sexample.c


然后再用lx51.这里是个关键,因为有两个文件。网上也有因吐槽keil的代码编辑不方便,转而在VS2010写C51代码的,但是配置好后却发现只能对一个文件进行编译,无法对多个文件进行编译。这个地方就是关键。我在网上找到的配置方法,对lx51的参数是这么写的:


$(ItemDir)$(ItemFileName).obj TO $(ItemDir)$(ItemFileName).abs


看起来没问题,但估计是传递参数的时候,没有把所有的obj文件名传递,所以出问题了。这个可以手动试试。操作如下:


lx51 example.obj sexample.obj To hello.abs


最后一步自然是生成hex文件


ohx51 hello.abs


烧录试试吧:)


参考帖子:


在vs2010里面编辑keil代码的问题


http://bbs.csdn.net/topics/380233788?page=1

关键字:c51  hex文件 引用地址:手动编译链接生成c51的hex文件

上一篇:单片机AT89C51--1.前期准备
下一篇:51单片机流水灯控制(5种方法)

推荐阅读最新更新时间:2024-11-16 23:06

C51:通用、存储器指针
C51编译器支持用星号(*)进行指针声明。你可以用指针完成在标准C语言中有的所有操作。 另外,由于8051及其派生系列所具有的独特结构,C51编译器支持两种不同类型的指针:存储器指针和通用指针。 通用指针 通用或未定型的指针的声明和标准C语言中一样。如: char *s; /* string ptr */ int *numptr; /* int ptr */ long *state; /* long ptr */ 通用指针总是需要三个字节来存储。第一个字节是用来表示存储器类型,第二个字节是指针的高字节,第三字节是指针的低字节。 通用指针可以用来访问所有类型的变量,而不管变量存储在哪个存储空间中。因而许多库函数都使用通用指针。通过使
[单片机]
C51的中断号排序规则
  在编写中断服务程序(ISR)的时候需要知道中断号,用于通知51内核,这个中断服务程序是为了响应哪个中断的。那么,从以上这句简单的描述可以看出,中断号必然对应于中断服务程序的入口地址,而入口地址又与中断向量(Interrupt Vector)有对应关系,所以:   (1)、中断号即是中断向量从小到大的编号,从0开始;   (2)、中断向量0x0000是上电复位,不计入中断向量的编号;   (3)、特别注意,有些中断源的默认中断优先级并不是中断向量从小到大的编号,所以默认的中断优先级并不能作为中断号使用。    什么是中断号 // Wake-up interrupt handler void resume_isr(
[单片机]
C51独立按键的识别示例程序
每按一次独立键盘的S2键,与P1口相连的一个 发光二极管 往下移动一位。 #include reg52.h sbit BY1=P3^4; //定义按键的输入端S2键 unsigned char count; //按键计数,每按一下,count加1 unsigned char temp; unsigned char a,b; void delay10ms(void) //延时程序 { unsigned char i,j; for(i=20;i 0;i--) for(j=248;j 0;j--); } key() //按键判断程序 { if(BY1==0) //判断是否按下键盘,当 单片机 上电时
[单片机]
C51模拟PWM
PWM是什么   PWM,即脉冲宽度调制,是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。   PWM原理   随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制充电电
[单片机]
Keil C51对C语言的关键词扩展之十四: interrupt
8051/8052系列单片机标准向量表: 中断号 描述 地址 0 外部中断0 0003h 1 定时/计数器0 000Bh 2 外部中断1 0013h 3 定时计数器1 001Bh 4 串口 0023h 5 定时计数器2(8052) 002Bh 众多厂商为其51系列单片机添加了更多的中断。Keil Cx51编译器支持多达32个中断函数(中断号0-31)。下表列出了这32个中断向量入口地址: 中断号 入口地址 00003h1000Bh20013h3001Bh40023h5002Bh60033h7003Bh80043h9004Bh100053h11005Bh
[单片机]
Keil C51 工程的建立
Keil软件使用的时候,是在软件建立的工程里面,于是建立工程: 开始程序开发的的旅途: 1.打开Keil软件,点击Project---new project 2.在弹出的对话框里选择合适的文件夹,对工程取一个名字--可以使任何名字,当然为了管理你的文档,工程的名字最好和项目有关! 3.完成后点击确定,弹出如下对话框: 4.在上图中的左边框里面选择Atmel--At89C52,选择完后如下: 5.确定后,在弹出的对话框里面选择 否 ,这样以后,一个工程的外壳就建立好了!! 6.添加必须文件,点击file---new,或者直接使用快捷键Ctrl+N,然后点击保存,使其保存在刚才所见工程下面,并且以 **.C 命名 7.向工程
[单片机]
Keil <font color='red'>C51</font> 工程的建立
C51中变量的空间分配几个方法
1、data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。 2、data区内最好放局部变量。 因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同; 3、确保你的程序中没有未调用的函数。 在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。 4、程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。 在51系列芯片中
[单片机]
C51单片机设计物体分级设备的测量光幕
1 引言 光幕是电子测量系统中应用比较多的一种设备。利用光幕可以测量恒速传送带上的物体高度、长度或宽度等一系列数据,以便为后面的电子系统提供相应的参数。本文给出了一种利用单片机实现物体高度测量的光幕测量方法。 2 光幕测量物体高度的基本原理 图1所示是一个用普通光幕测量物体高度的测试原理结构示意图。图中,光幕的一边等间距安装有多个红外发射管,另一边相应的有相同数量同样排列的红外接收管,每一个红外发射管都对应有一个相应的红外接收管,且安装在同一条直线上。当同一条直线上的红外发射管、红外接收管之间没有障碍物时,红外发射管发出的调制信号(光信号)能顺利到达红外接收管。红外接收管接收到调制信号后,相应的电路输出低电平,而在有
[单片机]
用<font color='red'>C51</font>单片机设计物体分级设备的测量光幕
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved