文档详情

51单片机C语言程序的设计经典案例

s9****2
实名认证
店铺
DOC
71KB
约5页
文档ID:476495929
51单片机C语言程序的设计经典案例_第1页
1/5

. . . 项目三 C51程序设计语言基础任务1 C51程序的识读1. C51程序结构例3-1 P_test/********************* //注释,还可用//注释掉一行File name:P_test.cChip name:STC89C51RCClock frequency:1.20MHz***********************/ #include “reg52.h” //预处理命令,文件包含预处理命令,后缀名都是.h,标准的MCS-51单片机头文件为”reg51.h”,STC89系列单片机头文件为”reg52.h” #define unit unsigned int //宏定义预处理命令 sbit BZ=P3`7 ; sbit key=P1`0;void delay(unit ms){ unit i; while( ms --) { for(i=0;i<120;i++);}}void main(void){ while(1) { if(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 结构体类型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四字节双精度浮点型 double 32四字节一般指针类型 24三字节3. C51的标识符和关键字标识符是由字母、数字和下划线组成的字符串,第一个字符必须是字母或下划线,不超过32个字符。

表3-2 C51中的关键字关键字用途说明auto存储种类声明用来声明局部变量bdata存储器类型说明可位寻址的部数据存储器break程序语句退出最层循环体bit位变量语句位变量的值是1(true)或0(flase)case程序语句switch语句中的选择项char数据类型的声明单字节整数型或字符型数据关键字用途说明code存储器类型声明程序存储器const存储类型说明在程序执行过程中不可修改的变量值continue程序语句退出本次循环,转向下一次循环data存储器类型说明直接寻址的部数据存储器default程序语句Switch语句中的失败选择项do程序语句构成do...while循环结构double数据类型说明双精度浮点数else程序语句构成if...else选择结构enum数据类型说明枚举extern存储类型说明在其他程序模块中声明了的全局变量float数据类型说明单精度浮点型for程序语句构成for循环结构goto程序语句构成goto循环结构idata存储器类型说明间接寻址的部数据存储器if程序语句构成do...while循环结构int数据类型说明基本整数型interrupt中断声明定义一个中断函数long数据类型说明长整数型pdata存储器类型说明分页寻址的部数据存储器register存储类型说明使用CPU部的寄存器变量reentrant再入函数说明定义一个再入函数return程序语句函数返回sbit位变量声明声明一个可位寻址的变量short数据类型说明短整数型signed数据类型说明有符号数,二进制的最高位位符号位sizeof运算符计算表达式或数据类型的字节数Sfr特殊功能寄存器声明声明一个特殊功能寄存器Sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器static存储类型说明静态变量struct数据类型说明结构类型数据switch程序语句构成switch选择语句typedef数据类型说明重新进行数据类型定义union数据类型说明联合数据类型unsigned数据类型说明无符号数据using寄存器组定义定义芯片的工作寄存器void数据类型说明无符号数据volatile数据类型说明声明该变量在程序执行中可被隐含改变while程序语句构成while和do...while循环语句xdata存储器类型说明外部数据存储器4. C51的常量和变量1) 常量常量就是在程序运行过程中,其值不能改变的数据,包括整型常量、字符常量、字符串常量、实数常量、位标量等。

1) 整型常量:可以用二进制、八进制、十进制、十六进制表示 无符号整数常量在一个数字后面加上“u”或“U”表示长整数型常量在后面加上“l”或“L”,无符号长整数型常量在数字后面加上“ul”或“UL”,实数型常量在后面加“f”或“F”2) 字符常量:单引号的字符,不可以显示的控制字符在前加“\”组成专用转义字符3) 字符串常量:双引号的字符,当双引号没有字符时是空字符串在C语言中,字符串常量是作为字符类型数组来处理的,在存储字符串时,系统在字符串尾部加上转义字符“\o”,作为该字符串的完毕符4) 实数常量:有十进制和指数两种表示形式指数表示的实数为“[±]数字[.数字]e[±]数字”,[ ]中的容为可选项(5) 位标量:位标量的值是一个二进制数2) 变量变量就是在程序运行过程中,其值可以被改变的数据必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间定义变量的格式: [ < 存储模式 > ] < 类型定义 > [ 存储器类型 ] < 标识符 >;类型定义和标识符是必要的存储模式有四种,自动(auto)、外部(extern)、静态(static)和寄存器(register),默认类型为自动(auto)。

表3-3 C51存储类型与MCS-51单片机存储空间的对应关系与其大小存储类型与存储空间的对应关系长度/bit长度/byte存储围data直接寻址片数据存储区,访问速度快(128B)810-255bdata可位寻址片数据存储区,允许位与字节混合访问(16B)810-255idata间接寻址片数据存储区,可访问片全部RAM地址空间(256B)810-255pdata分页寻址片外数据存储区,由MOVX Ri访问810-255xdata寻址片外数据存储区(64KB),由 MOVX DPTR访问1620-65535code寻址代码存储区(64KB),由 MOVC DPTR访问1620-65535如果在变量定义时省略了存储类型标识符,则编译器会自动选择默认的存储类型默认的存储类型进一步由SMALL、COMPACT、和LARGE存储模式指令限制存储模式决定了变量的默认存储类型、参数传递区和无明确存储类型说明变量的存储类型在SMALL模式下,参数传递是在片数据存储区中完成的COMPACT和LARGE模式允许参数在外部存储器中传递表3-4 存储模式与说明存储模式说明SMALL参数与局部变量放入可直接寻址的片存储器(最大为128B,默认存储类型为data),因此访问十分方便。

另外,所有对象(包括栈)都必须嵌入片RAM,栈长由函数的嵌套导数决定COMPACT参数与局部变量放入分页片外存储区(最大为256B,默认的存储类型为pdata),通过寄存器R0和R1(R0、R1)间接寻址,栈空间位于MCS-51系统部数据存储区中LARGE参数与局部变量直接放入片外数据存储区(最大为64KB,默认存储类型为xdata),使用数据指针DPTR来进行寻址用此数据指针进行访问效率较低,尤其是对两个或多个字节的变量,这种数据类型的访问机制直接影响代码的长度另一不方便之处在于这种数据指针不能对称操作任务2 运算符和表达式表3-5 C语言常用的运算符 / 。

下载提示
相似文档
正为您匹配相似的精品文档