首页 在macOS下搭建51单片机开发环境
文章
取消

在macOS下搭建51单片机开发环境

背景

之前接触了一下摄像头的开发,突然对单片机开发产生了兴趣,最近弄了一个51单片机自己研究。几经折腾,最小系统焊了一个,买了一个。现在到了自己烧程序这步,发现很多都是使用Keil uVision开发,使用STC-ISP烧入,还需要CH340驱动。但是这都是Windows平台的,不想换电脑,也不行使用虚拟机,就找了一下再macOS上搭建开发环境,还真的很简单。

设备

  • Macbook Pro ( Intel ),如果其他版本可能需要实测

  • STC89C52RC 单片机及开发板

软件

  • CH340/CH341 的 USB 转串口驱动程序

  • 交叉编译器 sdcc

  • 程序下载器 stcgal

  • 一个趁手的代码编辑器,如:vscode

驱动安装

沁恒微电子提供了 CH340/CH341 的 USB 转串口驱动程序。

点击 CH341SER_MAC.ZIP 下载

解压后运行 pkg 文件,按照提示即可简单的完成安装。

软件安装

1
2
3
4
5
# 交叉编译器 sdcc 安装
brew install sdcc

# stcgal 安装
pip install stcgal

测试

下面将写一个代码让单片机控制一个 LED 灯闪烁。

电路说明

使用焊好的 51 单片机最小系统:

  1. 连接LED:将 LED 灯的正极连接到单片机的 P25 针脚,LED 负极连接 GUN 针脚

  2. 连接下载器:将下载器的 GUN 连接到单片机的 GUN,下载器的 RXD(Receive接收) 连接到单片机的 TXD(Transmit发射),下载器的 TXD 连接到单片机的 RXD,下载器的 VCC 连接到单片机的 VCC。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <8051.h>
#define LED P2_5

// sbit LED = P1_0; // 定义LED灯连接到P1.0引脚

void Delay(unsigned int ms) { // 延时函数
    unsigned int i, j;
    for (i = ms; i > 0; i--)
        for (j = 110; j > 0; j--); // 简单的延时循环
}
void main() {
    while (1) {
        LED = 0; // 点亮LED灯(低电平有效)
        Delay(500); // 延时500毫秒
        LED = 1; // 熄灭LED灯(高电平)
        Delay(500); // 延时500毫秒
    }
}

注意

macOS 环境下的代码和 Windows 环境下的代码有略有区别:

区别WindowsmacOS
头文件reg51.h/reg52.h8051.h/8052.h
IO端口P2^5P2_5
IO端口定义sbit LED = P1_0;#define LED P2_5
中断函数void INTO_ISR() interrupt 0void INTO_ISR() __interrupt 0

编译

1
2
# 编译
sdcc main.c

编译

编译完成后会在目录下生成好几个文件,这里面的 .ihx 就是我们最终要烧入的程序。

编译生成的文件

注意:这个 .ihx 是 macOS 系统下生成的文件,如果是Windows生成的是 .hex 文件。

烧入

1
2
# 查找串口设备
ll /dev/tty.*

查看串口设备

1
2
# 烧入
stcgal -P stc89 -p /dev/tty.wchusbserial-1410 main.ihx

烧入

注意:执行完烧入命令后,会返回Waiting for MCU, please cycle power:,然后一直等着,这个时候需要断电一下再上电(断开 VCC 的连接线,再插上即可)。

注意

  • 下载器的 RXD(Receive接收) 连接到单片机的 TXD(Transmit发射),下载器的 TXD 连接到单片机的 RXD,是交叉连接而不是对应连接,不要接错了。

  • 为了保护 LED 不会被烧坏,可以连接一个电阻。

  • 如果是买的现成的最小系统,可能晶振是没有焊接一起的,需要手动插上。

  • 这个过程中不需要另外接电源,因为下载器已经供电了(通过 VCC 和 GUN 供电)。

  • 单片机不要插反了,对好缺口。

  • 代码控制的是 P25 针脚,LED 插到其他针脚不会闪烁,只会常亮。

参考资料

  1. 在 macOS 下搭建 51 单片机开发环境

  2. mac上玩 51 也是挺爽的

  3. 沁恒微电子提供了 CH340/CH341 的 USB 转串口驱动程序

  4. macOS搭建51单片机开发环境

本文由作者按照 CC BY 4.0 进行授权

串口工具:Minicom和Screen

javascript基础-Fetch处理网络请求