一、概述

项目需要性价比高一点的芯片,在澄海(广东省汕头市下辖区)这边,台湾的芯片占了很大的市场。台湾芯片的特点是便宜,没办法,玩具出口生产量太大,1分钱的差价都有可能累积出大价钱。选型时选了应广单片机。对于用惯了C开发的人,用汇编来开发还是有些抗拒的。看了一下简介,应广单片机支持Mini-C语言,一看就跟C语言有关,我们来了解一下:

二、Mini-C介绍

应广科技的MINI-C语法结构,是一种界于标准C和汇编的一种语言,对于小资源的MCU来说,该语法非常精简实用。 00_Mini-C语言基础 - 图1 也就是说,对比汇编程序,它的编写方法基本保留了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 充当帮运工,带进数据和带出数据。

优点在于,程序表达是保留了很多指令,这就为程序设计提供了很好的便捷性了。举个例子:

  1. WORD ww;
  2. BIT Bit_1;
  3. Bit_1 = 1; // 等同于 SET1 Bit_1
  4. Bit_1 = 0; // 等同于 SET0 Bit_1
  5. ww.15 = 1; // 等同于 SET1 ww.15,等同于 SET1 hb@ww.7
  6. .DELAY 50; //延时50个指令周期

通过查阅芯片的中文手册,即可得到芯片支持的指令。对于未知指令是否支持,也可以使用一下方法来查询:

语法:_SYS(OP:指令) : 如果指令存在,则回传 1。

指令的格式,采用各系列 IC 的 datasheet 的指令集命名方法。

  1. #if _SYS (OP:SWAPC IO.n) // 判断是否有 swapc IO.n 的指令
  2. swapc_ EQU swapc // 将 swapc_ 直接代换成 swapc 指令
  3. #else
  4. swapc_ macro iob // 以宏指令取代 swapc 指令
  5. iob = 0;
  6. t0sn CF;
  7. iob = 1;
  8. endm
  9. #endif
  10. swapc_ IO_Bit; // swapc_ 就可变成通用命令。

其他类似命令,如:

  1. _SYS (OP:COMP A I) // A 跟立即值比较
  2. _SYS (OP:PUSHW index) // pushw word_memory
  3. _SYS (OP:SWAP M) // swap byte_memory
  4. _SYS (OP:XOR IO A) // xor register, A
  5. _SYS (OP:STOPEXE) //
  6. _SYS (OP:PMODE N) //

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