科目一单片机C语言基础_第1页
科目一单片机C语言基础_第2页
科目一单片机C语言基础_第3页
科目一单片机C语言基础_第4页
科目一单片机C语言基础_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、进制:数字电路小的两种111平特性决定了它00611011711121()8100()3119100141001010105101111011十六进制:是二进制的简短表示形式。十进制中的0-15分别表示为十六进制的0、1、2、3、4、5、6、7、8、9、a、b、c、d、 e、f二进制与十六进制之间的转换规律:一般把四个二进制数放在一起转换成一个十六进制数, 转换时先把二进制数转换成十进制数,再把十进制数转换成十六进制数。如:0001b-> 1 -> 1hb表示为二进制,h为i六进制100ib->9-> 9h 1010b -> 10-> ah0010 1100

2、 ->44-> 2ch各种进位制的对应关系:十进制二进制十六进制十进制二进制十六进制000910019111101010a2102111011b3113121100c41004131101d51015141110e61106151111f71117810008c-51语言的基本数据类型c51的基木数据类型有整型(int)、浮点型(float)、字符型(ch吐)、无值 型(void)o在基本数据类型中,除void类型外,其前面均可以有各种修饰符。 修饰符用來改变基木类型的意义,以便更准确地适应各种情况的需求。常用的修饰符有signed (有符号)、unsigned (无符号)、lon

