1.在linnux系统中给51单片机下载程序
1.第一步先要安装sdcc
sudo apt-get install sdcc
2.第二步下载51单片机烧录程序的软件**
git clone https://github.com/laborer/stcflash
3.第三步打开主目录页面找到文件stcflash
cd stcflash
4.第四步进入stcflash,
stcflash有三个文件分别是
LICENSE README.md stcflash.py
把stcflash.py改成1
mv stcflash.py 1
然后给权限 chmod +x 1
5.第五步把“1”添加到环境变量中去
sudo mv 1 /usr/local/bin/
6.第六步安装一个依赖包
sudo apt-get install python-serial如果Linux系统内部有的话就可以不用下载。
7.第七步创建一个.c文件
例如:vim led.c
编写完程序之后用 sdcc led.c编译一下
编译完之后会出现一下文件
led.asm led.c led.ihx led.lk led.lst led.map led.mem led.rel led.rst led.sym
但是没有hex文件51单片机下载的文件必须要有.hex文件所以要生成.hex文件
生成指令如下:packihx led.ihx >led.hex
生成完之后编译文件里便会多一个led.hex文件
8.第八步生成完之后到最后一步就是下载到单片机里面去了
下载指令如下:
sudo 1 led.hex
注意:在改完程序后每次编译完之后必须要使用packihx led.ihx >led.hex指令来更新.hex里面的代码,如果只编译
不转换的话程序更改的则会无效。
9.多文件项目
SDCC并不支持同时编译多个源代码文件,所以多文件项目的编译需要分步进行.假如你的项目包含led.c delay.c delay.h三个文件,那么编译过程如下:
sdcc -c led.c
sdcc -c delay.c
sdcc led.c delay.rel
还可以使用以下方式编译:
sdcc -c led.c
sdcc led.rel delay.rel
2.用makefile编译下载程序流程
1.先创建一个makefile文件,创建过程如下
touch makefile //不需要任何后缀
2.在makefile里面写上如下代码
MAINSRC := led.c #含有main函数的主函数放在这里后续如果要改变代码名称XX.c就可以了
SRCS := delay.c #所有的副文件驱动文件都放在这一段如果在加的话就是间隔一个空格在后面加上所需要的文件例如 : delay.c beep.c
MAIN :=
(
p
a
t
s
u
b
s
t
(patsubst %.c,%,
(patsubst(MAINSRC))
OBJS :=
(
p
a
t
s
u
b
s
t
(patsubst %.c,%.rel,
(patsubst(SRCS))
HEADERS := $(wildcard *.h)
CFLAGS := -Wall -g -O2 -Werror
OBJS2 := $(MAIN).ihx
TARGET:= $(MAIN).hex
CC := sdcc
.PHONY: all check xz
all: $(TARGET)
xz:
sudo 1 $(TARGET)
(
T
A
R
G
E
T
)
:
(TARGET) :
(TARGET):(OBJS2)
packihx $< > $@
$(OBJS2): $(OBJS)
$(CC) -o $@ $^ $(MAINSRC)
$(OBJS): $(SRCS) $(HEADERS)
$(CC) -o $@ -c $<
clean:
$(RM) $(OBJS)
$(RM) $(TARGET)
$(RM) $(OBJS2)
#其余的不需要改
3.编译流程如下
在命令行输入make就可以了
如果出现以下情况:
就在执行以下命令
make clean
之所以出现这样的问题是因为你的.c .h文件没有更改过如果更改过就不会出现这样的情况了
4.更新hex文件
makefile里面会自动把ihx文件转换成hex文件,同时你用make编译的时候也会自动更新hex文件
5.下载程序
下载程序在命令行输入 make xz 就可以了
注意事项:51单片机必须要冷启动不然下载不进去,目前现在只支持stc89c51的单片机别的型号好像下载不了后续的话会更新
把ihx文件转换成hex文件,同时你用make编译的时候也会自动更新hex文件
5.下载程序
下载程序在命令行输入 make xz 就可以了
注意事项:51单片机必须要冷启动不然下载不进去,目前现在只支持stc89c51的单片机别的型号好像下载不了后续的话会更新
sudo find / -name “8051.h” -type f //查找51库的所在位置