补充:C51程序设计基础1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1C51程序设计基础主要介绍了C51程序设计基础知识,包括C语言的数据类型、运算符、各种语句、数组与函数等知识,使大家具有单片机C语言程序设计的能力。学习目的及要求:2*2.1C51程序设计基础知识*2.2C51的函数与数组3*2.1C51程序设计基础知识2.1.1C51特点2.1.2C51编程的例子2.1.3C51的标识符和保留字2.1.4C51的数据类型2.1.5C51的常量2.1.6变量2.1.7C51的常用运算符2.1.8C51的输入输出2.1.9C51的基本语句42.1.1C51特点C51与ASM51相比,主要具有如下特点:1)编程调试灵活方便2)生成的代码编译效率高3)完全模块化4)可移植性好5)便于项目维护管理5C51语言与ANSIC的对比C51与标准C语言对比相同之处:语法规则、程序结构、编程方法差异之处:数据结构(数据类型、存储模式)、中断处理本章教学内容:①C51的数据结构②C51编程实践与KeilC使用方法6KeilC51下的程序结构Project(工程)C51(库函数)LIB(库函数)(头文件)KeilC51main(函数)File_1(*.c)Func1-n(函数)……Func1-1(函数)File_n(*.c)Funcn-n(函数)……Funcn-1(函数)File_1(*.asm)……sub1(子程序)subn(子程序)File_n(*.asm)……sub1(子程序)subn(子程序)…………72.1.2C51编程的例子【例2-1】编程使接在P1.0引脚上的LED闪烁。8预处理命令---------函数说明------------全局变量定义------主函数------------调用函数------------局部变量定义---------程序体程序体------92.1.2C51编程的例子1.编译预处理部分程序的第一行是一个“文件包含”处理。程序中包含reg51.h文件的目的是为了要使用P1这个符号,即通知C51编译器,程序中所写的P1是指80C51单片机的P1端口而不是其他变量。可根据不同的编程需要选择不同的头文件,一般情况下若只用简单控制,只需要下面3个头文件:#includereg51.h/*寄存器说明头文件*/#includestdio.h/*输入/输出说明头文件*/#includeintrins.h/*部分特殊指令说明头文件*/102.1.2C51编程的例子在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以需给它另起一个名字,这里使用了KeilC的关键字sbit来定义。2.说明与定义部分3.函数函数是C51程序的基本单位,一个C51程序至少有一个主函数main(),也可以由一个主函数main()和若干个其他函数构成。函数由函数说明部分和函数体两部分构成。112.1.3C51的标识符和保留字标识符用于标识语句、数据类型、函数、变量、数组、存储方式等对象,也就是这些对象的名字。在C语言中,标识符严格区分大小写。在C51编译器中,支持标识符的前32位为有效标识,如果超长,则超长部分被舍弃。注意:变量名只能由字母、数字、下划线组成,且只能由字母和下划线开头。变量不能是C语言的保留字(或称关键字),即不能使用C语言系统已经有固定含义的单词。122.1.3C51的标识符和保留字表2-1C语言32个保留字表2-2C51扩展13个保留字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizeofstructswitchtypedefunionunsignedvoidvolatilewhilebitsbitsfrsfr16databdataxdatacodeinterruptreentranusingidatapdata132.1.4C51的数据类型数据在计算机内存中的存放情况由数据结构决定。C语言的数据结构是由数据类型决定的,C51的数据类型分为基本数据类型和组合数据类型,组合数据类型是由基本数据类型构造而成的。组合数据类型有数组类型、结构体类型、共同体类型、枚举类型、指针类型和空类型。142.1.4C51的数据类型基本数据类型长度取值范围unsignedchar1B0~255signedchar1B-128~+127unsignedint2B0~65535signedint2B-32768~+32767unsignedlong4B0~4294967295signedlong4B-2147483648~+2147483647float4B1.176E-38~3.40E+38(6位数字)*指针型1~3B对象的地址bit1b0或1sbit1b0或1sfr1B0~255sfr162B0~6553517C51扩充数据类型:bit、sfr或sfr16、sbitbit型关键词bit用于定义一个位变量,语法规则:bitbit_name[=0或1];例如:bitdoor=0;//定义一个叫door的位变量且初值为0注意:上述变量的物理地址是由编译器分配的18sfr或sfr16型关键词sfr或sfr16用于定义SFR字节地址变量,语法规则:sfr或sfr16sfr_name=字节地址常数;51MCU中有21个SFR,如何定义与这些单元相关的变量?19例如,sfrP0=0x80;//定义P0口地址80HsfrPCON=0x87;//定义PCON地址87Hsfr16DPTR=0x82;//定义DPTR的低端地址82H注意:SFR字节地址变量的物理地址是由MCU资源决定的20sbit型部分SFR具有位地址,如何定义与这些位地址相关的变量?CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PD0^7D7HD6HD5HD4HD3HD2HD1HD0HD0HPSWD0^6D0^5D0^4D0^3D0^2D0^1D0^0绝对位地址相对位地址字节地址两种位地址表达形式:绝对位地址、相对位地址211)将SFR的绝对位地址定义为位变量名sbitbit_name=位地址常数;例如,sbitCY=0xD7;3)将SFR的相对位位置定义位变量名sbitbit_name=sfr_name^位位置;例如,sbitCY=PSW^7;2)将SFR的相对位地址定义为位变量名sbitbit_name=sfr字节地址^位位置;例如,sbitCY=0xD0^7;关键词sbit用于定义SFR位地址变量,三种定义形式:采用这种方式定义的位地址或字节地址必须在80H~FFH之间。22C51编译器在头文件“REG51.H”中定义了全部sfr/sfr16和sbit变量。用一条预处理命令#includeREG51.H把这个头文件包含到C51程序中,无需重新定义即可直接使用它们的名称。23应用举例:242.1.4C51的数据类型以上所述的数据类型中只有bit与unsignedchar两种数据类型可以直接转换成机器指令。所以C语言中使用的其他数据类型,虽然语句上很简单,但都要C51编译器用一系列机器指令处理这些数据类型。特别是对浮点数,处理起来更加复杂,将明显增加程序的长度与执行时间。因此应该避免使用复杂的数据类型。在编制C51程序时,应该尽可能使用无符号字符变量和位变量。252.1.5C51的常量常量是指在程序执行过程中其值不能改变的量。在C51中支持整型常量、浮点型常量、字符型常量和字符串型常量。整型常量也就是整型常数,根据其值范围在计算机中分配不同的字节数来存放。在C51中它可以表示成以下几种形式:(1)十进制数。如123、-45、0等。(2)十六进制数。以0x开头表示,如0x12、-0x3B等。1.整型常量262.浮点型常量浮点型常量也就是实型常数。有十进制表示形式和指数表示形式。十进制表示形式又称定点表示形式,由数字和小数点组成,如3.14159、0.36。指数表示又称科学记数法,常用于表示较大、较小的实型常量,指数形式为:[]数字[.数字]e[]整数如:6.02×1023,可表示成6.02e+23或6.02e23。-1.6×10-19,可表示成:-1.6e-19。27字符型常量是用单引号括起的字符,如'2'、'A'、'\n'等。可以是可显示的ASCII字符,也可以是不可显示的控制字符。3.字符型常量284.字符串型常量字符串型常量由一对双引号括起来的零个或多个字符组成,双引号仅起定界作用,本身并不是字符串中的内容。如“0123”、“Hello!”、“Iamastudent.”、“”等。注意:字符串常量与字符常量是不一样的,一个字符常量在计算机内只用一个字节存放,而一个字符串常量在内存中存放时不仅双引号内的每个字符占一个字节,而且系统会自动的在后面加一个转义字符“\0”作为字符串结束符。“\0”代表空操作字符,它不引起任何操作,也不会显示到屏幕上。如字符串student在内存中的存储形式如下:student\0295.符号常量#defineFalse0x0;//用预定义语句可以定义常量#defineTrue0x1;//这里定义False为0,True为1//在程序中用到False编译时自动用0替换,同理True替换为1#definePI3.1415926;C51允许将程序中的常量定义为一个标示符,称为符号常量。

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功