CCC语言符号控制命令表语言符号控制命令表语言符号控制命令表编译指令编译指令说明#include包含另一个文件#define定义一个宏(macro)或是常量#undef取消一个宏常量的定义#asm和#endasm在程序中加入汇编语言的程序#ifdef、#ifndef、#else、#endif用于条件式的编译注解://—单行注解;/*多行注解*/基本数据类型(int,float,double,char,void)数据类型类型说明长度(位)数据长度bit位10,1char字符8—128~127unsignedchar无符号字符80~255signedchar有符号字符8—128~127int整型16—32768~32767shortint短整型16—32768~32767unsignedint无符号整型160~65535signedint有符号整型16—32768~32767longint长整型32—2147483648~2147483647unsignedlongint无符号长整型320~4294967295signedlongint有符号长整形32—2147483648~2147483647float浮点数(实数)320.175e-38~0.402e38double双精度浮点320.175e-38~0.402e38void空0没任何数据用户自定义数据类型格式typedefstruct{数据类型变量序列1;数据类型变量序列1;...}自定义数据类型的名称;保留字_at_,alien,bdata,break,bit,case,char,code,compact,const,continue,data,default,do,double,far,else,enum,extern,float,for,goto,if,funcused,idata,int,inline,interrupt,large,long,pdata,_priority_,reentrant,return,sbit,sfr,sfr16,short,sigend,sizeof,small,static,struct,switchc_task_,typedef,using,union,unsigned,void,volatile,while,xdataCCC语言符号控制命令表语言符号控制命令表语言符号控制命令表常量表示法常数规则范例十进制一般十进制格式1234567890二进制开头加上0b0b00001110八进制开头加上OO0123十六进制开头加上0x0xFF45无符号整数常量结尾加上U30000U长整数常量结尾加上L299L无符号长整数常量结尾加上UL327800UL浮点数的常量结尾加上F4.234F字符常量以单引号括起来‘a’字符串常量以双引号括起来“hello”-----------------------------------------------------运算符-----------------------------------------------------算术运算运算符说明范例执行结果+加c=a+b;c等于10—减d=a—b;d等于6*乘e=a*b;e等于16/除f=a/b;f等于4%取余数g=a%b;g等于0++加1c++;相当于c=c+1;c等于11——减1d——;相当于d=d—1;d等于5=等于a=8;设置a等于8+=先相加在等于e+=5;相当于e=e+5;e等于21—=先相减在等于f—=5;相当于f=f—5;f等于—1*=先相乘在等于b*=5;相当于b=b*5;b等于0/=先相除在等于a/=5;相当于a=a/5;a等于1%=先取余数在等于a%=5;相当于a=a%5;a等于3※假设a等于8,b等于2比较运算运算符说明范例执行结果==等于a==5F!=不等于a!=5T小于a5F大于a5T=小于等于a=5F=大于等于a=5T※比较运算结果是个布尔值既TRUE(真值)或FALSE(假值)。假设a等于8CCC语言符号控制命令表语言符号控制命令表语言符号控制命令表逻辑运算运算符说明范例执行结果&&AND(a5)&&(a10)T||OR(a5)||(a10)F!NOT!(a10)T※逻辑运算结果是个布尔值既TRUE(真值)或FALSE(假值)。假设a等于8位逻辑运算运算符说明范例执行结果&ANDa&0x01a等于1|ORa|0x80a等于0x85~NOT~aa等于0xFA^XORa^0xFFa等于0xFA(相同为0,不同为1)左移a1a等于0x0A右移a1a等于0x0A※假设a等于5----------------------------------------------------控制命令---------------------------------------------------if语句if(条件)语句1;else语句2;例:if(d==4)d=0;//如果d等于4就设置d等于0elsed++;//否则就将d加1if(ticks==0){//如果ticks等于0ticks=1000;//ticks设置成1000counter[0]++;//counter[0]加1}嵌套if语句例:if(counter[0]==10){counter[1]++;counter[0]=0;if(counter[1]==10){counter[2]++;counter[1]=0;}}switch语句switch(变量){case常量1:语句1;break;case常量2:语句2;break;case常量3:语句3;break;......default;语句n;CCC语言符号控制命令表语言符号控制命令表语言符号控制命令表}for循环for(初值,条件,变化值)语句;例:for(i=0;i10;i++)x=x+i;for(i=1;i10,i++)for(j=1;j10,j++)printf(“%d%d”,i,j);无穷循环:for(;;);while循环while(条件)语句;例:while(ch!=!’A’)ch=getche();无穷循环:while(1);do/while循环do{语句;...}while(条件);例:do{ch=getche();}while(ch!=”A”);goto语句loop1:x++;if(x100)gotoloop1;----------------------------------------------------指针和函数------------------------------------------------指针的定义数据类型*指针变量的名字;例:char*p;int*x;指针与数组例:charfilename[80];char*p;p=filename;//指针p存放filename的开始地址intx[5]={1,2,3,4,5};int*p,sum,i;p=x;//指针p存放数组x的开始地址for(i=0;i5;i++)sum=sum+p[i];//p[i]相当于x[i]CCC语言符号控制命令表语言符号控制命令表语言符号控制命令表指针的运算1.针变量前面加上*号就是取得指针所指向位置的内容。例:intx[5]={1,2,3,4,5};int*p;p=x;//指针p存放数组x的开始地址*p=10;//相当于设置x[0]等于102.变量前面加上&符号,可以取得一个变量的位置。例:intx,y;int*p;p=&x;//指针p存放x的地址,相当于p是指向x的指针*p=1;//相当于设置x等于13.&符号也可以加在数组的前面例:intx[5];int*p;p=&x[2];//指针p存放x[2]的地址,相当于p是指向x[2]的指针*p=50;//相当于设置x[2]等于50函数函数类型函数名称(参数序列);参数说明{函数的主体}例:voiddelay(void){//不返回任何数据的函数unsignedchari,j;//没有任何参数的函数for(i=0,i255,i++)for(j=0,j255,j++);}main(){...delay();//调用函数}例:unsignedcharsum(unsignedchata,unsignedchatb){unsignedchatx;check_GLCD_busyflag();//函数中可以调用另一个函数x=a+b;returnx;//return会返回x的数据}中断服务函数void中断服务程序的名称(void)interrupt中断号码using寄存器组号码{中断服务子程序主体}CCC语言符号控制命令表语言符号控制命令表语言符号控制命令表中断号码#defineIE0_VECTOR0//0x03#defineTF0_VECTOR1//0x0B#defineIE1_VECTOR2//0x13#defineTF1_VECTOR3//0x1B#defineSIO_VECTOR4//0x23对于S51有定时器2#defineTF2_VECTOR5//0x2B例:staticvoidxint0_isr(void)interruptIE0_VECTOR(或0)using1{unsignedchari,j=0xFF;for(i=0,i16,i++){j++;P1=j;//将数值输出到P1口delay_4isr();}}-----------------------------------------------------汇编语言--------------------------------------------------在C中加入汇编语言例:voiddelay100us(){#pragmaasmmovr7,#1more:movr3,#48djnzr3,$djnzr7,more#pragmaendasm}----------------------------------------------------宏(macro)----------------------------------------------宏的定义%*define(macro名称)(macro的指令)例:%*define(write_1)(setbDIserbSKclrSK)#define宏的名称宏的指令例:#defineucharunsignedcharCCC语言符号控制命令表语言符号控制命令表语言符号控制命令表1级优先级左结合()圆括号[]下标运算符-指向结构体成员运算符.结构体成员运算符2级优先级右结合!逻辑非运算符~按位取反运算符++自增运算符--自减运算符-负号运算符(类型)类型转换运算符*指针运算符&地址与运算符sizeof长度运算符3级优先级左结合*乘法运算符/除法运算符%取余运算符4级优先级左结合+加法运算符-减法运算符5级优先级左结合左移运算符右移运算符6级优先级左结合、=、、=关系运算符7级优先级左结合==等于运算符CCC语言符号控制命令表语言符号控制命令表语言符号控制命令表!=不等于运算符8级优先级左结合&按位与运算符9级优先级左结合^按位异或运算符10级优先级左结合|按位或运算符11级优先级左结合&&逻辑与运算符12级优先级左结合||逻辑或运算符13级优先级右结合?:条件运算符14级优先级右结合=+=-=*=/=%===&=^=|=全为赋值运算符15级优先级左结合,逗号运算符