如何学习应广单片机的miniC

91应广单片机 MINI-C编程指南
上亿文档资料,等你来发现
91应广单片机 MINI-C编程指南
应广单片机(PADAUK)MINI-C编程指南初;V1.1;1MINI-C语言...............;1.1简介...................;1.2MINI-C的程序结构..........;1.3预处理..................;1.4标示符..................;1.5数据类型.................;
应广单片机(PADAUK)MINI-C编程指南初级篇
1MINI-C语言............................................................................................................................2
1.1简介.......................................................................................................................................2
1.2MINI-C的程序结构............................................................................................................2
1.3预处理..................................................................................................................................3
1.4标示符..................................................................................................................................3
1.5数据类型..............................................................................................................................3
1.6常量......................................................................................................................................4
1.7变量......................................................................................................................................4
1.8表达式..................................................................................................................................4
1.9特殊的符号或者符号串......................................................................................................5
1.10指针....................................................................................................................................10
2程序控制语句......................................................................................................................10
2.1赋值语句..............................................................................................................................10
2.2if语句..................................................................................................................................10
2.3switch语句...........................................................................................................................12
2.4while语句............................................................................................................................13
3查表.......................................................................................................................................13
4函数.......................................................................................................................................15
5参考程序范例.........................................................................................................................15
1MINI-C语言
台湾科技的MINI-C编译器基本上是构建于ANSIC,但受限于应广单片机的硬件结构,因此只能支持部分的ANSIC。并根据应广单片机的硬件结构,扩展了一些语法,以提高编译效率及节省程序空间。
1.2MINI-C的程序结构
MINI-C语言程序由语句、注释和预处理指令组合而成的。
语句由变量、常量、运算符和函数共同组成,以分号作为结束符。主要是执行以下的动作:
l宣告数据变量与数据结构
l定义数据空间
l执行算术与逻辑运算
l执行程序的控制动作
一行程序可以包含多个语句;复合语句由一个或多个被包含在一对大括号内的语句组成,并且可以将其当单一语句来使用。
源程序必须定义主函数fppa0。工程可能不只一个源程序文件,但只有一个源程序文件中可以定义主函数fppa0。
应广早期的产品具有双核和8核,如果采用双核,程序中还可以有第二个程序指针所指的一套程序fppa1;如果采用8核,则还可以有fppa2,fppa3....,fppa7等。
注释一般是在文件中解释源程序语句的意义与作用来提供程序的可读性。注释不可以嵌套。
行注释符[//],开始于//直至此行结束。
块注释符[/*…*/],开始于/*结束于*/。
1.3预处理指令
1)文件包含
#include“filename”
用双撇号时,系统先在用户当前工程目录中寻找要包含的文件,该文件可以是用户头文件或者C程序文件,或者用户私密库文件.在应广单片机开发中,各类型的单片机所使用的的寄存器定义头文件,会被系统根据用户选择的单片机型号自动载入,不需要用户在单独使用“#include”来载入。
#define标识符value
其中value可以是数值或者语句。注意#define不能用来定义IO名称。
一般用#define来定义常数或者宏名是可以的。
比如定义常数:
#defineC_AD_PB00//定义AD通道PB0为数据0;
宏语句定义:
#defineWTD_ONset1clkmd.1;//定义宏语句,将看门狗WTD打开;
#defineWTD_OFFset0clkmd.1;//定义宏语句,将看门狗WTD关闭;
定义后,便可以在程序中直接使用宏语句,以方便程序的阅读。
3)条件编译
statement1
Statement2
测试#if后面是否为真,为真则编译#if和#else之间的程序,否则编译#else和#endif之间的程序。其中标识符只能为#define或者EQU定义的标识符。
#ifdef标识符
statement1
Statement2
测试#ifdef后面的标识符是否用#define定义过,如果定义过则编译#ifdef和#else之间的程序,否则编译#else和#endif之间程序。
#ifndef标识符
statement1
Statement2
测试#ifndef后面的标识符是否用#define定义过,如果没有定义过则编译#ifndef和#else之间的程序,否则编译#else和#endif之间程序。
标识符的名称包含连续的字母、数字或下划线,并遵守下列规则:
l第一个字符不可为数字
l最长只能为27个字符
l区分大小写
l不可以使用保留字
MINI-C语言中的保留字
Break,case,const,continue,default,do,else,extern,
Goto,if,byte,word,eword,dword,intreturn,switchvoid,while
asmbit,interrup,
1.5数据类型:
MINI-C,支持的所有数据都是无符号数字,位长度有1位,8位,16位,24位,32位,分别如下表描述。
1.4数据类长度(bit)长度(byte)值域范围
型数据类型
bit1――0,1
byte810~255
int810~255
数字常量:
MINI-C支持二进制,十进制以及16进制的常数
十六进制,以0x开头或者H结尾:例如:0xAB,0CDh
十进制,以D结尾或者不写:例如:12,34d
二进制,以0B开头或者B结尾:例如:0B11_00_0B
在二进制中,可以增加`_`,以提高程序撰写的可读性
范例:MOVA,31h
MOVA,0B11_0001
MOVA,'1'
字符常量:可以为`A~Z`,`a~z`,`_`,`0~9`作为常量的开头,字符常量使用前需要
定义具体的数字,定义字符常量的作用是方便程序阅读。比如:
#defineC_LED_ON0;
#defineC_BRIGHTNESS_MAX220;(1).(2).(3).(4).(5).
(6).变量名称不分大小写,变量开头为英文字母或者下滑线,如`A~Z`,`a~z`,`_`。@不能做变量名称之开头,@用于系统定义最近的向前或者向后跳转地址非变量之名称开头则可以为`A~Z`,`a~z`,`_`,`0~9`。变量字符串长度不限。变量分位变量,单字节变量,双字节变量,三字节变量,和4字节变量。请见1.4的数据类型表。范例:
位变量的定义:
在单核的单片机中,位变量必须存放在RAM前16,或者前32字节内,具体
根据IC的型号确定。位变量,可以指定具体RAM的位,也可以
由系统分配。
当定义一个具体RAM的位时,需要先定义一个或者几个字节的变量。
定义格式:bit位变量名:具体RAM名.x(x由0~7组成,或者更大的数字0~31)如:
Bytemy_//先定义一个字节,作为一些标志定义
Bitf_key_busy:my_flag.0;//指定具体变量的具体第0位
Bitf_led_on:my_flag.1;//指定具体变量的具体第1位
当不指定RAM位置的位定义,则具体RAM位置由系统分配,直接由bit定义;定义格式:bit位变量名
Bitf_charge_
变量的定义:
变量的定义格式:数据类型变量名;
Dwordtimer_10
1.8表达式:
【算术表达式】
本发展系统已提供~、+、-、&、|、^、()、=、+=、-=、&=、|=、^=等操作数。以下为例:
WW1+=(WW2+BY2)&1234h;
不过以下三点请注意:
(1).尚未提供连等的表达式,如下范例:
BB1=(BB2=BB3)+2;
BB1=BB2=BB3;
(2).对于++、--的操作数,暂时只允许如下单一格式。
BB1++;WW1--;
对于&&、&&、&&&、&&&、&&=、&&=、&&&=、&&&=的操作数,
如使用太复杂的表达式,最佳化可能不够理想,请多包涵。
&&&对应到汇编语言是对应到汇编语言是对应到汇编语言是对应到汇编语言是SL。SLC。SR。SRC。(3).
运算子的优先级,由高排到低,分别为:
括号运算子.、[]、()
增量、减量++、--、~
位逻辑+、-&&、&&、&&&、&&&&^
三亿文库包含各类专业文献、生活休闲娱乐、中学教育、应用写作文书、幼儿教育、小学教育、文学作品欣赏、高等教育、外语学习资料、91应广单片机 MINI-C编程指南等内容。 
 单片机读写U盘C程序_电子/电路_工程科技_专业资料。...无需编写单片机程序 */ /* *** RBC/SCSI 命令层...mInitDisk( void ) { /* 初始化磁盘 */ UINT8...  51单片机c语言电子钟_电脑基础知识_IT/计算机_专业资料。51 单片机 c 语言电子...//秒 uchar minite=0;//分 uchar hour=12; //时 uchar mstcnt=0;//...  { seconde=0; minite++; if( minite==60) { minite=0; hour++; if(...51单片机c语言电子钟(已... 13页 免费 单片机C语言程序设计实训... 62页 1...  10 山东工商学院 2008 单片机课程设计报告 第一部分...工业控制的专用语言 编程,如 PL/M、C 语言、BASIC...[minite%10]; delay(4); P2=0 P0=disp...  单片机LCD1602 C语言程序_信息与通信_工程科技_专业资料。单片机LCD1602#...{minite ++;second=0;} if(minite == 60){hour++;minite = 0;} if...  学习单片机实验硬件环境(mini80E 开发板)的使用,...C,D,E,F,G,H,I,J 这 10 个字母,程序应该...熟悉单片机 4 个并行口的结构、使用特点和程序设计...  单片机 AVR: ATmega8,ATmega128 AT89C52,AT89S52...(USB) SUPERPRO―LX minicube2 SUPERPRO―LX NEC:...将芯片正确放入编程器。 单击第一个工具图标,找开...  一份为C语言编写,一份为汇编语言编写,均给出了 实验硬件电路和原理介绍,共分...单片机教学实验仪的功能 -5- 第 2 章 PM+的安装 第2章 PM+的安装及 MINI...  { seconde=0; minite++; if( minite==60) { minite=0; hour++; if(...51单片机C语言程序设计P... 77页 1下载券
