Mac下單片機(jī)開(kāi)發(fā)環(huán)境的搭建

先來(lái)簡(jiǎn)單介紹一下51單片機(jī):

51單片機(jī)是對(duì)所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8004單片機(jī),后來(lái)隨著Flash rom技術(shù)的發(fā)展,8004單片機(jī)取得了長(zhǎng)足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號(hào)是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測(cè)控系統(tǒng)之中。很多公司都有51系列的兼容機(jī)型推出,今后很長(zhǎng)的一段時(shí)間內(nèi)將占有大量市場(chǎng)。51單片機(jī)是基礎(chǔ)入門的一個(gè)單片機(jī),還是應(yīng)用最廣泛的一種。需要注意的是51系列的單片機(jī)一般不具備自編程能力。

單片機(jī)c語(yǔ)言編程是基于C語(yǔ)言的單片機(jī)編程。單片機(jī)的C語(yǔ)言采用C51編譯器(簡(jiǎn)稱C51)。由C51產(chǎn)生的目標(biāo)代碼短,運(yùn)行速度高,存儲(chǔ)空間小,符合C語(yǔ)言的ANSI標(biāo)準(zhǔn),生成的代碼遵循Intel目標(biāo)文件格式,而且可與A51匯編語(yǔ)言PL/M51語(yǔ)言目標(biāo)代碼混合使用。

最近自己買了一部單片機(jī)開(kāi)發(fā)板用來(lái)學(xué)習(xí),但是大部分單片機(jī)開(kāi)發(fā)環(huán)境都是基于windows Keil平臺(tái),由于自己使用的是Mac,習(xí)慣了Mac編程環(huán)境,所以中了一些資料,在Mac平臺(tái)搭建了單片機(jī)的開(kāi)發(fā)環(huán)境,下圖是我買的單片機(jī)開(kāi)發(fā)板:

image

下面就來(lái)介紹如何在Mac環(huán)境來(lái)搭建單片機(jī)的開(kāi)發(fā)環(huán)境!

環(huán)境說(shuō)明

操作系統(tǒng):macOS High Sierra

這是我電腦系統(tǒng)的版本,理論上支持Mac的所有版本

燒錄代碼到單片機(jī)

安裝sdcc

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

在Mac上可以用過(guò) brew 來(lái)安裝, brew 是Mac的包管理管理工具,就和 redhat 的 yum 和 Ubuntu 的 apt-get 一樣。

安裝命令:

$ brew install sdcc

安裝CH341驅(qū)動(dòng)

開(kāi)發(fā)板上默認(rèn)已經(jīng)集成了usb轉(zhuǎn)串口模塊,它上面使用的CH340芯片。但是在CH340官網(wǎng)上面沒(méi)有找到mac系統(tǒng)的驅(qū)動(dòng),只找到了CH341版本的mac系統(tǒng)驅(qū)動(dòng),根據(jù)官方文檔說(shuō)明,這個(gè)驅(qū)動(dòng)也兼容CH340芯片,所以安裝CH341版本的驅(qū)動(dòng)就可以了。

下載地址:CH341 for mac

然后將下載好的 zip文件解壓打開(kāi)雙擊運(yùn)行目錄里面的ch34xInstall.pkg,根據(jù)提示一直點(diǎn)擊下一步就可以了,最后按照提示重啟電腦就可以了。

怎么確認(rèn)驅(qū)動(dòng)安裝成功了呢???

將單片機(jī)連接到電腦上然后打開(kāi)iTerm命令行窗口后執(zhí)行:

$ ls /dev/tty.wchusbser*

如果輸出類似下面的數(shù)據(jù)就說(shuō)明驅(qū)動(dòng)安裝成功!

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

安裝燒錄程序stcgal

在linux和mac系統(tǒng)下使用得比較多的是stcgal

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

下載好的這個(gè)是python腳本,所以我們需要提前安裝python,一般情況下mac里面已經(jīng)默認(rèn)安裝了python,但是最新版本只支持 python3,所以需要安裝 python3 版本,我的這篇文章介紹了 python3 的安裝,需要的話可以看看: https://www.fkomm.cn/article/2018/7/16/12.html

下載后解壓
運(yùn)行 ./setup.py build 以構(gòu)建并 sudo ./setup.py install 來(lái)安裝 stcgal。

這樣開(kāi)發(fā)環(huán)境就搭建完啦,下面我們來(lái)測(cè)試一下!!!

測(cè)試單片機(jī)跑馬燈

編寫測(cè)試代碼,將保存為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


//========= 延時(shí) ============
void delay_ms(unsigned int s){

    unsigned int x;

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

//================ 主函數(shù) ===================

void main(){

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

    while(1){ //主循環(huán)
    
        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默認(rèn)會(huì)幫我們編譯出很多目標(biāo)文件,這里我們只需要.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

將代碼燒錄到開(kāi)發(fā)板中

下面的參數(shù) -P 表示使用的是stc89型號(hào), -p /dev/tty.wchusbserial1410 表示usb串口設(shè)備 , 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!

這樣就可以在單片機(jī)上看到你需要的效果啦?。?!

重點(diǎn)

使用sdcc編譯單片機(jī)程序,跟windows下面keil的c代碼是有一些差別的,列表如下:

可以看到,這個(gè)差別是非常小的。所以對(duì)于初學(xué)者來(lái)說(shuō),一定要注意不要用錯(cuò)了頭文件的引用,雖然會(huì)報(bào)錯(cuò),但還是要注意一下,提高編程的效率。其它的內(nèi)容,碰到了就注意用對(duì)應(yīng)的語(yǔ)法,碰不暫時(shí)就不用管。

此文章同時(shí)同步到我的個(gè)人博客緣來(lái)來(lái)來(lái) ? Mac下單片機(jī)開(kāi)發(fā)環(huán)境的搭建

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容