一、應廣單片機的Mini-C語言基礎

一、概述

        項目需要性價比高一點的芯片,在澄海這邊,臺灣的芯片佔了很大的市場。臺灣芯片的特點是便宜,沒辦法,玩具出口生產量太大,1分錢的差價都有可能累積出大價錢。選型時選了應廣單片機。對於用慣了C開發的人,用匯編來開發還是有些抗拒的。看了一下簡介,應廣單片機支持Mini-C語言,一看就跟C語言有關,我們來了解一下:

二、Mini-C介紹

       應廣科技的MINI-C語法結構,是一種界於標準C和彙編的一種語言,對於小資源的MCU來說,該語法非常精簡實用。

    

也就是說,對比彙編程序,它的編寫方法基本保留了C語言的風格。非常適合剛入手這款芯片的朋友。

三、基礎規則

        1、變量定義:大多數新手在C51中用 unsigned char 定義8位變量,unsigned int 定義16位變量,但是在Mini-C裏。實驗使用:    BYTE      爲 8-BIT  數據型態;

              WORD   爲 16 BIT;

              EWORD 爲 24 BIT;

              DWORD 爲 32 BIT。

相當於 #define  BYTE  unsigned char  ; #define  WORD  unsigned int 已經內部幫你設置好了。對比中應該看到我用了大寫,我們知道在彙編中,沒有大小寫的區分,在這個 Mini-C 語言中,也沒有大小寫的區分

         所有的 WORD 變量,皆可以當 Point 使用。讀取 ROM 的方法,一般有如下三種語法:

        ○  *Point$L    (取 Low Byte)。
        ○  *Point$H    (取 High Byte)。

        ○  *Point$W    (取 WORD)。

四、程序表達

        C語言作爲面向過程的語言,在這個Mini-C裏表現的尤爲徹底,先說一個短板,函數表達式不能帶參數,也不能傳出參數。這個玩法確實有點坑,不過好在彙編的語法它也支持一點,這樣就好辦了,我們用 累加器A 充當幫運工,帶進數據和帶出數據。

        優點在於,程序表達是保留了很多指令,這就爲程序設計提供了很好的便捷性了。舉個例子:

            WORD    ww;
            BIT     Bit_1;
            Bit_1   =   1;     //  等同於 SET1  Bit_1
            Bit_1   =   0;     //  等同於 SET0  Bit_1
            ww.15   =   1;  //  等同於 SET1  ww.15,等同於 SET1  [email protected]
            .DELAY    50;   //延時50個指令周
通過查閱芯片的中文手冊,即可得到芯片支持的指令。對於未知指令是否支持,也可以使用一下方法來查詢:

語法:_SYS(OP:指令) :   如果指令存在,則回傳 1。
        指令的格式,採用各系列 IC 的 datasheet 的指令集命名方法。
    
        #if _SYS (OP:SWAPC IO.n)            // 判斷是否有 swapc IO.n 的指令
            swapc_  EQU     swapc           // 將 swapc_ 直接代換成 swapc 指令
        #else
            swapc_  macro   iob             // 以宏指令取代 swapc 指令
                iob =   0;
                t0sn    CF;
                iob =   1;
            endm
        #endif

        swapc_  IO_Bit;                     //  swapc_ 就可變成通用命令。


    其他類似命令,如    _SYS (OP:COMP A I)      //  A 跟立即值比較
                        _SYS (OP:PUSHW index)   //  pushw word_memory
                        _SYS (OP:SWAP M)        //  swap  byte_memory
                        _SYS (OP:XOR IO A)      //  xor   register, A
                        _SYS (OP:STOPEXE)       //
                        _SYS (OP:PMODE N)       //

    都可以用來判斷指令是否支持。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章