应广单片机(PADAUK) MINI-C 编程指南初级(系列1),台湾科技的 MINI-C 编译器基本上是构建于 ANSI C,MINI-C的语法结构、程序控制语句、函数处理

整理编辑:逐高电子技术开发部 / 日期:2025-2-14

应广单片机(PADAUK) MINI-C 编程指南初级(系列1),台湾科技的 MINI-C 编译器基本上是构建于 ANSI C,但受限于应广单片机的硬件结构,因此只能支持部
分的 ANSI C。并根据应广单片机的硬件结构,扩展了一些语法,以提高编译效率及节省程序空间。

1. 了解MINI-C语言特性:MINI-C是一种类似于传统C语言的编程语言,但在一些细节上有所不同。首先,需要注意MINI-C不支持变量的乘除法和数组的自加操作。因此,在编写代码时,需要使用其他方式来实现这些功能,例如使用移位操作来代替乘除法,使用循环来实现数组的自加操作。

2. 使用比较器作为伪ADC:在台湾应广单片机PMS150C/PMS150G中,由于硬件限制,无法直接使用模拟数字转换器(ADC)。但可以利用比较器来模拟ADC的功能。比较器可以将模拟信号与参考电压进行比较,并输出相应的数字信号。通过合理设置参考电压和比较器的阈值,可以实现对模拟信号的采样和转换。

3. 模拟串口收发:在台湾应广单片机PMS150C/PMS150G中,没有内置的硬件串口模块。但可以通过软件来模拟串口的收发功能。通过设置GPIO口的输入输出状态和时序,可以实现串口数据的发送和接收。需要注意的是,由于软件模拟的串口速度较慢,需要合理设计数据传输的协议和时序,以确保数据的可靠性和稳定性。 

 


1 MINI- C 语言
1.1 简介
1.2 MINI-C 的程序结构
1.3 预处理
1.4 标示符
1.5 数据类型
1.6 常量
1.7 变量
1.8 表达式
1.9 特殊的符号或者符号串
1.10 指针

2.程序控制语句
2.1 赋值语句
2.2 if 语句
2.3 switch 语句
2.4 while 语句


3.查表
4.函数
5.参考程序范例

 

1 MINI- C 语言

 

1.1 简介

台湾科技的 MINI-C 编译器基本上是构建于 ANSI C,但受限于应广单片机的硬件结构,因此只能支持部

分的 ANSI C。并根据应广单片机的硬件结构,扩展了一些语法,以提高编译效率及节省程序空间。

 

1.2 MINI-C 的程序结构

MINI-C 语言程序由语句、注释和预处理指令组合而成的。

 

语句

语句由变量、常量、运算符和函数共同组成,以分号作为结束符。主要是执行以下的动作:

宣告数据变量与数据结构

 

定义数据空间

执行算术与逻辑运算

 

执行程序的控制动作

 

一行程序可以包含多个语句;复合语句由一个或多个被包含在一对大括号内的语句组成,并且可以将其当

单一语句来使用。

源程序必须定义主函数 fppa0。工程可能不只一个源程序文件,但只有一个源程序文件中可以定义主函数fppa0。

应广早期的产品具有双核和 8 核,如果采用双核,程序中还可以有第二个程序指针所指的一套程序 fppa1;

 

如果采用 8 核,则还可以有 fppa2,fppa3....,fppa7 等。

注释

注释一般是在文件中解释源程序语句的意义与作用来提供程序的可读性。注释不可以嵌套。

行注释符[ // ],开始于//直至此行结束。

块注释符[ /*…*/ ],开始于/*结束于*/。

 

1.3 预处理指令

 

1)文件包含

语法:

#include “filename”

说明:

用双撇号时,系统先在用户当前工程目录中寻找要包含的文件,该文件可以是用户头文件或者 C 程序文件,

或者用户私密库文件 .在应广单片机开发中,各类型的单片机所使用的的寄存器定义头文件,会被系统根

据用户选择的单片机型号自动载入,不需要用户在单独使用“#include”来载入。

 

2)宏定义

#define 标识符 value

其中 value 可以是数值或者语句。注意#define 不能用来定义 IO 名称。

一般用#define 来定义常数或者宏名是可以的。

比如定义常数:

#define

C_AD_PB0

0 //定义 AD 通道 PB0 为数据 0;

宏语句定义:

#define

WTD_ON

set1 clkmd.1 ;//定义宏语句,将看门狗 WTD 打开;

set0 clkmd.1 ;//定义宏语句,将看门狗 WTD 关闭;

#define

WTD_OFF

