本文是续 单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境编写的。
本范例主要由(main.c ,delay.h,delay.c,makefile)4个文件组成,sdcc的编译环境搭建参照:单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境,废话不多,进入主题:
main.c(主函数)
#include "8051.h"
#include "delay.h"
#define uint unsigned int
#define uchar unsigned char
uchar tab[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main(void){
uchar i;
while(){
for(i=;i<;i++){
P1 = tab[i];
Delay();
}
}
}
delay.h(功能函数声明文件)
#ifndef DELAY_H
#define DELAY_H
#define uint unsigned int
#define uchar unsigned char void Delay(uint xms); #endif
delay.c(功能函数实体函数)
#include "delay.h" void Delay(uint xms){
uint i,j;
for(i=xms;i>;i--)
for(j=;j>;j--);
}
makefile(make文件)
# CC 编译工具声明
# stc 烧录工具位置
# 功能是编译并完成下载
CC =sdcc
stc =sudo python /home/jikexianfeng/-demo/.stcflash/stcflash.py all : main.bin download: main.bin
$(stc) main.bin #main.bin : main.hex
# ~/-demo/.Hex2bin-2.5/hex2bin main.hex main.bin : main.hex
objcopy -I ihex -O binary main.hex main.bin main.hex : main.ihx
packihx main.ihx > main.hex main.ihx : main.rel delay.rel
$(CC) main.rel delay.rel main.rel : main.c delay.h
$(CC) -c main.c delay.rel : delay.c
$(CC) -c delay.c cleanall:
rm -rf *.lk *.bin *.asm *.lst *.mem *.rst *.lnk *.rel *.sym *.ihx *.hex *.map
clean:
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
~/-demo/.Hex2bin-2.5/hex2bin main.hex
可以根据个人喜好选择使用。