单片机成长之路(51基础篇)- 009 关于sdcc的多文件编译范例

2020-01-16来源: eefocus关键字:单片机成  51基础篇  sdcc  多文件编译

  本文是续 单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境编写的。 


  本范例主要由(main.c ,delay.h,delay.c,makefile)4个文件组成,sdcc的编译环境搭建参照:单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境,废话不多,进入主题:


main.c(主函数)


 1 #include "8051.h"

 2 #include "delay.h"

 3 #define uint unsigned int 

 4 #define uchar unsigned char 

 5 uchar tab[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

 6 

 7 void main(void){

 8     uchar i;

 9     while(1){

10         for(i=0;i<8;i++){

11             P1 = tab[i];

12             Delay(100);

13         }

14     }

15 }


delay.h(功能函数声明文件)


1 #ifndef DELAY_H

2 #define DELAY_H

3 #define uint unsigned int 

4 #define uchar unsigned char

6 void Delay(uint xms);

8 #endif


delay.c(功能函数实体函数)


1 #include "delay.h"

3 void Delay(uint xms){

4         uint i,j;

5         for(i=xms;i>0;i--)

6         for(j=110;j>0;j--);

7 }


makefile(make文件)


 1 # CC 编译工具声明

 2 # stc 烧录工具位置

 3 # 功能是编译并完成下载

 4 CC    =sdcc

 5 stc =sudo python /home/jikexianfeng/51-demo/.stcflash/stcflash.py

 6 

 7 all : main.bin 

 8 

 9 download: main.bin

10     $(stc) main.bin

11 

12 #main.bin : main.hex

13 #    ~/51-demo/.Hex2bin-2.5/hex2bin main.hex

14 

15 main.bin : main.hex

16     objcopy -I ihex -O binary main.hex main.bin

17     

18 main.hex : main.ihx

19     packihx main.ihx > main.hex

20 

21 main.ihx : main.rel delay.rel

22     $(CC) main.rel delay.rel

23 

24 main.rel : main.c delay.h

25     $(CC) -c main.c

26     

27 delay.rel : delay.c

28     $(CC) -c delay.c

29 

30 cleanall:

31     rm -rf *.lk *.bin *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map

32 clean:

33     rm -rf *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map


上面make中/home/jikexianfeng/51-demo/.stcflash/stcflash.py是配置的下载驱动文件,详情见:单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境


最后生成main.bin的方法有两种,


方法一,调用sdcc自身的工具:


main.bin : main.hex

    objcopy -I ihex -O binary main.hex main.bin

方法二,使用hex2bin进行编译(安装方法见:单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境):


main.bin : main.hex

    ~/51-demo/.Hex2bin-2.5/hex2bin main.hex

可以根据个人喜好选择使用。

关键字:单片机成  51基础篇  sdcc  多文件编译 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic485877.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:单片机成长之路(51基础篇) - 010 51单片机的中断系统
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

89C51及74LS273、74LS244组成的单片机系统功能实现
已知系统的连接如图所示,试编写程序实现下列功能: (1)编写显示程序,显示“123456”。 (2)编写主程序,功能为:当有键按下(0~7号)时,都显示键号; 无键按下,保持原有显示状态。
发表于 2018-01-05
89C51及74LS273、74LS244组成的单片机系统功能实现
89C51单片机与1片ADC0809组成的数据采集系统编程实例
在1个由89C51单片机与1片ADC0809组成的数据采集系统中,ADC0809的8个输入通道的地址为7FF8H~7FFFH,试画出有关接口电路图,并编写出每隔1分钟轮流采集1次8个通道数据的程序,共采样50次,其采样值存入内RAM20H单元开始的存储区中。图片1参考程序如下:0~7通道地址:fef8h~feffh               ORG       000H   
发表于 2017-10-15
89C51单片机与1片ADC0809组成的数据采集系统编程实例
基于Keil C51集成开发环境的单片机教学探索
后的程序写入单片机的ROM 里运行。这种方法和实际工作中开发一个项目的过程完全相同。其优点有两个:第一,把课程分解成几个教学情境,每个情境都是以实验为先导引伸到理论教学。可以激发学生的学习兴趣,达到学生自主学习的目的。第二,这种方法完全在实验室中进行而且与实际开发项目的过程相同,所以用这方法教出来的学生更适应社会需要。   把单片机教学分成几个教学情境。每个教学情境都是以简单的实验为先导,让学生按照图1连接硬件电路,在台式计算机桌面上双击图标运行KeilC5l,完成简单程序的编辑、汇编。Keil C5l集成开发环境如图2所示。   Keil C51集成开发环境由莱单栏、工具栏、源文件编辑窗口、工程窗口和输出窗口五部
发表于 2013-01-26
基于Keil C51集成开发环境的单片机教学探索
基于Keil C51集成开发环境的单片机教学
和实际工作中开发一个项目的过程完全相同。其优点有两个:第一,把课程分解成几个教学情境,每个情境都是以实验为先导引伸到理论教学。可以激发学生的学习兴趣,达到学生自主学习的目的。第二,这种方法完全在实验室中进行而且与实际开发项目的过程相同,所以用这方法教出来的学生更适应社会需要。 把单片机教学分成几个教学情境。每个教学情境都是以简单的实验为先导,让学生按照图1连接硬件电路,在台式计算机桌面上双击图标运行KeilC5l,完成简单程序的编辑、汇编。Keil C5l集成开发环境如图2所示。[page] Keil C51集成开发环境由莱单栏、工具栏、源文件编辑窗口、工程窗口和输出窗口五部分组成。 工具栏为~ 组快捷工具图标, 主要包括
发表于 2012-07-30
基于Keil C51集成开发环境的单片机教学
由单片机和多片DS1820组成的多点温度测控系统
=X8+X5+X3+1。此外,DS1820尚需依上式为暂存器中的数据来产生一个8位CRC 送给主机,以确保暂存器数据传送无误。 3 多路温度测控仪的电路设计 用单片机控制的多路测度测控仪的电路如图4所示。现用6只DS1820同时测控6路温度(视实际需要还可任意扩展通道数)。图4中采用89C51单片机,其 P1.1口接单线总线。DS1820采用寄生电源供电方式。为保证在有效的DS1820时钟周期内能提供足够的电流,图4中采用一个MOSFET管和 89C51的H.0口来完成对DS1820的总线上拉。P1.2~P1.7口用来输出温度测控信号,经驱动器MC1413后分别驱动6只固态继电器,通过改变加热或致冷系统的工作状态,可实现对被监测系统
发表于 2012-03-07
由单片机和多片DS1820组成的多点温度测控系统
89C51及74LS273、74LS244组成的单片机系统功能实现
已知系统的连接如图所示,试编写程序实现下列功能: (1)编写显示程序,显示“123456”。 (2)编写主程序,功能为:当有键按下(0~7号)时,都显示键号; 无键按下,保持原有显示状态。
发表于 2011-08-23
89C51及74LS273、74LS244组成的单片机系统功能实现
小广播
何立民专栏 单片机及嵌入式宝典

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

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