一、概述

项目需要性价比高一点的芯片,在澄海(广东省汕头市下辖区)这边,台湾的芯片占了很大的市场。台湾芯片的特点是便宜,没办法,玩具出口生产量太大,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  hb@ww.7
.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)       //

都可以用来判断指令是否支持。

文档更新时间: 2019-11-13 16:41   作者:SofTool