《单片机C语言程序设计经典案例.doc》由会员分享,可在线阅读,更多相关《单片机C语言程序设计经典案例.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、工程三 C51程序设计语言根底任务1 C51程序的识读1. C51程序构造例3-1 P_test/* /注释,还可用/注释掉一行Chip name:STC89C51RC #include “ /预处理命令,文件包含预处理命令,后缀名都是.h,标准的MCS-51单片机头文件为,STC89系列单片机头文件为 #define unit unsigned int /宏定义预处理命令 sbit BZ=P37 ; sbit key=P10;void delay(unit ms) unit i; while( ms -) for(i=0;i120;i+);void main(void) while(1) i
2、f(key=0) BZ=0x0; delayms(10); BZ=0x1; delayms(50); P0=0xFF; else P0=P0; delayms(500);2. C51的数据类型 位变量型 bit字符型 无符号字符型 unsigned char 有符号字符型 signed charC51的数据类型 整数型 无符号整数型 unsigned int根本类型 有符号整数型 signed int 长整数型 无符号长整数型 unsigned long int有符号长整数型signed long int 实数型浮点型 单精度浮点型float 双精度浮点型double 数组类型array 构造
3、体类型struct构造类型 共用体union 枚举enum 指针类型 空类型(void)表3-1 C51根本数据类型的长度与值域类型长度/bit长度/byte范围位变量型bit10 ,1无符号字符型 unsigned char8单字节0-255有符号字符型 signed char8单字节-128-127无符号整数型 unsigned int16双字节0-65536有符号整数型 signed int16双字节-32768-32767无符号长整数型 unsigned long int32四字节有符号长整数型 signed long int32四字节单精度浮点型 float32四字节双精度浮点型 d
4、ouble 32四字节一般指针类型 24三字节3. C51的标识符与关键字标识符是由字母、数字与下划线组成的字符串,第一个字符必须是字母或下划线,不超过32个字符。表3-2 C51中的关键字关键字用途说明auto存储种类声明用来声明局部变量bdata存储器类型说明可位寻址的内部数据存储器break程序语句退出最内层循环体bit位变量语句位变量的值是1true或0flasecase程序语句switch语句中的选择项char数据类型的声明单字节整数型或字符型数据关键字用途说明code存储器类型声明程序存储器const存储类型说明在程序执行过程中不可修改的变量值continue程序语句退出本次循环,
5、转向下一次循环data存储器类型说明直接寻址的内部数据存储器default程序语句Switch语句中的失败选择项do程序语句构成do.while循环构造double数据类型说明双精度浮点数else程序语句构成if.else选择构造enum数据类型说明枚举extern存储类型说明在其他程序模块中声明了的全局变量float数据类型说明单精度浮点型for程序语句构成for循环构造goto程序语句构成goto循环构造idata存储器类型说明间接寻址的内部数据存储器if程序语句构成do.while循环构造int数据类型说明根本整数型interrupt中断声明定义一个中断函数long数据类型说明长整数型p
6、data存储器类型说明分页寻址的内部数据存储器register存储类型说明使用CPU内部的存放器变量reentrant再入函数说明定义一个再入函数return程序语句函数返回sbit位变量声明声明一个可位寻址的变量short数据类型说明短整数型signed数据类型说明有符号数,二进制的最高位位符号位sizeof运算符计算表达式或数据类型的字节数Sfr特殊功能存放器声明声明一个特殊功能存放器Sfr16特殊功能存放器声明声明一个16位的特殊功能存放器static存储类型说明静态变量struct数据类型说明构造类型数据switch程序语句构成switch选择语句typedef数据类型说明重新进展数据
7、类型定义union数据类型说明联合数据类型unsigned数据类型说明无符号数据using存放器组定义定义芯片的工作存放器void数据类型说明无符号数据volatile数据类型说明声明该变量在程序执行中可被隐含改变while程序语句构成while与do.while循环语句xdata存储器类型说明外部数据存储器4. C51的常量与变量1) 常量常量就是在程序运行过程中,其值不能改变的数据,包括整型常量、字符常量、字符串常量、实数常量、位标量等。(1) 整型常量:可以用二进制、八进制、十进制、十六进制表示。 无符号整数常量在一个数字后面加上“u或“U表示。长整数型常量在后面加上“l或“L,无符号长
8、整数型常量在数字后面加上“ul或“UL,实数型常量在后面加“f或“F。(2) 字符常量:单引号内的字符,不可以显示的控制字符在前加“组成专用转义字符。(3) 字符串常量:双引号内的字符,当双引号内没有字符时是空字符串。在C语言中,字符串常量是作为字符类型数组来处理的,在存储字符串时,系统在字符串尾部加上转义字符“o,作为该字符串的完毕符。(4) 实数常量:有十进制与指数两种表示形式。指数表示的实数为“数字.数字e数字, 中的内容为可选项(5) 位标量:位标量的值是一个二进制数。2) 变量变量就是在程序运行过程中,其值可以被改变的数据。必须先用标识符作为变量名,并指出所用的数据类型与存储模式,这
9、样编译系统才能为变量分配相应的存储空间。定义变量的格式: 存储器类型 ;类型定义与标识符是必要的。存储模式有四种,自动auto、外部extern、静态static与存放器register,默认类型为自动auto。表3-3 C51存储类型与MCS-51单片机存储空间的对应关系及其大小存储类型与存储空间的对应关系长度/bit长度/byte存储范围data直接寻址片内数据存储区,访问速度快128B810-255bdata可位寻址片内数据存储区,允许位与字节混合访问16B810-255idata间接寻址片内数据存储区,可访问片内全部RAM地址空间256B810-255pdata分页寻址片外数据存储区,
10、由MOVX Ri访问810-255xdata寻址片外数据存储区64KB,由 MOVX DPTR访问1620-65535code寻址代码存储区64KB,由 MOVC DPTR访问1620-65535如果在变量定义时省略了存储类型标识符,那么编译器会自动选择默认的存储类型。默认的存储类型进一步由SMALL、COMPACT、与LARGE存储模式指令限制。存储模式决定了变量的默认存储类型、参数传递区与无明确存储类型说明变量的存储类型。在SMALL模式下,参数传递是在片内数据存储区中完成的。COMPACT与LARGE模式允许参数在外部存储器中传递。表3-4 存储模式及说明存储模式说明SMALL参数及局部
11、变量放入可直接寻址的片内存储器最大为128B,默认存储类型为data,因此访问十分方便。另外,所有对象包括栈都必须嵌入片内RAM,栈长由函数的嵌套导数决定。COMPACT参数及局部变量放入分页片外存储区最大为256B,默认的存储类型为pdata,通过存放器R0与R1R0、R1间接寻址,栈空间位于MCS-51系统内部数据存储区中。LARGE参数及局部变量直接放入片外数据存储区最大为64KB,默认存储类型为xdata,使用数据指针DPTR来进展寻址。用此数据指针进展访问效率较低,尤其是对两个或多个字节的变量,这种数据类型的访问机制直接影响代码的长度。另一不方便之处在于这种数据指针不能对称操作。任务2 运算符与表达式表3-5 C语言常用的运算符第 10 页