Mac下单片机开发环境的搭建

先来简单介绍一下51单片机:

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。

最近自己买了一部单片机开发板用来学习,但是大部分单片机开发环境都是基于windows Keil平台,由于自己使用的是Mac,习惯了Mac编程环境,所以中了一些资料,在Mac平台搭建了单片机的开发环境,下图是我买的单片机开发板:

image

下面就来介绍如何在Mac环境来搭建单片机的开发环境!

环境说明

操作系统:macOS High Sierra

这是我电脑系统的版本,理论上支持Mac的所有版本

烧录代码到单片机

安装sdcc

sdcc是用于Intel 8051 Maxim 80DS390和Zilog Z80的ANSI C编译器

在Mac上可以用过 brew 来安装, brew 是Mac的包管理管理工具,就和 redhat 的 yum 和 Ubuntu 的 apt-get 一样。

安装命令:

$ brew install sdcc

安装CH341驱动

开发板上默认已经集成了usb转串口模块,它上面使用的CH340芯片。但是在CH340官网上面没有找到mac系统的驱动,只找到了CH341版本的mac系统驱动,根据官方文档说明,这个驱动也兼容CH340芯片,所以安装CH341版本的驱动就可以了。

下载地址:CH341 for mac

然后将下载好的 zip文件解压打开双击运行目录里面的ch34xInstall.pkg,根据提示一直点击下一步就可以了,最后按照提示重启电脑就可以了。

怎么确认驱动安装成功了呢???

将单片机连接到电脑上然后打开iTerm命令行窗口后执行:

$ ls /dev/tty.wchusbser*

如果输出类似下面的数据就说明驱动安装成功!

$ ls /dev/tty.wchusbser*
/dev/tty.wchusbserial1410

安装烧录程序stcgal

在linux和mac系统下使用得比较多的是stcgal

下载地址:https://github.com/grigorig/stcgal

下载好的这个是python脚本,所以我们需要提前安装python,一般情况下mac里面已经默认安装了python,但是最新版本只支持 python3,所以需要安装 python3 版本,我的这篇文章介绍了 python3 的安装,需要的话可以看看: https://www.fkomm.cn/article/2018/7/16/12.html

下载后解压
运行 ./setup.py build 以构建并 sudo ./setup.py install 来安装 stcgal。

这样开发环境就搭建完啦,下面我们来测试一下!!!

测试单片机跑马灯

编写测试代码,将保存为pmd.c

#include <8052.h> // 引用头文件


#define ADDR0 P1_0
#define ADDR1 P1_1
#define ADDR2 P1_2
#define ADDR3 P1_3
#define ENLED P1_4


//========= 延时 ============
void delay_ms(unsigned int s){

    unsigned int x;

    for(s;s>0;s--){
        x = 98;
        while(x--);
    }
}

//================ 主函数 ===================

void main(){

    unsigned char i;
    
    ENLED = 0;
    ADDR3 = 1;
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;

    while(1){ //主循环
    
        P0 = 0xff;

        delay_ms(150);

        for(i = 0;i<8;i++){
            P0 = P0 <<1;
            delay_ms(150);
        }

        P0 = 0xff;
        
        delay_ms(150);

        for(i = 0;i<8;i++){
            P0 = P0 >>1;
            delay_ms(150);
        }
    }
}

使用sdcc编译程序

sdcc默认会帮我们编译出很多目标文件,这里我们只需要.ihx后缀的文件就可以,其它的文件可以删除。

$ sdcc pmd.c

$ ls
pmd.asm pmd.c   pmd.ihx pmd.lk  pmd.lst pmd.map pmd.mem pmd.rel pmd.rst pmd.sym

将代码烧录到开发板中

下面的参数 -P 表示使用的是stc89型号, -p /dev/tty.wchusbserial1410 表示usb串口设备 , pmd.ihx 是刚刚编译好的程序!

➜ $ stcgal -P stc89 -p /dev/tty.wchusbserial1410 pmd.ihx
Waiting for MCU, please cycle power: done
Protocol detected: stc89
Target model:
  Name: STC89C52RC/LE52R
  Magic: F002
  Code flash: 8.0 KB
  EEPROM flash: 6.0 KB
Target frequency: 11.088 MHz
Target BSL version: 6.6C
Target options:
  cpu_6t_enabled=False
  bsl_pindetect_enabled=False
  eeprom_erase_enabled=False
  clock_gain=high
  ale_enabled=True
  xram_enabled=True
  watchdog_por_enabled=False
Loading flash: 203 bytes (Intel HEX)
Switching to 19200 baud: checking setting testing done
Erasing 2 blocks: done
Writing flash: 640 Bytes [00:00, 1801.87 Bytes/s]
Setting options: done
Disconnected!

这样就可以在单片机上看到你需要的效果啦!!!

重点

使用sdcc编译单片机程序,跟windows下面keil的c代码是有一些差别的,列表如下:

可以看到,这个差别是非常小的。所以对于初学者来说,一定要注意不要用错了头文件的引用,虽然会报错,但还是要注意一下,提高编程的效率。其它的内容,碰到了就注意用对应的语法,碰不暂时就不用管。

此文章同时同步到我的个人博客緣來來來 » Mac下单片机开发环境的搭建

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容