应广单片机 MINI-C编程指南.pdf

所需积分/C币:45 2019-09-28 11:23:45 264KB PDF
收藏 收藏 1
举报

应广 Mini-c编程指南,pdf文档,Mini-c语法规则和举例
尚诚科技杨帆,电话 ,应广大陆技术支持,销售全系列应广空片,并承接小方案川发 3)条件编译 #if标识符 statement #else Statement 2 fendi 测试井if后面是否为真,为真则编译圩if和*else之间的程序,否则编译井else和# endif之间的稈序。其 中标识符只能为 或者定义的标识符 标识符 测试后面的标识符是否用 定义过,如果定义过则编译和之间的程序,否则编译 和之间程序。 标识符 测试 后面的标识符是否用 定义过,如果没有定义过则编译 和之间的程序,否则 编译和之间程序。 标识符 标识符的名称包含连续的字母、数字或下划线,并遵守下列规则: 第一个字符不可为数字 最长只能为27个字符 ●区分大小写 ●不可以使用保留字 MINI-C语言中的保留字 Break. case, const, continue, default do, else, extern, d. word, dword, int return switch void, while asm bit, interrup 1.5数据类型: MINI-C,支持的所有数据都是无符号数字,位长度有1位,8位,16位,24位,32位,分别如下表描 1.4数据类长度(bit)长度(byte)值域范围 型数据类型 bit byte 8 0~255 int 8 0~65535 我的博客空间: 欢迎光临;我的拍拍店 第页 尚诚科技杨帆,电话 ’应广大陆技术支持,销售全乐列应广空片,并承接小方案川发 ewer 0~16777215 dword 32 4 0~4294967295 常量 数字常量: 支持二进制,十进制以及进制的常数 (1).十六进制,以0x开头或者H结尾:例如:0xAB,0CDh (2).进制,以D结尾或者不写 例如:12,34d 进制,以OB开头或者B结尾:例如:OB11001100,01011010B (4).在二进制中,可以增加¨,以提高程序撰写的可读性 (5) 范例: mov A 31h MOV A,49 MOV A,OB110001 MOVA,’1 字符常量:可以为^A~Z,az^,,0~9作为常量的丌头,字符常量使用前需要 定义具体的数字,定义字符常量的作用是方便程序阅读。比如: tdefine c ledon 0 井 define C BrIGhtNESS mAⅩ220; 变量 (1).变量名称不分人小写,变量开头为英文字母或者下滑线,如AZ, a z 2).@不能做变量名称之开头,@用于系统定义最近的向前或者向后跳转地址 (3).非变量之名称开头则可以为AZ,az (4).变量字符串长度不限。 (5).变量分位变量,单字节变量,双字节变量,三字节变量,和4字节变量。 请见1.4的数据类型表。 范例 位变量的定义: 在单核的单片机中,位变量必须存放在RAM前16,或者前32字节内,具体 根据IC的型号确定。位变量,可以指定具体RAM的位,也可以 由系统分配 定义一个具体RAM的位时,需要先定义一个或者儿个字节的变量 定义格式:bit位变量名:具体RAM名.x(x由07组成,或者更大的数字031) 如 Byte my flag://先定义一个字节,作为一些标志定义 Bit f key busy: my flag.0;/指定具休变量的具休第0位 Bit fled on: my flag.1;//指定具体变量的具体第1位 当不指定RAM位置的位定义,则具体RAM位置由系统分配,直接由bit定义: 定义格式:bit位变量名 如 Bit f usb on 我的博客空间: 欢迎光临;我的拍拍店 第页 尚诚科技杨帆,电话 ’应广大陆技术支持,销售全乐列应广空片,并承接小方案川发 Bit f charge full 变量的定义: 变量的定义格式:数据类型变量名; 比如: Byte my flag Word t16 cnt Word user piont; Dword timer 10ms 1.8表达式: 算术表达式】 本发展系统已提供、+、-、&、|、、()、=、+=、-、&=、‖ 等操作数。 以下为例: BB1 BB2 +-(WW2+BY2)81234h 不过以下三点请注意: (1).尚未提供连等的表达式,如下范例: BB1 (BB2BB3)+2; BBI BB2= BB3 (2).对于++、-的操作数,暂时只允许如下单一格式。 BB1++; WWI (3).对于<冷、<>〉、<、>-、<<、>〉-的操作数, 如使用太复杂的表达式,最佳化可能不够理想,请多包涵。 <<对应到汇编语言是SL。 <<对应到汇编语言是SLC。 〉对应到汇编语言是SR。 >〉对应到汇编语言是SRC 运算子的优先级,由高排到低,分别为 功能 运算子 括号 增量、减量++ 加减法 位移 、>>、〈<<、>>〉 位逻辑 位逻辑 我的博客空间: 欢迎光临;我的拍拍店 第页 尚诚科技杨帆,电话 ’应广大陆技术支持,销售全乐列应广空片,并承接小方案川发 位逻辑 算术 【逻辑表达式】 提供支持 表达式。运算子的优先级,由高排到低,分别为: 功能 运算子 括号 增量、减量++ 比较 且 && 或 1.9几个特殊的符号或者符号串 (1)“;”分号: MINI-C语句的结束符,或者汇编屮的注释符,每一句 MINI-C语句,都必 须要有一个“;”做结束。 (2)“@”,简易标记符,有时为了避免取太多的标号名,可以使用简易的标记符。简易标 记符往往配合字母F和字母B用,以怗知编译器是向前还是向后跳转,此处说的前是 指后面书写程序,后指更早书写的程序。 例如 goto⑩F 跳跃到后面的@@标记1 : //标记 goto //跳跃到后面的@标记2 goto //跳跃到前面的@标记1 @@ /标记2 goto @B //眺跃到前面的@标记2 你也可以为简易的标记命名,那么跳越的距离就更有弹性了,如下例: @@ XX //标记XX goto @ //跳跃到后面的@ @: goto @B XX //眺跃到前面的@标记XX goto @F XX //跳跃到后面的@标记XX goto @B //跳跃到前面的@ 我的博客空间: 欢迎光临;我的拍拍店 第页 尚诚科技杨帆,电话 ,应广大陆技术支持,销售全系列应广空片,并承接小方案川发 @@ XX //标记XX (3)“S”,取字节字符,利用取字节字符,可以方便的操作2个字节以上的变量,其中 $0,表示最低位,$1表示次低位,依此类推。“$”还有另外一种用法,给单片机系统寄 存 器赋值。赋值格式,$寄存器名数值1,数值2,数值3..。 例如我们需要将一个双字节word变量的低位加1,高位保持不变: Word timer 10ms cnt timer 10ms cnt $0++:// A= timer10 ms cnt.$1;//把高位字节赋给A 例2.利用$给个别寄存器赋值, 由于仿真器版本和实体IC有时在寄存名不同,或者设置位有效是用1表示,还是用0表 示也可能不同,所以用S赋值寄存器的值,就可以告诉编译器在仿真时应该用到与仿真器实际 控制寄存器相适应的值,而不是$符号赋值的真实值,$符号赋的值是给实体IC使用的。正是 因为如此,所以,个别型号的部分寄存器的赋值,必须要采用$米赋值,这个在PMC232的ADCM 中表现特别明显 比如,你在PMCl31的程序设计中,如果ADCM的值需要赋值为0x84; 在PC131的程序中直接这样书写编详器是认可的: Adcm= 0x84 但是如果是PMC232的程序设计,上面的表述可能会被编译器卡掉,不认这种书写方式,需要 用$赋值: $ADCM12bit,/4;/此值按规格书描述,也是0x84.看IC文件,可以看出ADCM寄存器的 /设置主要分为两部分:AD转换的位数,最新规格已经只保留了12位 /转换了,其他数位已被修订到没有了。保留位,默认设置为0. 我的博客空间: 欢迎光临;我的拍拍店 第页 尚诚科技杨帆,电话 ’应广大陆技术支持,销售全乐列应广空片,并承接小方案川发 6-24. ADC Mode register (adcm),Io address =0x21 Bit Reset R/w Description Bit resolution 7-5000 WO 100: 12-bit, AD 12-bit result [11: 0]=[ adcrh[7: 01, adar[7: 4]) others reserved Reserved (keep u tor tuture compatiblity ADC clack source selection 000: sysc/ 001: sysCk</2 010: sysck<4 3100Wo011:ysck8, 100:ysck16, 101:svsc32 110:svsc64 111: syscl128 0 Reserved ()“”,取系统变量地址。 【利用&读取变量的地址】 如果我们想用上例的数组作一个 Queue,可以用如下的方法。 WORD Point Point Bu uffer thile (1) calculate acc 冰 Point A Point +t // Point plus one each time if (point == Buffer [BUF SIZE// until (Point = Buffer bottom of buffer Point. Buffer // set point to the initial value of Buffer 【利用&产生变量的参考名称】 如果我们想要在同一个变量地址上,拥有不同的变量名称,可以川如下的方法。 WORD Point, Data[21 byte varl Point$0;//Var1跟 Point的 Low Byte是同一地址 bYte var2 Point$1;/Var2眼 Point的 High Byte是同地址。 bYte var3 Data[0]$1;/var3跟Data[0]的 High byte是同一地址。 Word var4 Data[1];∥var4跟Data[1]是同一地址 我的博客空间: 欢迎光临;我的拍拍店 第页 尚诚科技杨帆,电话 ,应广大陆技术支持,销售全系列应广空片,并承接小方案川发 (4)“SYS”,系统保留特殊字符,用于一些檢测或者特定地址取值。 比如不同的IC,能支持的指令集合不一样,当记忆不清楚时,可以采用“SYS”来做 检测,检测格式如下: SYS(OP:指令):如果指令存在则返回1 比如,我们想定义一个宏指令来取代 swapo指令的部分功能, swapo指令不是所有的应广单 片机都能支持的,有部分资源更高一点的IC才支持。 #if SYS (OP: SWAPC IOn) //判断是否有 swap I0.n的指令 swap EQU swapo //将 swapo直接代换成 swapo指令 #else swap macro lob //以宏指令取代 swapo指令 0 //该指令只是将C送给I0,而且会有毛刺 tOss CF en #end if swapo I0 Bit; / swapo就可变成通用命令。 其它类似命令,如 SYS (OP: COMP A I) A跟立即值比较 SYS (OP: PUSHW index)// push word memory SYS (OP: SWAP M) // swap byte memory SYS(OP: XOR IO A) Xor register, A SYS (OP: STOPEXE SYS (OP: PMODE N) / 都可以用来判断指令是否支持 关于·SYS语法,还有 Var=>SYS(SIZE.RAM);//得到目前使用IC的 RAM SIze(单位为Byte Var=>SYS(SIZE.ROM);//得到目前使用IC的 ROM Size(单位为Word) Var=〉SYS(ADR.ROL);/得到 Roll code的起始地址 SYS(ADR.IHRC);//得到IHRC的校正地址 SP SYS( STACK:n);//重新设定第n个FPPA的SP的值为 //预设的设定起始地址。 (5)“ PRAGMA”:使用# PRAGMA指令,可以做一些编译的特殊控制,如卜介绍: (1)在Mini-C的项日中,有些指令会自动使用一些 Local memory当作运算川, 如 DELAY 10000 我的博客空间: 欢迎光临;我的拍拍店 第页 尚诚科技杨帆,电话 ,应广大陆技术支持,销售全系列应广空片,并承接小方案川发 A =*point +*Pointl 但在作多次烧录时,如果你想自行分配所有 Memory的资源, 你必须除能这种语法,以免变量的排序地址不如预期 如果要除能这项检查,必须在.PRE栏案中,加入以卜指令才可。 #PRAGMA DISABLE SYS LOCAL 1.10指针: 无论是程序空间,还是RAM空间,每个单元空间都有一个地址,这个地址也是该室间的 指针。如果能够通过地址来访问该空间,会让程序操作上更灵活。需要通过地址访问程序或 者RM空间时,就需要用一个变量来存放这些单元的地址,然后再通过这个地址去访问所需 要的空间。存放这些地址的变量是指针变量。在MINⅠC中,所有的双字节变量都可以做为指 针变量使用 定义一个指针变量: Word user pointer 例如:定义一个指针变量来清0内部RAM; user pointer=SYS( RAM SIZE)-1;/取得当前芯片的RAM字节数 d 冰 user pointer=0 While(-- user pointers) 2.语句. 程序的执行部分,就是语句,有赋值语句,if语句, switch语句等 2.1赋值语句用“-”作为赋值符号, 格式为:变量=变量或者常数;//注意每个语句的结束符“;”不能少的。 如:a=250; 2.2if语句,if语句是用来判定所给条件是否满足,根据判定结果的真或者假决定执行 的操作。 MINI-C支持的表达式,不能有算数操作,只能是很直观的逻辑表达式,但是,如 果算数表达式中的常数是一个标记,比如ROM地址符,被作为特例允许使用。比如 范例: Label DC12,34,56 WORD Point if( Point== Label+3) Point= Label;//实际上编译完成后, Label+ 3也是一个固定常数 我的博客空间: 欢迎光临;我的拍拍店 第页

...展开详情
试读 24P 应广单片机 MINI-C编程指南.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
  • 签到王者

    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证

    用户完成年度认证,即可获得
  • 分享达人

    成功上传6个资源即可获取
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
应广单片机 MINI-C编程指南.pdf 45积分/C币 立即下载
1/24
应广单片机 MINI-C编程指南.pdf第1页
应广单片机 MINI-C编程指南.pdf第2页
应广单片机 MINI-C编程指南.pdf第3页
应广单片机 MINI-C编程指南.pdf第4页
应广单片机 MINI-C编程指南.pdf第5页

试读结束, 可继续读3页

45积分/C币 立即下载 >