一、概述
項目需要性價比高一點的芯片,在澄海這邊,臺灣的芯片佔了很大的市場。臺灣芯片的特點是便宜,沒辦法,玩具出口生產量太大,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: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) //
都可以用來判斷指令是否支持。