定义后,便可以在程序中直接使用宏语句,以方便程序的阅读

 

3)条件编译

 

#if 标识符

statement1

#else

Statement2

#endif

测试#if 后面是否为真,为真则编译#if 和#else 之间的程序,否则编译#else 和#endif 之间的程序。其

中标识符只能为#define 或者 EQU 定义的标识符。

 

#ifdef 标识符

statement1

#else

Statement2

#endif

 

测试#ifdef 后面的标识符是否用#define 定义过,如果定义过则编译#ifdef 和#else 之间的程序,否则编译#else

和#endif 之间程序。

 

#ifndef 标识符

statement1

#else

Statement2

#endif

测试#ifndef 后面的标识符是否用#define 定义过,如果没有定义过则编译#ifndef 和#else 之间的程序,否则

编译#else 和#endif 之间程序。

 

1.4 标识符(深圳逐高电子应广单片机授权代理商)

 

标识符的名称包含连续的字母、数字或下划线,并遵守下列规则:

第一个字符不可为数字

最长只能为 27 个字符

区分大小写

不可以使用保留字

MINI-C 语言中的保留字

Break, case , const,continue,default , do,else,extern,

Goto,if,byte ,word, eword ,dword,int

return,switch void,while

asm bit,interrup,

 

1.5 数据类型:

 

MINI-C,支持的所有数据都是无符号数字,位长度有 1 位,8 位,16 位,24 位,32 位,分别如下表描

述。

1.4 数据类 长度(bit) 长度(byte) 值域范围

型数据类型

 

bit 1 —— 0,1
byte 8 1 0~255
int 8 1 0~255
word 16 16

0~65535

eword 24 3 0~16777215
dword 32 4 0~4294967295

 

1.6 常量


数字常量:
MINI-C 支持二进制,十进制以及 16 进制的常数
(1). 十六进制,以 0x 开头或者 H 结尾: 例如: 0xAB, 0CDh
(2). 十进制,以 D 结尾或者不写: 例如: 12, 34d
(3). 二进制,以 0B 开头或者 B 结尾: 例如: 0B11_00_1100, 01011010B
(4). 在二进制中,可以增加 `_`,以提高程序撰写的可读性
(5). 范例: MOV A, 31h
MOV A, 49
MOV A, 0B11_0001
MOV A, '1'
字符常量:可以为 `A~Z`,`a~z`,`_`,`0~9`作为常量的开头,字符常量使用前需要
定义具体的数字,定义字符常量的作用是方便程序阅读。比如:
#define C_LED_ON 0;
#define C_BRIGHTNESS_MAX 220;


1.7 变量


(1). 变量名称不分大小写,变量开头为英文字母或者下滑线,如 `A~Z`,
`a~z` , ` _`。
(2). @ 不能做变量名称之开头,@用于系统定义最近的向前或者向后跳转地址
(3). 非变量之名称开头则可以为 `A~Z`,`a~z`,`_`,`0~9`。
(4). 变量字符串长度不限。
(5). 变量分位变量,单字节变量,双字节变量,三字节变量,和 4 字节变量。
请见 1.4 的数据类型表。


(6). 范例:
位变量的定义:
在单核的单片机中,位变量必须存放在 RAM 前 16,或者前 32 字节内,具体
根据 IC 的型号确定。位变量,可以指定具体 RAM 的位,也可以
由系统分配。
当定义一个具体 RAM 的位时,需要先定义一个或者几个字节的变量。
定义格式:bit 位变量名 :具体 RAM 名.x (x 由 0~7 组成,或者更大的数字 0~31)


如:
Byte my_flag; //先定义一个字节,作为一些标志定义
Bit f_key_busy : my_flag.0;//指定具体变量的具体第 0 位
Bit f_led_on : my_flag.1;//指定具体变量的具体第 1 位
当不指定 RAM 位置的位定义,则具体 RAM 位置由系统分配,直接由 bit 定义;
定义格式:bit 位变量名
如:
Bit f_charge_full;
变量的定义:
变量的定义格式:数据类型 变量名;


比如:
Byte my_flag;
Word t16_cnt;
Word user_piont;
Dword timer_10ms;

1.8 表达式:
【 算 术 表 达 式 】
本发展系统已提供 ~、+、-、&、|、^、( )、=、+=、-=、&=、|=、^= 等操作数。
以下为例:
BB1 = BB2;
WW1 += (WW2 + BY2) & 1234h;


