资源描述:
《最新单片机C语言程序设计分解幻灯片.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机C语言程序设计分解5.1C语言与MCS-51单片机C语言是一种通用的计算机程序设计语言,代码效率高,数据类型和运算符丰富,有良好的程序结构,适用于各种应用系统的程序设计,是目前使用较广的单片机编程语言。本章重点介绍在单片机上使用MCS-51C语言的特殊数据类型、存储模式、程序的结构、混合编程。5.1.1C语言程序开发过程一般的C语言开发套件中,包括编译器、连接器和符号转换程序。编译器将源程序翻译为可重定位的目标代码文件(也可产生等价的汇编语言程序);连接器将目标代码文件连接为绝对目标文件;符号转换程序可将绝对目标文件转换为IntelHEX格式
2、文件,编程到程序存储器中运行。若使用提供了集成开发环境(IntegratedDevelopmentEnvironment,IDE)的套件,则编辑、编译、连接、符号转换、甚至调试可在一个窗口中完成。如AmericanAutomation、Auocet、BSO/TASKING、DUNFIELDSHAREWARE、KEIL/Franklin等。5.2.1C语言运算符算术运算符:+,-,*,/,%关系运算符:>,<,>=,<=,==,!=逻辑运算符:!,&&,
3、
4、赋值运算符:*=、/=、%=、+=、-=、<<=、>>=、&=、Λ=、¦=、++、--(位移动
5、、异或、位或)强制运算符强制转换表达式中的类型转换算术表达式中的运算转换赋值转换输出转换函数调用转换5.2.1C语言运算符intunsignedintlongintdoublefloatchar,short存储长度较短存储长度较长总趋势:算术表达式中的类型转换转换规则5.2.2数据类型数据类型位数字节数范围bit10~1signedchar81-128~+127unsignedchar810~255enum枚举变量8/161/2-128~+127或-32768~+32767signedshort162-32768~+32767unsignedsho
6、rt1620~65535signedint162-32768~+32767unsignedint1620~65535signedlong324-2147483648~+21473647unsignedlong3240~4294967295float/double32/644/8±1.175494E-38~±3.402823E+38sbit10~1sfr810~255sfr161620~655355.2.2数据类型例:unsignedcharin_data;8位unsignedlonglog_time;32位bitok_flag;1位5.2.3存储器
7、类型存储器类型与硬件存储器空间的对应关系code程序存储器;使用MOVC@A+DPTR指令访问data直接寻址的内部数据存储器;访问速度最快(128字节)idata间接访问的内部数据存储器;可以访问所有的内部存储器空间(256字节)bdata可位寻址的内部数据存储器;可以字节方式也可以位方式访问(16字节)xdata外部数据存储器(64KB),通过MOVX@DPTR指令访问pdata外部数据存储器的一页(256字节),使用MOVX@Ri指令访问5.2.3存储器类型例指出以下变量的存储位置chardatavar1;charcodetext[]="EN
8、TERPARAMETER";unsignedlongxdataarray[100];floatidatax,y,z;unsignedintpdatadimension;unsignedcharxdatavector[10][4][4];charbdataflags;5.2.4存储模式1.SMALL模式:所有的变量默认存放于内部RAM中,相当于定义时使用了data类型所有对象(包括堆栈)必须能够存入内部RAM的128字节5.2.4存储模式2.COMPACT模式:所有变量默认存放于外部RAM的一页中,相当于定义时使用了pdata类型这种存储模式可以满足
9、最多256字节的变量对变量的访问必须使用间接寻址方式编译程序产生的机器码使用@R0和@R1作为变量的指令操作数5.2.4存储模式3.LARGE模式:所有变量默认存放于外部RAM中,最多可以有64KB,相当于定义时使用了xdata类型数据指针DPTR用来寻址变量这种访问方式效率不高,特别是当变量长度超过一个字节时5.2.4存储模式现在常用的C编译程序通常允许使用混合模式不管存储模式如何,把经常使用的变量强制存放于内部RAM。大块数据则存放于外部RAM,而将其指针存放于内部RAM中,可以使用存储器类型说明符指定5.2.5硬件资源访问1.特殊功能寄存器:
10、使用sfr、sfr16和sbit数据类型访问特殊功能寄存器特殊功能寄存器中的位使用sbit类型可以定义可位寻址SFR中的位