单片机成长之路(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  多文件编译 引用地址:单片机成长之路(51基础篇)- 009 关于sdcc的多文件编译范例

上一篇:单片机成长之路(51基础篇) - 010 51单片机的中断系统
下一篇:单片机成长之路(51基础篇) - 008 C51 的标示符和关键字

推荐阅读最新更新时间:2024-11-03 14:19

传感器+MCU趋势 数模混合工艺仍存挑战
随着移动智能、物联网等产业的快速发展,对高精度、智能化的需求越来越高,为了使客户能够更快、更便捷地完成系统开发,一些传感器厂商开始提供更加先进的模块化开发平台,即MCU+传感器,以使其具有更强的信息处理能力,这也逐渐成为一种新的技术趋势。但是MCU+传感器需要更加复杂的数模混合制造工艺,未来这一发展趋势到底能走到哪一步,中国企业如何顺应这个走势,均需要仔细观察。 传感器+MCU成重要发展趋势 传感器和微处理器结合、具有各种功能的单片集成化智能传感器,是传感器的主要发展方向。 传感器作为电子产品的“感知中枢”,在消费电子、工业、医疗、汽车等领域的应用越来越广泛。YoleDeveloppement分析师LaurentR
[单片机]
51单片机玩转物联网基础篇06-LCD1602液晶显示器
前言 本节我们开始学习LCD1602,LCD1602是字符型液晶显示屏,在实际项目中应用非常广泛,学完本节就可以逐步开发一些好玩的应用了。 一、基础知识 1.LCD1602简介 LCD1602是字符型液晶显示模块,专门用于显示字母、数字、符号等点阵式LCD,顾名思义,LCD1602一共可以显示两行,每一行能够显示16个字符数据,采用5V供电,具有低功耗、长寿面、搞可靠性等特性,实物图如下: (1) 引脚说明 在 LCD1602 内部含有 80 个字节的 DDRAM,它是用来寄存显示字符的。其地址和屏幕的对应关系如下 从上图可知,LCD1602中80个字节并不是所有的都用来显示数据,只有第一行的00-0F,第二行的4
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>玩转物联网<font color='red'>基础篇</font>06-LCD1602液晶显示器
51单片机玩转物联网基础篇02-点亮LED灯,实现跑马灯效果
前言 上一节,我们完成了51单片机开发环境的搭建,本节我们正式学习51单片机,编程语言的学习,通常是从第一个 hello world 开始,而点灯实验便是单片机学习的开始。 一、基础知识 1.单片机最小系统 一个最小的单片机系统,需要有单片机、电源电路、晶振电路、复位电路组成,这几部分存在就可以使单片机正常工作,如果需要频繁的下载程序,还需增加下载电路。 (1) 单片机 首先,我们先介绍下单片机, 引脚序号名称说明 以下为I/O端口: P0: 第一功能:8位,漏极开路的双向I/O口。用时要加上拉电阻,可驱动8个LS型负载。 第二功能:低8位地址线和8位数据线分时复用;此时为真正的双向三态口。 P1: 8位准
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>玩转物联网<font color='red'>基础篇</font>02-点亮LED灯,实现跑马灯效果
需求激增 MCU解密国产智能芯片主战场
对于国际半导体巨头来说,今年又将会是一个“中国年”,继2012年智能手机出现爆炸式增长,his分析预测,2013年中国低端智能手机需求仍然看好,同时,又将迎来智慧城市、智能家居及可穿戴设备的新一轮消费热点。而这些设备都离不开MCU芯片的应用,现在32位的MCU应用越来越多,广受关注的互联网、物联网等都离不开MCU。然而,目前中国境内智能芯片的需求仍有80%来自国际半导体,再加上32位MCU的设计门槛、投资成本较高,国内很多企业迂回地选择MCU解密来实现智能芯片逆势增长。   MCU解密成国产智能芯片主战场   调查发现,目前智能家电中应用芯片需求量最大的产品是智能空调,一个具有代表性的市场主流空调产品会用到8颗芯片,其中2
[模拟电子]
需求激增 <font color='red'>MCU</font>解密<font color='red'>成</font>国产智能芯片主战场
8/16位MCU应用升级32位将会怎样?
特定应用的 微控制器 选型分类有很多种方法。从 内核处理器 类型和 存储器 总线系统入手是其中常见的一种。是选择8位、 16位 ,还是32位架构,通常有以下几个参考标准:性能级别、可寻址存储器和系统成本。 客户有时还可能遇到各种需要多内核架构的应用,这种情况意味着用户不仅要花更多时间了解并掌握各种内核技术、外设编程技术和工具使用,还要在管理不同架构特性方面额外增加物流费用。 针对这一问题,恩智浦推出了基于32位ARM Cortex-M0处理器内核的LPC1100系列微控制器。该处理器是ARM公司Cortex-M系列尺寸最小的一款,具有32位架构性能、低功耗和超小封装等优点。LPC1100是恩智浦半导体大获成功的L
[工业控制]
8/16位<font color='red'>MCU</font>应用升级<font color='red'>成</font>32位将会怎样?
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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