#include "reg52.h" 为头文件
void main() 为主函数
{
while(1) 为循环函数
{
}
}
bit和sbit是51扩展的类型变量。
sbit的用法:sbit 变量名=地址值
eg:
sbit led=P0^0
表示led在P0和0之间连接
#typedef(重新定义)的使用
eg:
typedef unsigned char u8;
typedef unsigned int u16;
第一行表示:将无符号字符型定义为u8,即 将后续代码中出现的 unsigned char用u8代替 ;
第二行表示:将无符号整型定义为u16,即 将后续代码中出现的 unsigned int 用u16代替;
注:u8和u16后面的分号一定要带,表示断句。
u8类型范围为0-255;u16范围为0-65535 。
重新定义一些常用的关键词,可以增强程序的可移植性。在不同的编译软件上面c语言的数据类型的关键词的位宽是不一样的。
while循环函数:
while(表达式)
{
语句1
}
意为:计算表达式的值,其值为真时,执行循环体语句;其值为假时,跳出此循环;
eg:
while(i<10)
{
i=i+1
}
若i=8则进入循环,直至i=10为止。
延时函数:
#define的使用
eg:
#define B P0
意为:将P0端口命名为B ,在后面的程序中B就代表P0端口;若想更改端口,则直接更改即可。
注:P0后面没有分号。
循环左移、右移函数
_crol_(a,b);为循环左移函数
_cror_(a,b);为循环右移函数
其中a为移动的值,b为移动的位数
均在 instrins.h 库函数里面。
if-else语句
if(表达式)
{
语句1;
}
else
{
语句2;
}
意为:若表达式为真,则执行语句1;若表达式为假,则执行语句2。
eg:
if(a+b>10)
{
c=500;
}
else
{
c=0;
}
do-while语句
do
{
语句
}
while(表达式);
意为:执行语句之后,在判断表达式真假;若为真,则继续执行语句;若为假,则跳出循环。
eg:
do
{
a=a+5;
}
while(a>50);
for语句
for (a=0;a<10;a++)
{
d=10;
}
括号中为三个表达式;
先执行第一个;
再执行第二个,若第二个为真,则执行语句,接着执行第三个语句,
如此往复,直至第二为假时,此语句执行结束,跳出循环。
注:a++ 表示a=a+1
++a 表示a+1=a
switch语句
switch(表达式)
{
case常量表达式1:语句1;
case常量表达式2:语句2;
case常量表达式3:语句3;
...
case常量表达式n:语句n;
default: 语句n+1;
}
意为:
计算表达式的值之后,
与常量表达式逐个比较,
1.当表达式的值与某个常量表达式的值相等后,
开始执行其后的语句,然后执行后面所有的case语句;
2.当表达式的值与所有常量表达式的值均不相等时,
则执行 default 后的语句。
eg:
switch(a=2)
{
case(1): b=5;
case(2): b=6;
case(3): b=7;
default: b=9;
}
与第二个常量表达式相等,从第二个语句往下执行;
eg:
switch(a=4)
{
case(3):c=5;break;
case(4):c=6;break;
case(5):c=7;break;
default:c=10;
}
有 break; 时,执行完表达式2时,直接跳出循环到 default 语句。
函数的定义
返回变量类型 函数名 (输入变量类型
{
函数体;
}
eg:
unsigned char read (unsigned char addr)
{
unsigned char dat; //定义一个变量存放返回值
(do any thing tou want ); //函数中的程序
return dat; //返回函数的返回值
}
函数的调用
在函数调用之前,要在主函数前面加入该函数的声明,也可以在头文件中声明。
#ifndef...#endif
条件编译,常用于头文件的定义和一些程序条件编译。