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

Posted jikexianfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例相关的知识,希望对你有一定的参考价值。

本范例主要由(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
5 
6 void Delay(uint xms);
7 
8 #endif

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

1 #include "delay.h"
2 
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    =sdcc
 2 stc =sudo python /home/jikexianfeng/51-demo/.stcflash/stcflash.py
 3 
 4 all : main.bin
 5 
 6 #main.bin : main.hex
 7 #    ~/51-demo/.Hex2bin-2.5/hex2bin main.hex
 8 
 9 main.bin : main.hex
10     objcopy -I ihex -O binary main.hex main.bin
11     $(stc) main.bin
12     
13 main.hex : main.ihx
14     packihx main.ihx > main.hex
15 
16 main.ihx : main.rel delay.rel
17     $(CC) main.rel delay.rel
18 
19 main.rel : main.c delay.h
20     $(CC) -c main.c
21     
22 delay.rel : delay.c
23     $(CC) -c delay.c
24 
25 cleanall:
26     rm -rf *.lk *.bin *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map
27 clean:
28     rm -rf *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map

 

以上是关于单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例的主要内容,如果未能解决你的问题,请参考以下文章

单片机成长之路(51基础篇) - 018 keil51的STARTUP.A51

单片机成长之路(51基础篇) - 016 常见总线类型

单片机成长之路(51基础篇) - 008 C51 的标示符和关键字

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

单片机成长之路(51基础篇) - 020 51单片机寄存器功能一览表

单片机成长之路(51基础篇)- 002 STC单片机冷启动和复位有什么区别