不过以下三点请注意:
(1). 尚未提供连等的表达式,如下范例:
BB1 = (BB2 = BB3) + 2;
BB1 = BB2 = BB3;
(2). 对于 ++、-- 的操作数,暂时只允许如下单一格式。
BB1++; WW1--;
(3). 对于 <<、>>、<<<、>>>、<<=、>>=、<<<=、>>>= 的操作数,
如使用太复杂的表达式,最佳化可能不够理想,请多包涵。
<< 对应到汇编语言是 SL。
<<< 对应到汇编语言是 SLC。
>> 对应到汇编语言是 SR。
>>> 对应到汇编语言是 SRC。
运算子的优先级,由高排到低,分别为:

 逻 辑 表 达 式 】 MINI-C 提供支持 ==、!=、>、>=、<、<=、&&、||、!、( ) 等
表达式。 运算子的优先级,由高排到低,分别为:

 

1.9 几个特殊的符号或者符号串:
(1)“;”分号:MINI-C 语句的结束符,或者汇编中的注释符,每一句 MINI-C 语句,都必
须要有一个“;”做结束。
(2)“@”,简易标记符,有时为了避免取太多的标号名,可以使用简易的标记符。简易标
记符往往配合字母 F 和字母 B 用,以告知编译器是向前还是向后跳转,此处说的前是
指后面书写程序,后指更早书写的程序。
例如:
goto @F // 跳跃到后面的 @@标记 1

@@: // 标记 1

goto @F // 跳跃到后面的 @@标记 2

goto @B // 跳跃到前面的 @@标记 1

@@: // 标记 2

goto @B // 跳跃到前面的 @@标记 2
你也可以为简易的标记命名,那么跳越的距离就更有弹性了,如下例:
@@.XX: // 标记 XX
goto @F // 跳跃到后面的 @@

@@: …
goto @B.XX // 跳跃到前面的 @@标记 XX

goto @F.XX // 跳跃到后面的 @@标记 XX

@@: …
goto @B // 跳跃到前面的 @@

(未完待续)

深圳逐高电子应广单片机授权代理商

应广单片机技术资料

  • 台湾应广单片机官网
  • 应广单片机例程
  • 应广单片机编程指南
  • 应广单片机定时器
  • 技术开发工具
  • 应广单片机IDE&仿真器
  • 应广单片机烧录器
  • 代码生成器
应广单片机(PADAUK)开发应用案例中常见问题的解答,涵盖开发环境、硬件设计、编程调试等方面的问题,适用于消费电子、家电控制、工业控制等场景

应广单片机(PADAUK)开发应用案例中常见问题的解答,涵盖开发环境、硬件设计、编程调试等方面的问题,适用于消费电子、家电控制、工业控制等场景


应广单片机电池电量显示选型,推荐PMS132B,PFS122,ADC采样/电压分段/动态校准/低功耗设计,适配电压范围:2.75V - 4.2V,多通道ADC轮询采集,实现深度休眠场景下μA级的超低功耗表现

应广单片机电池电量显示选型,推荐PMS132B,PFS122,ADC采样/电压分段/动态校准/低功耗设计,适配电压范围:2.75V - 4.2V,多通道ADC轮询采集,实现深度休眠场景下μA级的超低功耗表现


应广单片机开发简易音乐播放器电路程序代码案例,定义8255控制引脚,要实现音乐播放、按键控制以及显示功能控制多个音频播放通道

应广单片机开发简易音乐播放器电路程序代码案例,定义8255控制引脚,要实现音乐播放、按键控制以及显示功能控制多个音频播放通道


应广单片机中断优化策略与实战技巧,如外部中断、定时器中断、串口中断等首先,软件判断中断源的速度要快,可能用位操作或者查表法。其次,减少中断服务函数的执行时间

应广单片机中断优化策略与实战技巧,如外部中断、定时器中断、串口中断等首先,软件判断中断源的速度要快,可能用位操作或者查表法。其次,减少中断服务函数的执行时间


应广单片机(mcu)性能特点与在AI应用中的潜力与挑战,低功耗场景的竞争力在智能家居、可穿戴设备等对功耗敏感的场景中

应广单片机(mcu)性能特点与在AI应用中的潜力与挑战,低功耗场景的竞争力在智能家居、可穿戴设备等对功耗敏感的场景中


应广单片机芯片(MCU)的PMS150C-U06 进行编程闪光器, 应广科技(Padauk)的真实且仅有3分钱的开发的控制器,PMS150C 与 PFS154 高度兼容,但只能编程一次(OTP,一次性可编程)

