一、应广单片机的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  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)       //

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





©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页