在 macOS 上实现 51 单片机编程
介绍了如何在macOS上实现对51单片机进行编程,包括环境部署、驱动安装、烧录工具、编译代码等。
标签
嵌入式系统
macOS
想不起来
更新2020-12-30
2943

前言

相比于Windows,macOS 在搭建软件编程环境上十分便捷。但是例如 51 单片机等硬件相关的开发资源,却常常只针对于Windows。使用 Windows 编译 51 单片机,可以使用被广泛使用的集成开发软件 Keil。在 macOS 上,除了安装 Windows 的虚拟机以外,可以使用支持 macOS 的 SDCC 作为编译器。本文将会针对使用 macOS 实现对 51 单片机进行编程。

 

 

开发环境的搭建

安装Homebrew

在我们开始安装 SDCC 之前,我们需要在 macOS 中安装 Homebrew。

Homebrew是一款 macOS 中的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。使用简单的指令,就可以实现包管理,而不用关心各种依赖和文件路径的情况,十分方便快捷。我们安装 SDCC 就将会使用 Homebrew 进行。

首先打开 macOS 中的终端,将下方的命令直接复制进去,就可以自动安装 Homebrew。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

稍等一下,即可完成安装。

 

安装 SDCC

接下来我们将进行 SDCC 的安装。继续打开刚刚使用的终端,将下方的安装命令复制进去。

brew install sdcc

Homebrew 就会帮助我们自动下载并安装好 SDCC。

 

安装驱动程序

为了能够将我们的单片机成功连接到电脑,我们还需要在电脑里安装相应的驱动程序。

点击这里进入WCH的官方驱动下载界面,安装CH340系列和CH341系列的SB转串口 macOS 驱动程序。

解压好下载的压缩文件,运行其中的ch34xInstall.pkg,根据提示完成安装,最后重启电脑即可完成。

 

检查驱动程序

为了检查驱动安装是否正常和匹配,我们可以进行检查。

完成重启后,将单片机连接至电脑,同时打开终端,输入:

ls /dev/tty.wchusbser*

如果终端中出现:

/dev/tty.wchusbserial14110

那么就说明驱动安装成功,单片机已经成功连接。其中14110代表成功连接的单片机型号,根据单片机的不同可能出现差异。如果安装失败,可以重新下载安装。

 

安装烧录工具

为了将我们的程序烧录至单片机内,我们需要额外安装烧录工具。在 macOS 上使用广泛的烧录工具是 stcgal。在安装 stcgal 前,我们首先需要确保电脑中已经安装好 Python 3。如果确认已经安装好 Python 3,就可以跳过以下步骤。如果电脑中使用的是 Python 2 ,或不确定自己安装的 Python 版本,可以使用以下方式进行检查和安装。

 

检查 Python 版本

因为 macOS 中会自带 Python,所以绝大多数情况下都需要额外安装 Python 3。如果你不确定自己电脑中 Python 的版本,可以使用如下方式进行检查。

打开终端,输入:

python

如果显示的是 python 2.X,那么说明需要额外安装。

 

安装 Python 

安装 Python 较为简单,只需要点击这里进入 Python 的官网,下载对应的版本即可。

安装完成后,重新打开终端,输入:

python3

如果出现 Python 3.X,那么就说明安装成功了。

 

安装好 Python 3 以后,我们就可以顺利安装 stcgal了。

打开终端,输入:

./setup.py build

完成构建后,再输入:

sudo ./setup.py install

即可完成安装。

至此,我们已经成功完成了所有编译环境的搭建。

 

 

与 Keil 的区别

需要注意的是,在使用 C 编写代码的时候,SDCC 与 Keil 存在一些差异,根据文档,具体在语法上的差异有这些:

  SDCC Keil
头文件 8051.h/8052.h reg51.h/reg52.h
IO端口 P2_0 P2^0
IO口定义 #define LED P2_0 sbit LED = P2^0
中断函数 void INT0_ISR() __interrupt 0 void INT0_ISR() interrupt 0

在实际编写过程中,需要注意两款编译器在语法上的不同之处。

 

 

编译代码

编写完所需要的代码后,保存为 .c 文件即可。记下代码文件所在文件夹。这里我们假设代码文件为 snowboard.c,文件所在文件夹名为 microcontroller

打开终端,输入:

cd microcontroller

进入目标文件夹。

这里的 microcontroller 应该被替换为实际操作中所使用的文件夹名称。

 

继续在终端输入:

sdcc snowboard.c

这里的 snowboard.c 应该被替换为实际操作中的代码文件名称。

完成后,我们进入 microcontroller 文件夹,其中应该会多出很多文件。在这里,我们只需要使用 snowboard.ihx 文件。

 

回到终端,输入:

ls /dev/tty.wchusbser*

查看单片机的型号。

如果在检查驱动时已经记录下单片机的型号,这一步可以跳过。

 

终端再次输入:

stcgal -P stc89 -p /dev/tty.wchusbserial14110 snowboard.ihx

这里的 14110 指的是我们实际连接的单片机型号,应该被替换为实际操作中的单片机型号。snowboard.ihx 应该被替换为实际操作中的代码文件名称。

 

等待整个过程的结束,如果出现 Waiting for MCU, please cycle power: ,这个时候我们按下单片机的电源键,就可以发现已经成功把代码烧录至单片机中了。

团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号