AT89S51单片机C语言程序... 183...21ic官方微信-->
后使用快捷导航没有帐号?
请完成以下验证码
查看: 3766|回复: 3
应广单片机---MINI-C参考程序
&&已结帖(0)
主题帖子积分
高级技术员, 积分 915, 距离下一级还需 85 积分
高级技术员, 积分 915, 距离下一级还需 85 积分
主题帖子积分
专家等级:结帖率:60%
主题帖子积分
高级技术员, 积分 915, 距离下一级还需 85 积分
高级技术员, 积分 915, 距离下一级还需 85 积分
应广科技做MCU算是很用心了,虽然出道比较晚,但是开发工具及开发环境等。
已经超出好几个较早的台湾品牌MCU。就拿开发语言来说,MINI-C就胜过其他的
纯汇编强多了,而且MINI-C的效率是非常高的。
以下是小生初期写的LED混色产品,给大家参考,不过丑话说在前面,由于小生也比较忙,小生只服务自己的已有客户或者潜在客户,
非小生的客户,小生不做技术支持,也不提供产品服务,请大家谅解。
#include &extern.h&
#define& && && &WTD_ON& &&&set1&&clkmd.1
#define& && && &WTD_OFF& & set0&&clkmd.1
#define& && && &PA5_RESET_ON& &set1 clkmd.0
#define& && && &PA5_RESET_OFF&&set0 clkmd.0
ON_ICE_DEBUG& && && &EQU& && &&&0
//----------IO define-------------------------------
BIT& && && & AC_SYN_INA& && && && &:PA.6& &//out
BIT& && && & LEDR_OUT& && && && &&&:PA.7& &//out
BIT& && && & AC_SYN_INB& && && && &:PA.0& &// out
BIT& && && & LEDB_OUT& && && && &&&:PA.3& &// out
BIT& && && & LEDG_OUT& && && && &&&:PA.4& &&&//out, 低电平使能充电
BIT& && && & AC_SYN_INC& && && && &:PA.5& &&&//in,&&此IO为低时,为充电满
//---------IO define end----------------------------
//---------constant define--------------------------
LED&&工作描述:
0.绿色渐亮,兰色灭,红色渐亮;
1.绿色渐灭,兰色渐亮,红色渐灭;
2.绿色灭,兰色渐暗,红色渐亮;
3.绿色渐亮,兰色灭,红色渐暗;
4.绿色亮,兰色灭,红色渐亮;
5.绿色亮,兰色渐亮,红色渐暗;
6.绿色渐暗,兰色亮,红色渐亮;
7.绿色渐亮,兰色亮,红色亮;
8.绿色亮,兰色渐亮,红色亮;
9.绿色渐灭,兰色渐灭,红色渐灭
外部时钟输入,20ms.
c_T16_us EQU&&1
c_10ms&&EQU&&10
loop_100ms EQU&&c_10ms * 1000 / c_T16_us
T16_Base& && &&&EQU& && && && & 11764
//---------constant define end----------------------
//---------RAM define-------------------------------
word& && && &t16_cnt& && && & ;
word& && && &t16_result& && & ;
byte& && && &sys_status& && & ;
bit& && && & f_key_busy& && && & :sys_status.0
bit& && && & f_key_release& && & :sys_status.1
bit& && && & f_vusb_over_load& & :sys_status.2
bit& && && & f_vusb_power_on& &&&:sys_status.3
bit& && && & f_key_once_time& &&&:sys_status.4
bit& && && & f_reach_low_bat& &&&:sys_status.5
bit& && && & f_led_flash& && && &:sys_status.6
bit& && && & f_power_full& && &&&:sys_status.7
byte& && && &sys_mode& && &&&;
byte& && && &timer_11ms_cnt&&;
byte& && && &timer_100ms_cnt&&;
byte& && && &pwmr_
byte& && && &pwmg_
byte& && && &pwmb_
byte& && && &pwm_
//---------RAM define end --------------------------
//---------User program start-----------------------
void& & io_init(void);
void& & ad_init(void);
void& & t16_init(void);
void& & int_init(void);
void& & key_scan(void);
void& & delay_1ms(void);
BIT& && && & AC_SYN_IN& && && && &:PA.6& &//in
BIT& && && & RLED_OUT& && && && & :PA.7& &//out
BIT& && && & AC_SYN_IN& && && && &:PA.0& &//in
BIT& && && & BLED_OUT& && && && & :PA.3& &//out
BIT& && && & GLED_OUT& && && && & :PA.4& &//out, 低电平使能充电
BIT& && && & AC_SYN_IN& && && && &:PA.5& &//in,&&此IO为低时,为充电满
void& & io_init(void)
paph = 0x00;
pbph = 0x00;
pa& &= 0x00;
pac&&= 0x99;
pbc&&= 0x00;
void& & ad_init(void)
& && &&&ADCDI = 0x07;
& && &&&ADCM&&= 0x00;
& && &&&ADCC&&= 0x80;
void& & t16_init(void)
& && &&&word& &t16_
& && &&&T16M&&= 0x2f;
& && &&&t16_index = 0;
& && &&&stt16&&t16_&&
void FPPA0 (void)
& && &&&word&&temp_
.ADJUST_OTP_IHRCR 4MIPS&&// IHRC/2 = 8MIPS, WatchDog Disable, RAM 0,1 temporary be used
WTD_OFF;& &&&// WatchDog Enable
io_init();
// ad_init();
t16_init();
t16_cnt = T16_B
fppen = 0x03;
if(gdio == 0)
sys_mode = 0;
& && &&&timer_11ms_cnt = 0;
& && &&&pwm_cnt& & = 0;
& && &&&pwmr_cnt& &= 0;
& && &&&pwmg_cnt& &= 0;
& && &&&pwmb_cnt& &= 0;& && && && && &
gdio = 0&&
&&ldt16& &t16_result
&&a& &&&= (t16_result - t16_cnt) && 8;
&&if(a & 0x80)
&&tog& &AC_SYN_INB;& &
& & t16_cnt += T16_B
& & timer_11ms_cnt++;
& & if(timer_11ms_cnt == 0)
& && & sys_mode++;
& && & if(sys_mode & 9)
& && &&&sys_mode = 0;
& & if(sys_mode == 0)
& && &if(pwmr_cnt & 254)
& && && &pwmr_cnt++;
& && &if(pwmg_cnt & 254)
& && && & pwmg_cnt++;
& && & pwmb_cnt = 0;
& & if(sys_mode == 1)
& && &if(pwmr_cnt != 0)
& && && &pwmr_cnt--;
& && &if(pwmg_cnt != 0)
& && && & pwmg_cnt--;
& && &if(pwmb_cnt & 254)
& && & pwmb_cnt++;
& && & }& &&&
& & if(sys_mode == 2)
& && &if(pwmr_cnt &254 )
& && && &pwmr_cnt++;
& && & pwmg_cnt = 0;
& && &if(pwmb_cnt != 0)
& && & pwmb_cnt--;
& && & }& &&&
& & if(sys_mode == 3)
& && &if(pwmr_cnt != 0)
& && && &pwmr_cnt--;
& && &if(pwmg_cnt &254 )
& && && & pwmg_cnt++;
& && & pwmb_cnt = 0;
& & if(sys_mode == 4)
& && &if(pwmr_cnt != 0)
& && && &pwmr_cnt--;
& && &if(pwmg_cnt != 0)
& && && & pwmg_cnt--;
& && &if(pwmb_cnt & 254)
& && & pwmb_cnt++;
& && & }& &&&
& & if(sys_mode == 5)
& && &if(pwmr_cnt != 0)
& && && &pwmr_cnt--;
& && &pwmg_cnt = 0;
& && &if(pwmb_cnt &254)
& && & pwmb_cnt++;
& && & }& && &
& & if(sys_mode == 6)
& && &pwmg_cnt = 0;
& && &if(pwmb_cnt != 0)
& && && &pwmb_cnt--;
& && &pwmr_cnt = 0;
& & if(sys_mode == 7)
& && &if(pwmg_cnt & 254)
& && && &pwmg_cnt++;
& && &if(pwmb_cnt & 254)
& && && &pwmb_cnt++;
& && & pwmr_cnt = 0;
& & if(sys_mode == 8)
& && & pwmg_cnt = 255;
& && & if(pwmb_cnt != 0)
& && &&&pwmb_cnt--;
& && & if(pwmr_cnt & 254)
& && &&&pwmr_cnt++;
& && &&&}&&
& & if(sys_mode == 9)
& && & if(pwmg_cnt != 0)
& && &&&pwmg_cnt--;
& && & pwmb_cnt = 0;
& && & if(pwmr_cnt != 0)
& && && & pwmr_cnt--;
& && && && && && && && && && && && && && && && &&&
& && && && && &&&} // if(a& 0x80)end
void FPPA1 (void)& &//注意这里,两核心的好处,可以单独跑几路低频的PWM,很轻松。
&&if(pwmr_cnt &= pwm_cnt)
& &&&LEDR_OUT& &= 1;
& &&&LEDR_OUT& &= 0;
&&if(pwmg_cnt &= pwm_cnt)
& &&&LEDG_OUT& &= 1;
& &&&LEDG_OUT& &= 0;
&&if(pwmb_cnt &= pwm_cnt)
& &&&LEDB_OUT& &= 1;
& &&&LEDB_OUT& &= 0;
& &&&pwm_cnt++;
&&if(pwm_cnt == 0)
& &&&pwm_cnt = 1;
, , , , , , , ,
T: 五3,微公号,应广单片机
主题帖子积分
资深技术员, 积分 341, 距离下一级还需 159 积分
资深技术员, 积分 341, 距离下一级还需 159 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
资深技术员, 积分 341, 距离下一级还需 159 积分
资深技术员, 积分 341, 距离下一级还需 159 积分
大神!!!
主题帖子积分
中级技术员, 积分 115, 距离下一级还需 185 积分
中级技术员, 积分 115, 距离下一级还需 185 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 115, 距离下一级还需 185 积分
中级技术员, 积分 115, 距离下一级还需 185 积分
技术新星奖章
人才类勋章
甘甜之泉水
发帖类勋章
希望之星奖章
等级类勋章
热门推荐 /3

我要回帖

 

随机推荐