3、g (长型符)、 short (短型符)。在c51语言屮的所有数据类型的字长和取值范围,如下表所示。表c51语言的数据类型类型字长(bit)取值范围char (字符型)8asch字符或(4255unsigned char (无符号字符型)80-255signed char (有符号字符型)8128-127int (整型)16-32768-32767unsigned int (无符号整型)160-65535signed int (有符号整型)16同intshort (短整型)8-128-127unsigned short int (无符号短整型)8卜255signed short int (有符

4、号短整型)8同 short intlong int (长整型)3221474836484147483649signed long int (有符号长整型)32-2147483648-2147483649unsigned long int (无符号长整型)320-4294967296float (单浮点型)32约猜确到6位数void (无值型)0无值c51关键字关键字是c51语言重耍的组成部分,是c51编译器已定义保留的专用特殊标识符,冇时也称为“保留字” o这些关键字通常有固定的名称和功能,如int、 float、char> if> for> while> case 等

5、。变量变量是在程序运行过程屮其值可以改变的量。一个变量由两部分组成:变 量名和变量值。数据类型符 变量名1 二初值,变量名2二初值;char a; int b二3;char a=0, b二 1;注意!变量名不能是c51的关键字,开头必须是字母或者卜划线char if ;/*错误*/ int la; lnt=al; lnt=_la;变量作用域变量作用域是程序中变量起作用的范围。由于c51中可以包含多个函数和程 序文件,因此使用变量时,除要首先定义该变量外,还要注意变量的冇效作用范 围,即该变量的作用域。变量作用域即变量的作用范围,可以是作用于一个函数, 或一个程序文件,甚至整个工程里的所有文件都

6、可用。一般而言,按照变量的存 储类型,变量分为门动变量、全局变量、静态变量和寄存器变量四种类型。下面 将分别介绍其作用域范围。自动变量 口动变量一般在是函数的内部或者程序块中时使用,其是以关键字auto 标识的变量类型。其定义格式为“auto类型说明符变量标识符,变 量标识符”。自动型变量的作用域范围是函数或者程序块的内部。 在编译c51程序吋,自动型变量根据变量类型动态分配存储空间。在程 序执行到该函数时,根据变量类型为其自动分配存储空间,当该函数执 行完毕后,立即取消该变量的存储空间,即该门动型变量失效。这样在 该函数内部定义的变量,就不能在该函数外引用。全局变量全局变量一般定义在所有函数

7、的外部,即整个程序文件的最前面,也称 为外部变量。全局变量的作用域是整个程序文件,即全局变量可以被该 程序文件中的任何函数使用。在编译c51程序吋,全局变量根据变量类型被静态地分配适当的存储空 间。在整个程序运行过程中,该变量一旦分配空间,便不会消失。这样 全局变量对整个程序文件都有效。因为全局变量是永久性的,因此全局变量可以作为不同函数间的参数进 行传递和共享。静态变量静态变量即在编译c51程序时,根据数据类型静态地分配合适的存储空 间,并在程序运行过程中始终占有该存储空间的变量。以关键字static 疋义,其定义格式为“static类型说明符 变量标识符,变量标识符”。 示例如下: sta

8、ticint i; staticchar c;在c51语言中,根拯变量声明位置的不同,静态变量可以分为如下两种: 内部静态变量,即在函数内部定义,其作用域只是定义该变量的函数内 部,和自动变量类似。外部静态变量,即在函数外部定义,其始终占有内存空间,和全局变量 类似。寄存器变量寄存器变量被存储在cpu的寄存器中。寄存器变量以关键字register声 明,声明格式为“register类型说明符变量标识符,变量标识符”。 示例如下: register char ch; register double db;由于寄存器变量被存储在cpu的寄存器屮,因此其读写速度比较高。寄 存器变量常用于某一变量名频

9、繁使用的情况,这样做可以提高系统的运 算速度。在使用寄存器变量使需要注意如下几点:由于单片机内部寄存器数量有限,不能定义多个寄存器变量。在实际程 序设计屮应将最重要的变量设置为寄存器变量,以捉高系统执行速度。在c51中,只允许同时定义两个寄存器变量,如果多于两个,程序在编 译吋会自动地将两个以外的寄存器变量作为非寄存器变量来处理。c51分隔符分隔符在c51程序语言中起辅助标识和分界的作用,如+、-、*、/、!、 丨、二、,、:、;、'、#等。这些都是简单分隔符。简单分隔符 是曲除字母、数字、下划线以外的单个asctt字符组成的符号。除此以 夕卜,c51中还有复合分隔符,例如二、!二、二

10、、(、)等。复 合分隔符是特定字符的某种组合。 c51的分隔符常用于数组、结构、指针以及语句等情况,下面举出常用的 分隔符示例。 “;”分隔符:主要用于语句的末尾,起到隔离语句的作用,例如例如 int r;o “”分隔符:主要用于对数组说明,例如char ch =''hello everyone!''。 “()”分隔符:主要用于进行隔离,例如s=area(r)o “,”分隔符:主要用于进行隔离,例如char chl,ch2o “ ” 分隔符:主要用于进行复合语句的隔离,例如for i=0;i10;i+o符符符隔隔隔加分分:主要用于做指针,例char *plo:主

11、要用于做预处理伪指令,例如define pi 314159。:主要用于标识特殊寄存器的位,例如sbit p10二p0。const修饰符在c51语言屮,用关键字const修饰的是一类特殊的常量,一般称为符 号常量或const变量。const修饰符主要用來定义常量或变量。其定义格 式为“const 类型说明符常量名二常量值;”。示例如2 const double pl=3. 14159;/ 定义浮点型的const变量基木数据类型的变量一旦加上const修饰符,程序在编译时,将其视为 一个常量,而不再为其分配内存。当在程序中遇到该const变量吋,将 用其定义时的初值來代替,不能在程序中修改cons

12、t修饰的变量的值。 所以在声明const变量时,必须对其进行初始化赋值,除非该变量是用 extern修饰的全局变量。 extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。特殊功能寄存器的定义。sfr sco"二0x98;sfr tm0d=0x89;sfr pl=0x90;sfrl6 t1二0x8a;特殊功能寄存器变量51单片机片内有许多特殊功能寄存器,通过这些特殊功能寄存器可以控制 51单片机的定时器、计数器、串口、i/o及其它功能部件,每一个特殊功能寄存 器在片内ram中都对应于一个字节单元或两个字节单元。在

13、c51中,允许用户对这些特殊功能寄存器进行访问,访问时须通过sfr或 sfrl6类型说明符进行定义,定义时须指明它们所对应的片内ram单元的地址。 格式如下:sfr或sfrl6特殊功能寄存器名二地址;sfr用于对51单片机中单字节的特殊功能寄存器进行定义,sfrl6用于对双 字节特殊功能寄存器进行定义。特殊功能寄存器名一般用大写字母表示。地址一 般用直接地址形式。【例】sbit型变量的定义:sfr pl二0x90;sbit pl_0二0x91;sbit pl_0 二p0;sbit位冕型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时须指 明其位地址,可以是位直接地址,可以是可位寻址变量带

14、位号,也可以是特殊功 能寄存器名带位号。格式如下:sbit位变量名二位地址;sbit位变量名二位变量/特殊功能寄存器名f立号;如位地址为位直接地址,其取值范围为oxoo'oxff;字节地址与位号之间、 特殊功能寄存器与位号之间一般用作间隔。c-51的包含的头文件在c51中,为了用户处理方便,c51编译器把51单片机的常用的特殊功能寄 存器和特殊位进行了定义,放在一个“reg51.h”或“reg52.h”的头文件屮,当 用户要使用吋,只须要在使用之询用一条预处理命令#include <reg52. h>把这 个头文件包含到程序中,然后就可使用殊功能寄存器名和特殊位名称。 通常

15、冇:reg51. h reg52. h math, h 常用有:reg51. h reg52. h math, h(定义常用数学运算);c51的运算符赋值运算符“二”,在c51中,它的功能是将一个数据的值赋给一个变量, 如 x二10。变量二表达式;执行时先计算出右边表达式的值,然后赋给左边的变量。例如:x=8+9;/*将8+9的值赋绐变量x*/x二y二5;/*将常数5同时赋给变量x和y*/在c51屮,允许在一个语句屮同吋给多个变量赋值。算术运算符算术运算符是用来进行算术运算的操作符。c51语言中的算术运算符继承 了其它高级计算机语言的特点,用法也基木一致。c51语言屮的算术运算 符冇如下所示的

16、几种。符符符符符 算算算算算 运远运运运 , , , , , , , , , , -+ * / %5进行减法或取负的运算。进行加法运算。 进行乘法运算。 进行除法运算。 进行模运算。“-”运算符:进行口减(减1)运算。“+”运算符:进行自增(增1)运算。关系运算符c51中有6种关系运算符:> 大于< 小于>二大于等于<=小于等于二二 等于!= 不等于关系运算用于比较两个数的大小,关系表达式的一般形式如下:表达式1关系运算符表达式2关系运算的结果为逻辑量,成立为真(1),不成立为假(0)。其结果可以作 为一个逻辑量参与逻辑运算。例如:5>3,结果为真(1),而10=

17、 =100,结杲为假(0)。注意:关系运算符等于“二二”是由两个“二”组成。逻辑运算符c51冇3种逻辑运算符:&& 逻辑与 逻辑或! 逻辑非逻辑与,格式:条件式1 &&条件式2当条件式1与条件式2都为真吋结果为真(非0值),否则为假(0值)。 逻辑或,格式:条件式1 i i条件式2当条件式1与条件式2都为假时结果为假(0值),否则为真(非0值)。 逻辑非,格式:!条件式当条件原來为真(非0值),逻辑非后结果为假(0值)。当条件式原来为 假(0值),逻辑非后结果为真(非0值)。例如:若护8, b=3, c二0,贝ij! a为假,a && b为真,b

18、 && c为假。位运算符c51语言能对运算对象按位进行操作,c51中位运算符只能对整数进行操作, 不能对浮点数进行操作。c51中的位运算符冇:& 按位与i按位或八按位异或按位取反« 左移» 右移【例】设 a=0x45=01010100b, b=0x3b=00111011b,则 a&b、a|b> af、a、a«2> b»2分别为多少?a&b二00010000b二ox10。a|b=01111111b=0x7foab=01101111b=0x6foa=1010101lb=0xaboa«2=01010

19、000b=0x50ob»2=00001110b=0x0co复合赋值运算符c51语言中支持在赋值运算符“二”的询面加上其它运算符,组成复合赋值 运算符。下面是c51中支持的复合赋值运算符+二加法赋值+减法赋值*二乘法赋值/=除法赋值%二取模赋值&二逻辑与赋值逻辑或赋值逻辑异或赋值逻辑非赋值»=右移位赋值«=左移位赋值复合赋值运算的一般格式如下: 变量复合运算赋值符表达式它的处理过程:先把变量与后面的表达式进行某种运算,然后将运算的结杲 赋给前而的变量。其实这是c51语言屮简化程序的一种方法,大多数二目运算都 可以用复合赋值运算符简化表示。例如:a+二6相当于

20、a=a+6; a*二5相当于a=a*5; b&二0x55 相当于 b二b&0x55; x=2 相当于 x二x2。c51常用语句 while if for switch/casc do-while while语句循环语句条件语句循环语句 多分支选择语句 循环语句wh订e语句在c51屮用于实现当型循环结构,它的格式如下:wh i 1 e (表达式)语句;/*循环体*/ while语句后面的表达式是能否循环的条件,后面的语句是循环体。当表达 式为非0 (真)时,就重复执行循环体内的语句;当表达式为0 (假),则中止 砧订c循环,程序将执行循环结构z外的卜一条语句。它的特点是:先判断条

21、件, 后执行循环体。在循环体屮对条件进行改变,然后再判断条件,如条件成立,则 再执行循环体,如条件不成立,则退出循环。如条件第一次就不成立,则循环体 一次也不执行。【例】1=1;while (i<10)a二a+1; i二i+1;if语句if语句是c51屮的一个基木条件选择语句,它通常有三种格式:(1)if (表达式)语句;(2)if (表达式)语句1; else 语句2; (3)if (表达式1)语句1; else if (表达式2)(语句2;)else if (表达式3)(语句3;)else if (表达式nt)(语句nt;) else 语句 n【例】if语句的用法。(1) if (x

22、! =y) printf ( “x=%d, y=%dn” , x, y);执行上面语句时,如果x不等于y,则输出x的值和y的值。(2) if (x>y) max=x;else max=y;执行上面语句吋,如x大于y成立,则把x送给最大值变量max,如x大 于y不成立,则把y送给最大值变量nmx。使max变量得到x、y中的大数。(3) if (scorc>=90) printf (uyour result is an an”);elseif(score二80)printf(“yourresultisanbn");elseif(score二70)printf (“yourre

23、sultisancn”);elseif(score二60)printf ("yourresultisandn”);else printf( "your result is an en” );执行上面语句后,能够根据分数score分别打出a、b、c、d、e五个等级。for语句for (表达式1;表达式2;表达式3)语句;/*循环体*/for语句后而带三个表达式,它的执行过程如下:(1) 先求解表达式1的值。(2) 求解表达式2的值,如表达式2的值为真,则执行循环休屮的语句,然后 执行下一步(3)的操作,如表达式2的值为假,则结束for循环,转到最后一 步。(3) 若表达式2的

24、值为真,则执行完循环体中的语句后,求解表达式3,然后 转到笫四步。(4) 转到(2)继续执行。(5) 退出for循环,执行下面的一条语句。【例】for (j=0;j<125;j+)在for循环中,一般表达式1为初值表达式,用于给循环变量赋初值;表达 式2为条件表达式,对循环变量进行判断;表达式3为循环变量更新表达式,用 于对循环变量的值进行更新,使循环变量能不满足条件而退出循环。switch/case 语句if语句通过嵌套可以实现多分支结构,但结构复朵。switch是c51中提供的专 门处理多分支结构的多分支选择语句。它的格式如下:switch(表达式)case常量表达式1: 语句1;b

25、reak;case常量表达式2: 语句2;break;case常量表达式m 语句mbreak;default: 语句 n+1; 说明如下:(1) switch后面括号内的表达式,可以是整型或字符型表达式。(2) 当该表达式的值与某一 “case”后而的常量表达式的值相等时,就执行该 “case”后面的语句,然后遇到break语句退th switch语句。若表达式的值与所有case后的常量表达式的值都不相同,则执行default后面的语句,然后退 出switch结构。(3) 每一个case常量表达式的值必须不同否则会出现口相才盾的现象。(4) case语句和default语句的岀现次序对执行过程没冇影

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论