1、C语言指令 符号表编译指令编译指令说明#include包含另一个文件#define定义一个宏(macro)或是常量#undef取消一个宏常量的定义#asm和#endasm在程序中加入汇编语言的程序#ifdef、#ifndef、#else、#endif用于条件式的编译注解:/单行注解;/*多行注解*/基本数据类型(int,float,double,char,void)数据类型类型说明长度(位)数据长度bit位10,1char字符8128127unsignedchar无符号字符80255signedchar有符号字符8128127int整型163276832767shortint短整型163276
2、832767unsignedint无符号整型16065535signedint有符号整型163276832767longint长整型32unsignedlongint无符号长整型3295signedlongint有符号长整形32float浮点数(实数)320.175e-380.402e38double双精度浮点320.175e-380.402e38void空0没任何数据用户自定义数据类型格式typedefstruct数据类型变量序列1;数据类型变量序列1;自定义数据类型的名称;保留字_at_,alien,bdata,break,bit,case,char,code,compact,const,
3、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,xdata常量表示法常数规则范例十进制一般十进制格式二进制开
4、头加上0b0b00001110八进制开头加上OO0123十六进制开头加上0x0xFF45无符号整数常量结尾加上U30000U长整数常量结尾加上L299L无符号长整数常量结尾加上UL327800UL浮点数的常量结尾加上F4.234F字符常量以单引号括起来a字符串常量以双引号括起来“hello”-运算符-算术运算运算符说明范例执行结果+加c=a+b;c等于10减d=ab;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=d1;d等于5=等于a=8;设置a等于8+=先相加在等于e+=5;相当于e=e+5;e
5、等于21=先相减在等于f=5;相当于f=f5;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小于a大于a5T=小于等于a=大于等于a=5T比较运算结果是个布尔值既TRUE(真值)或FALSE(假值)。假设a等于8逻辑运算运算符说明范例执行结果&AND(a5)&(a10)T|OR(a10)F!NOT!(a10)T逻辑运算结果是个布尔值既TRUE(真值)或FALSE(假值)。假设a等于8位逻辑运
6、算运算符说明范例执行结果&ANDa&0x01a等于1|ORa|0x80a等于0x85NOTaa等于0xFAXORa0xFFa等于0xFA左移a右移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设置成1000counter0+;/counter0加1嵌套if语句例:if(counter0=10)counter1+;counter0=0;if(counter1=10)counter2+;counte
7、r1=0;switch语句switch(变量)case常量1:语句1;break;case常量2:语句2;break;case常量3:语句3;break;default;语句n;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(条件);例:doch=getche();whil
8、e(ch!=”A”);goto语句loop1:x+;if(x100)gotoloop1;-指针和函数-指针的定义数据类型*指针变量的名字;例:char*p;int*x;指针与数组例:charfilename80;char*p;p=filename;/指针p存放filename的开始地址intx5=1,2,3,4,5;int*p,sum,i;p=x;/指针p存放数组x的开始地址for(i=0;i5;i+)sum=sum+pi;/pi相当于xi指针的运算1.针变量前面加上*号就是取得指针所指向位置的内容。例:intx5=1,2,3,4,5;int*p;p=x;/指针p存放数组x的开始地址*p=10
9、;/相当于设置x0等于102.变量前面加上&符号,可以取得一个变量的位置。例:intx,y;int*p;p=&x;/指针p存放x的地址,相当于p是指向x的指针*p=1;/相当于设置x等于13.&符号也可以加在数组的前面例:intx5;int*p;p=&x2;/指针p存放x2的地址,相当于p是指向x2的指针*p=50;/相当于设置x2等于50函数函数类型函数名称(参数序列);参数说明函数的主体例:voiddelay(void)/不返回任何数据的函数unsignedchari,j;/没有任何参数的函数for(i=0,i255,i+)for(j=0,j255,j+);main().delay();/
10、调用函数例:unsignedcharsum(unsignedchata,unsignedchatb)unsignedchatx;check_GLCD_busyflag();/函数中可以调用另一个函数x=a+b;returnx;/return会返回x的数据中断服务函数void中断服务程序的名称(void)interrupt中断号码using寄存器组号码中断服务子程序主体中断号码#defineIE0_VECTOR0/0x03#defineTF0_VECTOR1/0x0B#defineIE1_VECTOR2/0x13#defineTF1_VECTOR3/0x1B#defineSIO_VECTOR4/
11、0x23对于S51有定时器2#defineTF2_VECTOR5/0x2B例:staticvoidxint0_isr(void)interruptIE0_VECTOR(或0)using1unsignedchari,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宏的名称宏的指令例:#defineucharunsignedchar
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1