1、 关键字关键字用途用途说明说明auto存储种类声明存储种类声明用以声明局部变量用以声明局部变量break程序语句程序语句退出最内存循环退出最内存循环case程序语句程序语句switch语句中的选择项语句中的选择项char数据类型声明数据类型声明单字节整型数或字符型数据单字节整型数或字符型数据const存储类型声明存储类型声明常量,不可修改常量,不可修改continue程序语句程序语句转向下一次循环转向下一次循环default程序语句程序语句switch语句中语句中的的“其他其他”选选项项do程序语句程序语句构成构成dowhile循环结构循环结构double数据类型声明数据类型声明双精度浮点型双
2、精度浮点型else程序语句程序语句构成构成ifelse选择结构选择结构enum数据类型声明数据类型声明枚举枚举extern存储种类声明存储种类声明在其他程序模块在其他程序模块中中定义定义了了的全局变量的全局变量float数据类型声明数据类型声明单精度浮点数单精度浮点数for程序语句程序语句for循环循环goto程序语句程序语句goto转移结构转移结构if程序语句程序语句构成构成ifelse选择结构选择结构关键字关键字用途用途说明说明int数据类型声明数据类型声明基本整型数基本整型数long数据类型声明数据类型声明长整型长整型register存储种类声明存储种类声明使用使用cpu内部存储器的变量
3、内部存储器的变量return程序语句程序语句函数返回函数返回short数据类型声明数据类型声明短整型数短整型数signed数据类型声明数据类型声明有符号数有符号数sizeof预算符预算符计算字节数计算字节数static存储种类声明存储种类声明静态变量静态变量struct数据类型声明数据类型声明结构类型数据结构类型数据switch程序语句程序语句选择结构选择结构tyedef数据类型声明数据类型声明重新进行数据类型定义重新进行数据类型定义union数据类型声明数据类型声明联合类型数据联合类型数据unsigned数据类型声明数据类型声明无符号数据无符号数据void数据类型声明数据类型声明无类型数据无
4、类型数据volatile数据类型声明数据类型声明声明该变量在程序执行中可被隐含地改变声明该变量在程序执行中可被隐含地改变while程序语句程序语句循环结构循环结构关键字关键字用途用途说明说明_at_地址定位地址定位为变量进行存储器绝对空间地址定为变量进行存储器绝对空间地址定位位alien函数特性声明函数特性声明用以声明与用以声明与PL/M51兼容的函数兼容的函数bdata存储器类型声明存储器类型声明可位寻址的可位寻址的8051内部数据存内部数据存储储区区bit位变量声明位变量声明声明一个变量或位类型的函数声明一个变量或位类型的函数code存储器类型声明存储器类型声明8051程序存储器空间程序存
5、储器空间compact存储器模式存储器模式指定使用指定使用8051外部分页寻址数据存外部分页寻址数据存储器空间储器空间data存储器类型声明存储器类型声明直接寻址的直接寻址的8051内部数据存储器内部数据存储器idata存储器类型声明存储器类型声明间接寻址的间接寻址的8051内部数据存储器内部数据存储器Interrrupt中断函数声明中断函数声明定义一个中断服务函数定义一个中断服务函数large存储器模式存储器模式指定使用指定使用8051外部数据存储器空间外部数据存储器空间关键字关键字用途用途说明说明pdata存储器类型声明存储器类型声明分页寻址的分页寻址的8051外部数据存储器外部数据存储器
6、_priority_多任务优先声明多任务优先声明规定规定RT51或或TR51Tiny的任务优先级的任务优先级reentrant再入函数声明再入函数声明定义一个再入函数定义一个再入函数sbit位变量声明位变量声明声明一个可位寻址变量声明一个可位寻址变量sfr特殊功能寄存器特殊功能寄存器声明声明声明一个声明一个8位特殊功能寄存器位特殊功能寄存器sfr16特殊功能寄存器特殊功能寄存器声明声明声明一个声明一个16位特殊功能寄存器位特殊功能寄存器small存储器模式存储器模式指定使用指定使用8051内部数据存储器空间内部数据存储器空间_task_任务声明任务声明定义实时多任务函数定义实时多任务函数usi
7、ng寄存器组定义寄存器组定义定义定义8051的工作寄存器的工作寄存器xdata存储器类型声明存储器类型声明8051外部数据存储器外部数据存储器 数据类型数据类型长度长度值域值域位型位型bit1bit0或或1字符型字符型signed char1Byte-128127unsigned char1Byte0255整型整型signed int2Byte-32768+32767unsigned int2Byte065535signed long4Byte-2147483648+2147483647unsigned long 4Byte04294967295实型实型float4Byte1.176E-383
8、.40E+38Double 8Byte 10-30810+308数据类型数据类型长度长度值域值域指针型指针型data/idata/pdata1Byte1字节地址字节地址code/xdata2Byte2字节地址字节地址通用指针通用指针*3Byte其中其中1字节为存储器类字节为存储器类型编码,型编码,2、3字节为字节为地址偏移量地址偏移量访问访问SFR的的数据类型数据类型sbit1bit0或或1sfr1Byte0255sfr162Byte065535 存储类型存储类型描述描述data直接寻址内部数据存储区,访问变量速度最直接寻址内部数据存储区,访问变量速度最快(快(128B)bdata可位寻址内部
9、数据存储区,允许位与字节混可位寻址内部数据存储区,允许位与字节混合访问(合访问(16B)idata间接寻址内部数据存储区,可访问全部内部间接寻址内部数据存储区,可访问全部内部地址空间(地址空间(256B)pdata分页(分页(256B)外部数据存储区)外部数据存储区xdata外部数据存储区(外部数据存储区(64KB)code代码存储区(代码存储区(64KB)编编 译译模模 式式变量变量存存储储区域区域默 认 存默 认 存储类型储类型特点特点SMALL片内低片内低128B RAMdata访问数据的速度最快,但访问数据的速度最快,但容量小容量小C O M PACT片外页片外页256B RAMpda
10、ta介于两者之间,且受片外介于两者之间,且受片外RAM的容量限制的容量限制LARGE片外片外64KB RAMxdata访问数据效率不高,但容访问数据效率不高,但容量大量大 说明说明符号名符号名说明说明void fun(void)FUNC无参数传递或不含寄存器参数的函数无参数传递或不含寄存器参数的函数名不进行改变即转入目标文件中,名名不进行改变即转入目标文件中,名称只是简单地转为大写形式称只是简单地转为大写形式void func(char)_FUNC带寄存器参数的函数名加入带寄存器参数的函数名加入“_”字符字符前缀以示区别,表明这类函数包含寄前缀以示区别,表明这类函数包含寄存器内的参数传递存器内
11、的参数传递void func(void)reentrant_?FUNC对于重入函数加上对于重入函数加上“_?”字符前缀以示字符前缀以示区别,表示这类函数包含寄存器的参区别,表示这类函数包含寄存器的参数传递数传递 参数类型参数类型charintLong,float一般指针一般指针第第1个参数个参数R7R6,R7R4 R7R1,R2,R3第第2个参数个参数R5R4,R5R4 R7R1,R2,R3第第3个参数个参数R3R2,R3无无R1,R2,R3返回值返回值 寄存器寄存器说明说明BitC进位标志进位标志CharR7IntR6,R7高位在高位在R6,低位在,低位在R7LongR4 R7高位在高位在R
12、4,低位在,低位在R7FloatR4 R732位位IEEE格式,指数和格式,指数和符号位在符号位在R7指针指针R1,R2,R3R3存放存储器类型,高位存放存储器类型,高位在在R2,低位在,低位在R1XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T
13、014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51/-声明区声明区-#include unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/共阴极数码管共阴极数码管0-F的码表的码表/-延时程序延时程序-void delay(unsigned int i)/延时程序延时程序unsigned int m,n;for(m=i;m0;m-)for(n=90;n0;n-);/-主程序主程序-void main()unsigned char num;while(1)for(num=0;num16;num+)P0=tablenum;delay(1000);