历史上的今天
返回首页

历史上的今天

今天是:2025年01月16日(星期四)

正在发生

2020年01月16日 | 单片机成长之路(51基础篇)- 009 关于sdcc的多文件编译范例

2020-01-16 来源:eefocus

  本文是续 单片机成长之路(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

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

推荐阅读

史海拾趣

General Diode Corp公司的发展小趣事
检查冷却系统是否正常运行,清理散热片上的灰尘和杂物;若冷却风扇损坏,则需更换新的风扇。
Avic公司的发展小趣事

Avic公司注重提升自主创新能力,不断加大在航空电子技术领域的研发投入。公司建立了一支高素质的研发团队,并积极引进国内外先进的研发设备和技术。这些措施有效提升了公司的创新能力,为公司在航空电子领域的持续发展提供了有力保障。

爱普特微(aptchip)公司的发展小趣事

创立不久,爱普特微电子便迎来了一次重大的技术突破。公司成功研发出了全国产、全自主可控、高可靠性的32位微处理器芯片。这一产品的推出,不仅填补了国内市场的空白,更以其卓越的性能和稳定性,赢得了市场的广泛认可。随后,公司又基于自研IP库及RISC架构内核,量产了一系列全国产高可靠性32位MCU产品,广泛应用于工业控制、物联网、智能家电等领域。

Cavium Networks公司的发展小趣事

随着消费者对家庭娱乐和智能生活的需求不断增长,Cavium Networks 敏锐地捕捉到了这一市场趋势。公司推出了面向消费者市场的无线显示解决方案 WiVu,利用最新的笔记本电脑技术如嵌入式 DisplayPort 和显示迷你卡(DMC),为多房间和交互式应用提供了高性能的 Wi-Fi 无线显示解决方案。WiVu 的推出不仅满足了消费者对便捷、高效、高质量的娱乐体验的需求,也引领了市场的新潮流,进一步巩固了 Cavium Networks 在电子行业中的地位。

Andigilog公司的发展小趣事

随着消费者对家庭娱乐和智能生活的需求不断增长,Cavium Networks 敏锐地捕捉到了这一市场趋势。公司推出了面向消费者市场的无线显示解决方案 WiVu,利用最新的笔记本电脑技术如嵌入式 DisplayPort 和显示迷你卡(DMC),为多房间和交互式应用提供了高性能的 Wi-Fi 无线显示解决方案。WiVu 的推出不仅满足了消费者对便捷、高效、高质量的娱乐体验的需求,也引领了市场的新潮流,进一步巩固了 Cavium Networks 在电子行业中的地位。

Foxboro I C T Inc公司的发展小趣事

随着消费者对家庭娱乐和智能生活的需求不断增长,Cavium Networks 敏锐地捕捉到了这一市场趋势。公司推出了面向消费者市场的无线显示解决方案 WiVu,利用最新的笔记本电脑技术如嵌入式 DisplayPort 和显示迷你卡(DMC),为多房间和交互式应用提供了高性能的 Wi-Fi 无线显示解决方案。WiVu 的推出不仅满足了消费者对便捷、高效、高质量的娱乐体验的需求,也引领了市场的新潮流,进一步巩固了 Cavium Networks 在电子行业中的地位。

问答坊 | AI 解惑

运算放大器

本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 呵呵 今年大赛的原件清单有运算放大的 给大家发个运算放大的资料 希望对大家有所帮助!  …

查看全部问答>

evc4转 vc2005 的问题

原来是用ce4.2的系统 用的是evc4 现在系统改成ce5.0的   想用vc2005   因为可以单步调试. 但有个消息函数一直没有找到, 请大家在vc2005上面怎么做告诉下我 PreTranslateMessage(MSG* pMsg) evc4和vc6  我知道 ...…

查看全部问答>

猎头职位:赴美国工程师!咨询13381085719 13381085771刘先生

猎头职位:赴美国工程师!咨询13381085719 13381085771刘先生…

查看全部问答>

新手问一个关于data,idata,xdata的问题

由于程序里面定义了一些比较大的idata类型的全局变量,导致256字节的ram不够用了。选择的是small模式,在不考虑优化的情况下,可以把这里的idata类型变量随意的改为xdata类型吗?…

查看全部问答>

SI4432直接模式

有没有哪位大虾做过Si4432直接模式的,给小弟指导一下啊,我用si4432做串口透明传输,如果用FIFO模式,串口速率达到9600bps的时候,空中速率要很高啊,我改用直接模式,但不知道咋个弄,资料上介绍很少,而且我是刚接触这块儿不久的一个菜鸟,各种 ...…

查看全部问答>

参量放大器

参量放大器有它很大的优势。早期半导体器件水平很低时,用它作低噪声电路,在RF领域占居相当重要的位置。   现在的飞秒激光,离不开参量电路。   老外的参量电路,帖个图,大家欣赏   …

查看全部问答>

关于协议栈和硬件资源的匹配问题

zigbee协议是个泛指的概念,它实际是一系列的协议标准与规范,并不是实际的代码,当然也不能实际使用.到目前为止已经出了3个版本,分别是2004,2006,2007. 以TI公司为代表的几家, 参照了3个不同的ZIGEBEE版本,又结合各自厂家推出的硬件平台,分别开发出 ...…

查看全部问答>

基于STM32的USB程序开发笔记

基于STM32的USB开发笔记,有兴趣的朋友可以收藏一下…

查看全部问答>

关于MSP430F5438的自检程序

各位,大虾好,请有没有关于MSP430F5438好坏的自检程序,就是对MCU内部的各个内设都有一个自检,就像示波器自检功能那样,通过逐一打开面板上的所有灯来告诉我们示波器硬件是否OK?在此表示感谢。 …

查看全部问答>

单片机

怎么让单片机控制音乐播放与流水灯同时运行?…

查看全部问答>