一:数据类型·运算符·表达式 1.1 C51支持的数据类型
数据类型 名称 长度 值域
bit 1 bit 0,1
Unsigned char ,char
1 byte 0~255,‐128~127 Unsigned int ,int 2byte 0~65525,‐32768~32767
Unsigned long ,long
4 byte 0~429496729
5 Float 4 byte 6位数字
基本类型 Double 8 byte 10位数字
数组
结构体
共用体
构造类型 枚举
指针类型
2~3byte 存储空间,最大64KB 空类型
1.2 常量和变量
常量:#define CONST 10
变量:bit b_start //位变量
Char c_start//字符变量
其他略。
1.3 C51存储器·寄存器定义
定义:分为片内数据存储器·片外数据存储器·片内程序存储器·片外程序存储器。
1.31 C51的数据存储类型
关键字 存储器对应关系
data 直接寻址片外数据存储器(128byte )
bdat 片内位寻址存储空间(16byte )
idata 间接寻址片内数据存储空间,可以访问RAM 全部内容
pdata 分页寻址片外数据存储器(256byte )
Xdata 片外数据存储器(64KB )
Code 代码存储器(64KB )
例子:char data c_Var; //无符号char 型变量,定义到内部存储空间低128byte
1.32 寄存器
Sfr SBUF=0x99; //定义串行数据寄存器
Sfr16 T2=0xcc ; //定义T2计时器数据存储器
Sbit D0=P2^1;定义位变量
Sbit CY=0xd7;使用绝对地址定义
使用sbit 定义变量空间
Bdata unsigned char uc_shield_byte;
Sbit b_x= uc_shield_byte^1; //定义首位
Sbit b_y= uc_shield_byte^2;
Sbit b_z=uc_shield_byte^3;
c51中字符串函数1.4逻辑运算
与: && 或: || 非: !
位逻辑运算
位与: &
位或: |
位异或: ^
位取反: ~
1.5移位运算
左移位:<<,个位左移,补0;
右移位:>>,高位右移,补0;
二:C51控制流
(1) 顺序结构
(2) 选择结构
1.I f……else语句
2.I f语句
3.S witch语句
Switch(判断条件)
{
Case 常量表达式1:{语句块1}break;
……
Default:{语句n+1}break;
}
4.I f和switch嵌套
(3) 循环结构
1.W hile语句
2.D o while语句
Do{
代码块;
}while(条件);
3.F or语句
三:函数
1.无参数函数定义
Void 函数名(void)//无参数,无返回值函数定义
{
}
Int 函数名(char a,char b)//带参数,带返回值函数定义 {
}
2.局部变量和全局变量
静态局部变量和动态局部变量
Static int a;静态(static不可省略)
Auto int a;动态(auto可省略)
3.内部函数和外部函数
(1)内部函数:static unsigned char Fun(int a);
内部函数只能被该源文件中的其他函数调用
(2)外部函数:extern unsigned char Fun(int a);
外部函数可以被其他源文件调用的函数
四:数组和指针
(1) 数组:
z一维数组:
类型 数组名【size】;
z二维数组
类型 数组名【size A】【size B】;
z字符数组
Char ch1【】={‘j’,’a’,’c’,’k’,’x’,’u’};以字符形式赋值
Char ch1[]={“jackxu”}; 以字符串形式赋值 (2) 指针
1)指针和指针变量
类型 *变量名
Int *ptr1;float *ptr2;char *ptr3;
2)指针的引用
Int a=10;
Int *p=&a;
X=a ;直接访问方式
X=*p;间接访问方式
(3) 数组和指针
Int a[]={1,2,3,4,5,6,7,8,9,10},*ip;
Ip=a; //*ip代表a[0],*(ip+i)代表a[i];
二维数组与指针同上;
(4) 字符串和指针
不能用指针变量来修改字符串常量;
(5) 数组,指针和函数的关系
1)数组可作为函数的参数:int sum(int a[],int num);
2)指针作为函数参数:int sum(int *ip,int num);
3)返回指针的函数:char *ip(char *ip,char c);
(6) 指针数组和指向指针的指针
1)类型 *数组名【size】;
Char *name【3】={“I”,“love”,“you”};定义了三个字符型指针数组并进行了初始化
3)类型 **指针变量名 //指针变量的变量声明
*指针变量 //获取指针变量指向的指针
**指针变量 //获取指针变量指向的指针内容
例子:
Main()
{
Char *name[]={“Tom”,”Jacky”,”Andy”};
Char **cp=name;
For(int i=0;i<3;i++)
{
Printf(“cp=d%\n”,cp);
Printf(“*cp=s%\n”,*cp);
Printf(“**cp=c%\n”,**cp);
}
}
程序输出结果为:
cp=0x1000;
*cp=Tom
**cp=T
Cp=0x1002
*cp=Jacky
**cp=J
cp=0x1004;
*cp=Andy
**cp=A
五:结构,联合和枚举 定义:
1)
Stuct 结构名
{
类型说明符 成员1
类型说明符 成员2
。。。。。。
类型说明符 成员n
};
结构名 变量名1,变量名2…….;
2)
Stuct 结构名
{
类型说明符 成员1
类型说明符 成员2
。。。。。。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论