在Windows系统中可以使用Keil + VS Code + EIDE
来对8051单片机进行开发,在Ubuntu中可以直接使用SDCC + stcgal + Vs Code
开发
一、安装SDCC
SDCC(Small Device C Compiler)
是一个可重定向目标的、优化的标准C编译器套件,支持ANSI C89、ISO C99和ISO C11,适用于多种微控制器,在Ubuntu系统中可以使用apt来安装它
bash
sudo apt install sdcc
二、安装Python、pip,创建Venv环境
Ubuntu系统通常默认安装Python与pip,可以输入命令验证下版本:
bash
python --version
pip --version
或者
bash
python3 --version
pip3 --version
如果没有安装pip,可以输入命令来安装pip
bash
sudo apt install python3-pip
接下来安装Venv创建虚拟环境:
bash
sudo apt install python3-venv
验证下Venv版本:
bash
python3 -m venv --version
接下来即可创建用于STC51单片机开发的Python虚拟环境:
bash
python3 -m venv OhYeah
这里需要记录下安装路径,方便以后启动这个环境,接下来启动这个Venv虚拟环境
bash
source OhYeah/bin/activate
当计算机名称前出现()
包裹着环境名称时,代表环境创建成功
安装stcgal烧录工具
stcgal
是一个用于STC MCU ISP闪存的Python工具,可以用于烧录程序到STC51单片机中,在Python的Venv环境中输入命令:
bash
pip3 install stcgal
安装CH340驱动
通常Ubuntu会自带串口驱动,但还是推荐检查下,可以输入命令列出所有连接的USB设备
bash
lsusb
看到以下类似的显示代表连接成功
bash
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics CH340 serial converter
如果无法识别可以安装这个方法安装CH340驱动:Ubuntu系统安装CH340驱动
五、编写并烧录代码
接下来编写一段代码来点亮一个LED灯:
c
// main.c
#include <8051.h>
void Delay(unsigned int t) {
while (--t);
}
void main(void) {
while (1) {
P1 = 0xfe; // 赋初始值
Delay(50000);
P1 <<= 1;
}
}
随后编译代码为.ihx文件:
c
sdcc main.c
再将.ihx转换为.hex文件:
c
packihx main.ihx > main.hex
接下来查询下STC51单片机所在的串口号:
c
ls /dev/ttyUSB*
我的是/dev/ttyUSB0
随后即可输入命令开始烧录,这里由于权限问题,需要加入Python虚拟环境的路径:
bash
/home/GAYBOY/OhYeah/bin/python3 -m stcgal -p /dev/ttyUSB0 -P stc89 main.hex
最后再给STC51单片机断电上电,烧录成功了
六、配置VS Code
在VS Code中使用SDCC可能会出现导入头文件报错的现象,虽然不会影响正常导入,但是看上去会比较闹心,这里在工作文件夹按Ctrl + Shift + p
后内输入命令创建c_cpp_properties.json
文件:
bash
C/C++: Edit Configurations (JSON)
c_cpp_properties.json内容大体如下,includePath
和compilerPath
部分写入sdcc头文件和sdcc的地址,这样再导入头文件时就不会报错了:
json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/share/sdcc/include/mcs51/"
],
"defines": [],
"compilerPath": "/usr/bin/sdcc",
"cStandard": "c99",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}