应广单片机芯片(MCU)的PMS150C-U06 进行编程闪光器, 应广科技(Padauk)的真实且仅有3分钱的开发的控制器,PMS150C 与 PFS154 高度兼容,但只能编程一次(OTP,一次性可编程)


网友博客热帖:如果你喜欢使用廉价物美的微控制器,应广单片机(Padauk MCU)系列无疑将是您的最佳选择,它们拥有最强大的架构、包括闪存选项在内的广泛设备、良好的文档以及唯一具有开源工具链的产品线

网友博客热帖:如果你喜欢使用廉价物美的微控制器,应广单片机(Padauk MCU)系列无疑将是您的最佳选择,它们拥有最强大的架构、包括闪存选项在内的广泛设备、良好的文档以及唯一具有开源工具链的产品线


应广单片机MCU的LED蜡烛发光案例, PFS154和PMS150C中的一个PWM来控制 LED 的亮度,使用一种算法生成偏向最大亮度的随机数分布

应广单片机MCU的LED蜡烛发光案例, PFS154和PMS150C中的一个PWM来控制 LED 的亮度,使用一种算法生成偏向最大亮度的随机数分布


应广单片机PMC-APN021充电 MCU 设计使用需知,适用芯片:PMB180/PMB182/PMB183/YMB1801/YMB1805,为避免 Vbat 电压逆流至 Vcc 引脚进而产生漏电现象

应广单片机PMC-APN021充电 MCU 设计使用需知,适用芯片:PMB180/PMB182/PMB183/YMB1801/YMB1805,为避免 Vbat 电压逆流至 Vcc 引脚进而产生漏电现象


应广科技PMC-APN-017型号单片机提升 IC 在电源插拔测试下的抗干扰能力重要通知,IDE 0.91M1 后的版本将针对.Adjust_IC Macro 做优化调整

应广科技PMC-APN-017型号单片机提升 IC 在电源插拔测试下的抗干扰能力重要通知,IDE 0.91M1 后的版本将针对.Adjust_IC Macro 做优化调整


应该科技单片机PMC-APN006PMC150/153/156/166对抗电源急速波动的重要通知,遇电源急速波动(例如电源 被手动快速开关,或者是因为强烈的电源杂讯)

应该科技单片机PMC-APN006PMC150/153/156/166对抗电源急速波动的重要通知,遇电源急速波动(例如电源 被手动快速开关,或者是因为强烈的电源杂讯)


应广单片机,PMC-APN-017提升IC 在电源插拔测试下的抗干扰能力,IDE 0.91M1 后的版本将针对.Adjust_IC Macro 做优化调整,有助于提升 IC 在小部份特定 应用环境下做电源反复插拔测试时的稳定性及抗干扰能力。

应广单片机,PMC-APN-017提升IC 在电源插拔测试下的抗干扰能力,IDE 0.91M1 后的版本将针对.Adjust_IC Macro 做优化调整,有助于提升 IC 在小部份特定 应用环境下做电源反复插拔测试时的稳定性及抗干扰能力。


应广科技提醒用户在使用PMS134G系列单片机IC时避免常犯的一些错误,IO 作为数字输入时,Vih 与 Vil 的准位,会随着电压与温度变化

应广科技提醒用户在使用PMS134G系列单片机IC时避免常犯的一些错误,IO 作为数字输入时,Vih 与 Vil 的准位,会随着电压与温度变化


应广单片机烧录PMC-APN011半自动烧录机台提高烧录稳定性,应广科技烧录器操作方法说明,烧录器在烧录IC时会进行精确的相关特性校正如 IHRC…等等

应广单片机烧录PMC-APN011半自动烧录机台提高烧录稳定性,应广科技烧录器操作方法说明,烧录器在烧录IC时会进行精确的相关特性校正如 IHRC…等等


网友开发者热议应广单片机(Padauk) PMS150C 成功驱动 300个WS2812B LED,实际上只需修改8Mhz微控制器就可以做很多事情

网友开发者热议应广单片机(Padauk) PMS150C 成功驱动 300个WS2812B LED,实际上只需修改8Mhz微控制器就可以做很多事情


开发实力

专业资深的软硬件开发工程师团队,熟悉行业客户产品硬件技术平台解决方案

全球渠道

为客户提供高性价比的产品和服务,满足客户及时快速的电子生产制造需求

品质保证

专业的测试保证团队,保证每批方案的稳定性,兼容性,和抗干扰性

售后服务

专业的技术服务团队,24小时为客户提供各种软硬件的技术支持和售后服务

服务热线

0755-88364040
18902464556

义隆代理

烧录开发

技术支持

申请样品

扫描微信二维码