欢迎光临拨动开关网站,我们提供优质的产品

微型拨动开关厂家

防水微动开关生产,三挡拨动开关定制价格

[单片机接PNP接近开关]单片机---Mac下的开发环境【1】(STC单片机 + SDCC + Stcgal)

作者:希文      发布时间:2021-04-17      浏览量:0
十年前接触单片机,由此进入编程世界,第

十年前接触单片机,由此进入编程世界,第一次领略了软硬件开发的魅力。直到现在我一直认为那段经历对于非科班程序员的我的帮助是极其深远的。

近两年我的工作分布在Linux、macOS、Windows三个操作系统上,随着项目增多和涉及的领域越来越多,越来越觉得经常要在不同的系统上换来换去的工作,很是不爽,虽然都是物理机(三个系统对应三台物理机,就是这么任性,没办法,哈哈),但依然觉得要记得哪个项目在哪个电脑上,或者最近一直在Mac上面工作,突然切换到Win会很不习惯是一件浪费我精力的事情。

所以,最近完成了一件不大不小的任务。那就是我把所有项目及相关代码全部迁移到Mac上,并对所有项目全部在Mac完成了编译、测试,并全部完美通过!决心今后只用Mac解决我所有的需求。

完成了专心使用Mac的准备工作后,在家没什么事情,就想起了静静躺在抽屉最里面的51单片机学习版,是它让我领略编程之美,让我爱上软件开发(当然我也喜欢硬件开发,但是很菜,后续也会有在Mac上硬件设计相关文章)。于是拿出来把玩一下。

但是在Mac上进行单片机开发不是很常见,没有Keil等工具使用,但经过各种Google,完成了基本环境的搭建。于是有了这篇文章来记录一下。

一、搭建开发环境

背景介绍

编译阶段

安装编译器

编译器我们使用 SDCC ,下面是官网上的介绍:

简单翻译一下,就是说:

SDCC的安装

可以选择在官网下载安装包,可以通过包管理工具安装,甚至你可以自己编译 SDCC 的源码来安装(Linux 可能需要)。

我们在Mac上通常使用 brew 这个包管理工具,通过 brew 来安装 SDCC 的命令:

~ brew install sdcc

安装结束后使用如下命令查看 SDCC 版本信息:

~ sdcc -vSDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.8.0 #10562 (Mac OS X x86_64)published under GNU General Public License (GPL)。

到此,编译器 SDCC 就安装成功了。

编译代码

我们首先写一个简单的跑马灯 led.c,用 SDCC 编译,代码如下:

#include <8052.h>void delay_ms(unsigned int ms){ unsigned char i; while (ms--) { for (i = 0; i < 120; i++) ; }}void main(){ unsigned char i; while (1) { P1 = 0xff; i = 8; while (i--) { P1 = P1 << 1; delay_ms(300); } P1 = 0xff; i = 8; while (i--) { P1 = P1 >> 1; delay_ms(300); } }}

代码写好了,使用如下命令编译:

~/led sdcc led.c~/led lsled.asm led.c led.ihx led.lk led.lst led.map led.mem led.rel led.rst led.sym。

SDCC 编译器编译完成之后,会生成很多文件,有的是中间件,有的是可以当做库提供给他人的,这里我们主要关心 led.ihx 文件,这个文件是可以烧录到单片机的可执行文件。

至此,编译阶段的任务就全部都完成了。那么代码编译好之后,如何装入单片机并执行呢?下面就说一些烧录阶段。

烧录阶段

连接、驱动

我的学习板是板载USB转串口模块的,芯片是 PL2303,需要安装 PL2303 Mac 版本的驱动程序,这样通过 USB 连接到学习板后,就可以发现设备。驱动下载地址在上面的背景介绍中。CH340 芯片的同理,安装好驱动后,其他没有差别。

驱动安装后必须要重启电脑,电脑重启后,将电脑和学习板通过 USB 连接起来,如下图:

打开终端,执行如下命令:

~/led ls /dev/tty.*/dev/tty.Bluetooth-Incoming-Port /dev/tty.usbserial。

其中 /dev/tty.usbserial 就是学习板 USB 转串口设备,一会儿要用到这个设备进行烧录。

安装烧录工具

烧录工具我知道的有: stcgal 和