编译指令
编译指令
说明
#include
包含另一个文件
#define
定义一个宏(macro)或是常量
#undef
取消一个宏常量的定义
#asm#endasm
在程序中加入汇编语言的程序
#ifdef、#ifndef、#else、#endif
用于条件式的编译
注解//—单行注解;/*多行注解*/
基本数据类型 (int,float,double,char,void)
数据类型
类型说明
长度(位)
数据长度
bit
1
0,1
char
字符
8
—128~127
unsigned char
无符号字符
8
0~255
signed char
有符号字符
8
—128~127
int
整型
16
—32768~32767
short int
短整型
16
—32768~32767
unsigned int
无符号整型
16
0~65535
signed int
有符号整型
16
—32768~32767
long int
长整型
32
—2147483648~2147483647
unsigned long int
无符号长整型
32
0~4294967295
signed long int
有符号长整形
32
—2147483648~2147483647
float
浮点数(实数)
32
0.175e-38~0.402e38
double
双精度浮点
32
0.175e-38~0.402e38
void
0
没任何数据
用户自定义数据类型格式
typedef struct{
数据类型      变量序列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,xdata
常量表示法
字符串常量符号
常数
规则
范例
十进制
一般十进制格式
1234567890
二进制
开头加上0b
0b00001110
八进制
开头加上O
O0123
十六进制
开头加上0x
0xFF45
无符号整数常量
结尾加上U
30000U
长整数常量
结尾加上L
299L
无符号长整数常量
结尾加上UL
327800UL
浮点数的常量
结尾加上F
4.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
++
加1
c++;相当于c=c+1;
c 等于11
——
减1
d——;相当于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==5
F
!=
不等于
a!=5
T
<
小于
a<5
F
>
大于
a>5
T
<=
小于等于
a<=5
F
>=
大于等于
a>=5
T
比较运算结果是个布尔值既TRUE(真值)FALSE(假值)。假设a等于8
逻辑运算
运算符
说明
范例
执行结果
&&
AND
(a>5)&&(a<10)
T
||
OR
(a<5)||(a>10)
F
!
NOT
!(a>10)
T
逻辑运算结果是个布尔值既TRUE(真值)FALSE(假值)。假设a等于8
位逻辑运算
运算符
说明
范例
执行结果
&
AND
a&0x01
a等于1
|
OR
a|0x80
a等于0x85
~
NOT
~a
a等于0xFA
^
XOR
a^0xFF
a等于0xFA
<<
左移
a<<1
a等于0x0A
>>
右移
a>>1
a等于0x0A
假设a等于5
----------------------------------------------------控制命令---------------------------------------------------
if语句
if(条件) 语句1;
  else  语句2;
例:if(d==4) d=0;    //如果d等于4就设置d等于0
else d++;    //否则就将d加1
  if(ticks==0) {    //如果ticks等于0
ticks=1000;  //ticks 设置成1000
counter[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;
}
for循环
for (初值,条件,变化值) 语句;
例:for(i=0;i<10;i++) x=x+i;
  for(i=1;i<10,i++)
for(j=1;j<10,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(x<100) goto loop1;
----------------------------------------------------指针和函数------------------------------------------------
指针的定义
数据类型    *指针变量的名字;
例: char    *p;
int      *x;
指针与数组
例: char        filename[80];
char        *p;
p=filename;              //指针p存放filename的开始地址
int          x[5]={1,2,3,4,5};
int          *p,sum,i;
p=x;                    //指针p存放数组x的开始地址
for(i=0;i<5;i++)
  sum=sum+p[i];        //p[i]相当于x[i]
指针的运算
1.针变量前面加上*号就是取得指针所指向位置的内容。
例:int    x[5]={1,2,3,4,5};
int    *p;
p=x;          //指针p存放数组x的开始地址
*p=10;          //相当于设置x[0]等于10
2.变量前面加上&符号,可以取得一个变量的位置。
例:int      x,y;
    int      *p;
    p=&x;          //指针p存放x的地址,相当于p是指向x 的指针
    *p=1;          //相当于设置x等于1
3.&符号也可以加在数组的前面
例:int        x[5];
    int        *p;
    p=&x[2];           //指针p存放x[2]的地址,相当于p是指向x[2]的指针
    *p=50;            //相当于设置x[2]等于50
函数
函数类型    函数名称(参数序列);
参数说明
{
        函数的主体
}
例:void delay (void) {      //不返回任何数据的函数
unsigned char i,j;      //没有任何参数的函数
  for(i=0,i<255,i++)
    for(j=0,j<255,j++);
}
main()
{
...
delay();            //调用函数
}
例:unsigned char sum(unsigned chat a,unsigned chat b)
{
  unsigned chat x;
  check_GLCD_busyflag();     //函数中可以调用另一个函数
  x=a+b;
  return x;                //return会返回x的数据
}
中断服务函数
void 中断服务程序的名称(void) interrupt 中断号码 using 寄存器组号码
{
中断服务子程序主体
}
中断号码
#define IE0_VECTOR    0  //0x03
#define TF0_VECTOR    1  //0x0B
#define IE1_VECTOR    2  //0x13
#define TF1_VECTOR    3  //0x1B
#define SIO_VECTOR    4  //0x23
对于S51有定时器2
#define TF2_VECTOR    5  //0x2B

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。