完美版课件资料单片机_4.ppt
《完美版课件资料单片机_4.ppt》由会员分享,可在线阅读,更多相关《完美版课件资料单片机_4.ppt(128页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 4 章 单片机C语言程序设计羊大立E-mail: yangdali 主要内容主要内容一、一、C C语言与语言与MCS-51MCS-51二、二、C51C51的数据类型的数据类型三、三、C51C51的运算量与存储类型的运算量与存储类型四、四、C51C51的的运算符和表达式运算符和表达式五、表达式语句与复合语句五、表达式语句与复合语句六、六、C51C51的输入的输入/输出输出七、七、C51C51的程序结构的程序结构八、函数八、函数九、九、C51C51构造数据类型构造数据类型一、一、C C语言与语言与MCS-51MCS-511、C语言与语言与51单片机单片机2、C51与标准与标准C3、C51程序结
2、构程序结构1、C语言与语言与51单片机单片机nC语言目前已成为电子工程师进行单片机系统语言目前已成为电子工程师进行单片机系统开发时的常用编程语言。开发时的常用编程语言。n用用C语言来编写目标系统软件,会大大缩短开语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改发周期,且明显地增加软件的可读性,便于改进和扩充。进和扩充。n用用C语言编写的应用程序必须经单片机的语言编写的应用程序必须经单片机的C语语言编译器言编译器(简称简称C51),转换生成单片机可执行,转换生成单片机可执行的代码程序。的代码程序。n基于基于51系列单片机的系列单片机的C语言或语言或C语言编译器简语言编
3、译器简称为称为C51语言或语言或C51。1、C语言与语言与51单片机单片机n用汇编程序设计用汇编程序设计MCS51系列单片机应用程序系列单片机应用程序时,必须要考虑其时,必须要考虑其存储器结构存储器结构,尤其必须考虑,尤其必须考虑其片内数据存储器与特殊功能寄存器正确、合其片内数据存储器与特殊功能寄存器正确、合理的使用以及按实际地址处理端口数据。理的使用以及按实际地址处理端口数据。n用用C语言编写语言编写MCS51单片机的应用程序,虽单片机的应用程序,虽然不像用汇编语言那样具体地组织、分配存储然不像用汇编语言那样具体地组织、分配存储器资源和处理端口数据,但在器资源和处理端口数据,但在C语言编程中
4、,语言编程中,对数据类型与变量的定义,必须要与单片机的对数据类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射存储结构相关联,否则编译器不能正确地映射定位。定位。1、C语言与语言与51单片机单片机n支持支持MCS51系列单片机的系列单片机的C语言编译语言编译器有很多种。如器有很多种。如American Automation、Avocet、BSO/TASKING、DUNFIELD SHAREWARE、KEIL、Franklin等。等。n其中其中KEIL以它的代码紧凑和使用方便等以它的代码紧凑和使用方便等特点优于其它编译器,目前用得最为普特点优于其它编译器,目前用得最为普遍
5、。遍。2、C51与标准与标准CnC51的主要语法规定、程序结构及程序设计方法的主要语法规定、程序结构及程序设计方法都与标准的都与标准的C语言相同,但在某些方面有区别。语言相同,但在某些方面有区别。n具体地说,在以下几个方面不一样:具体地说,在以下几个方面不一样:(1)C51中定义的中定义的库函数库函数和标准和标准C语言定义的语言定义的库函数不同。标准的库函数不同。标准的C语言定义的库函数是按语言定义的库函数是按通用微型计算机来定义的,而通用微型计算机来定义的,而C51中的库函数中的库函数是按是按MCS-51单片机相应情况来定义的;单片机相应情况来定义的;(2)C51中的中的数据类型数据类型与标
6、准与标准C的数据类型也的数据类型也有一定的区别,在有一定的区别,在C51中还增加了几种针对中还增加了几种针对MCS-51单片机特有的数据类型;单片机特有的数据类型;2、C51与标准与标准C(3)C51变量的变量的存储模式存储模式与标准与标准C中变量的存中变量的存储模式不一样,储模式不一样,C51中变量的存储模式是与中变量的存储模式是与MCS-51单片机的存储器紧密相关的;单片机的存储器紧密相关的;(4)C51与标准与标准C的的输入输出处理输入输出处理不一样,不一样,C51中的输入输出是通过中的输入输出是通过MCS-51串行口来串行口来完成的,输入输出指令执行前必须要对串行完成的,输入输出指令执
7、行前必须要对串行口进行初始化;口进行初始化;(5)C51与标准与标准C在在函数函数使用方面也有一定的使用方面也有一定的区别,区别,C51中有专门的中断函数。中有专门的中断函数。表表1 ANSI C标标准关准关键键字字关关键键字字用用 途途说说明明auto存储种类说明用于声明局部变量,为默认值break程序语句退出最内层循环体case程序语句switch语句中的选择项char数据类型声明单字节整型数或字符型数据const存储种类说明在程序执行过程中不可修改的值continue程序语句转向下一次循环default程序语句switch语句中缺省选择项do程序语句构成dowhile 循环结构doubl
8、e数据类型声明双精度浮点数else程序语句构成ifelse 条件结构enum数据类型声明枚举类型数据extern存储种类说明在其他程序模块中声明了的全局变量float数据类型声明单精度浮点数for程序语句构成for循环结构goto程序语句构成goto循环结构if程序语句构成ifelse 条件结构int数据类型声明整型数long数据类型声明长整型数register存储种类说明使用CPU内部寄存器变量return程序语句函数返回short数据类型声明短整型signed数据类型声明有符号整型数sizeof运算符计算表达式或数据类型的字节数static存储种类说明静态变量struct数据类型声明结构体
9、类型数据switch程序语句构成switch选择结构typedef数据类型声明重新进行数据类型定义union数据类型声明联合类型数据unsigned数据类型声明无符号数据void数据类型声明无类型数据或函数volatile数据类型声明声明该变量在程序执行中可被隐含地改变while程序语句构成while和dowhile循环结构表表2 C51编译编译器器扩扩充关充关键键字字关关键键字字用途用途说说明明_at_地址定位地址定位为变为变量量进进行行绝对绝对地址定位地址定位_priority_ 多任多任务优务优先声先声明明规规定定RTX51或或RTX51 Tiny的任的任务优务优先先级级_task_任任
10、务务声明声明定定义实时义实时多任多任务务函数函数alien函数特性声明函数特性声明用于声明与用于声明与PL/M51兼容的函数兼容的函数bdata存存储储器器类类型声型声明明可位可位寻寻址的址的MCS-51内部数据存内部数据存储储器器bit位位变变量声明量声明声明一个位声明一个位变变量或位量或位类类型函数型函数code存存储储器器类类型声型声明明MCS-51的程序存的程序存储储空空间间compact存存储储器模式器模式按按compact模式分配模式分配变变量的存量的存储储空空间间data存存储储器器类类型声型声明明直接直接寻寻址址MCS-51的内部数据寄存器的内部数据寄存器idata存存储储器器
11、类类型声明型声明间间接接寻寻址址MCS-51的内部数据寄的内部数据寄存器存器interrupt中断函数声明中断函数声明定定义义一个中断服一个中断服务务函数函数large存存储储器模式器模式按按large模式分配模式分配变变量的存量的存储储空空间间pdata存存储储器器类类型声明型声明分分页寻页寻址的址的51外部数据空外部数据空间间sbit位位变变量声明量声明声明一个位声明一个位变变量量sfr特殊功能寄存器特殊功能寄存器声明声明声明一个声明一个8位特殊功能寄存器位特殊功能寄存器sfr16特殊功能寄存器特殊功能寄存器声明声明声明一个声明一个16位特殊功能寄存器位特殊功能寄存器small存存储储器模
12、式器模式按按small模式分配模式分配变变量的存量的存储储空空间间using寄存器寄存器组组定定义义定定义义MCS-51的工作寄存器的工作寄存器组组xdata存存储储器器类类型声明型声明定定义义MCS-51外部数据空外部数据空间间3、C51程序结构程序结构n和标准和标准C程序结构相同,采用函数结构程序结构相同,采用函数结构n每个每个C51程序由一个或多个函数组成,在这程序由一个或多个函数组成,在这些函数中至少应包含一个主函数些函数中至少应包含一个主函数main(),也可以包含一个也可以包含一个main()函数和若干个其它函数和若干个其它的功能函数。的功能函数。程序的执行总是从程序的执行总是从m
13、ain()函函数开始的,其位置无特殊规定。数开始的,其位置无特殊规定。n程序的开始部分一般是预处理命令、函数程序的开始部分一般是预处理命令、函数说明和变量定义等。说明和变量定义等。预处理命令预处理命令 include函数说明函数说明 long fun1();float fun2();int x,y;float z;功能函数功能函数1 fun1()函数体函数体 功能函数功能函数2 fun2()函数体函数体 主函数主函数 main()主函数体主函数体 实例实例 简单控制指示灯简单控制指示灯n功能要求:功能要求:u系统启动后,当按下一个按钮开关后再系统启动后,当按下一个按钮开关后再闪烁闪烁5次后熄灭
14、。次后熄灭。u以后每次按下按钮开关,发光二极管都以后每次按下按钮开关,发光二极管都会闪烁会闪烁5次。次。硬件设计:硬件设计:硬件设计:硬件设计:实际动手:实际动手:仿真:(仿真:(Proteus)C程序程序(续续):#include#include sbit p10=P10;sbit p20=P20;void delay(unsigned int i);void main()int n,c;P1=0 xff;P2=0 xff;C程序程序(续续):if(p20=0)c=1;if(c=1)n=5;while(n0)p10=0;delay(10000000);p10=1;delay(10000000
15、);n-;c=0;C程序程序(续续):void delay(unsigned int i)unsigned int j;for(j=0;ji;j+)汇编程序汇编程序org 0000hsjmp mainorg 0030hmain:mov p2,#0ffh mov c,p2.0 jc main mov r0,#5hloop:mov p1,#00h acall delay mov p1,#0ffh acall delay djnz r0,loop sjmp main汇编程序汇编程序delay:mov r1,#05hnext2:mov r2,#0ffhnext1:mov r3,#0FFh djnz r
16、3,$djnz r2,next1 djnz r1,next2 retend二、二、C51C51的数据类型的数据类型基本数据基本数据类类型型长长度度取取值值范范围围unsigned char1字字节节0255signed char1字字节节-128+127unsigned int2字字节节065535signed int2字字节节-32768+32767unsigned long4字字节节04294967295signed long4字字节节-2147483648+2147483647float4字字节节 1.175494E-38 3.402823E+38bit1位位0或或1sbit1位位0或或
17、1sfr1字字节节0255sfr162字字节节065535特殊功能寄存器型特殊功能寄存器型n这是这是C51扩充的数据类型,用于访问扩充的数据类型,用于访问MCS-51单片机中的特殊功能寄存器数据,它分单片机中的特殊功能寄存器数据,它分sfr和和sfr16两种类型。两种类型。usfr为字节型特殊功能寄存器类型,占一个内存单元;为字节型特殊功能寄存器类型,占一个内存单元;usfr16为双字节型特殊功能寄存器类型,占用两个字为双字节型特殊功能寄存器类型,占用两个字节单元。利用它们可以访问节单元。利用它们可以访问MCS-51内部的所有两内部的所有两个字节的特殊功能寄存器。个字节的特殊功能寄存器。n在在
18、C51中对特殊功能寄存器的访问必须先用中对特殊功能寄存器的访问必须先用sfr或或sfr16进行声明。进行声明。位类型位类型n这也是这也是C51中扩充的数据类型,用于访问中扩充的数据类型,用于访问MCS-51单片机中的可寻址的位单元。在单片机中的可寻址的位单元。在C51中,支中,支持两种位类型:持两种位类型:bit型和型和sbit型。型。n它们在内存中都只占一个二进制位,其值可以它们在内存中都只占一个二进制位,其值可以是是“1”或或“0”。其中用。其中用bit定义的位变量在定义的位变量在C51编译器编译时,在不同的时候位地址是可编译器编译时,在不同的时候位地址是可以变化的,而用以变化的,而用sb
19、it定义的位变量必须与定义的位变量必须与MCS-51单片机的一个可以寻址位单元或可位寻址的单片机的一个可以寻址位单元或可位寻址的字节单元中的某一位联系在一起,在字节单元中的某一位联系在一起,在C51编译编译器编译时,其对应的位地址是不可变化的。器编译时,其对应的位地址是不可变化的。三、三、C51C51的运算量与存储类型的运算量与存储类型1、常量、常量2、变量、变量 3、存储模式、存储模式4、绝对地址的访问、绝对地址的访问5、对特殊功能寄存器的访问、对特殊功能寄存器的访问6、对并行口的访问、对并行口的访问7、对位地址的访问、对位地址的访问1、常量、常量n常量是指在程序执行过程中其值不能改变的量。
20、nC51中支持整型常量、浮点型常量、字符型常量和字符串型常量。(1)整型常量)整型常量 C51中整型常量可以表示成以下几种形式:u十进制整数。如234、-56、0等。u十六进制整数。以0 x开头表示,如0 x12表示十六进制数12H。u长整数。在C51中当一个整数的值达到长整型的范围,则该数按长整型存放,在存储器中占四个字节,另外,如一个整数后面加一个字母L,这个数在存储器中也按长整型存放。如123L在存储器中占四个字节。(2)浮点型常量)浮点型常量 浮点型常量也就是实型常数。有十进制浮点型常量也就是实型常数。有十进制表示形式和指数表示形式。表示形式和指数表示形式。u十进制表示形式又称定点表示
21、形式,由数十进制表示形式又称定点表示形式,由数字和小数点组成。如字和小数点组成。如 0.123、34.645等都等都是十进制数表示形式的浮点型常量。是十进制数表示形式的浮点型常量。u指数表示形式为:指数表示形式为:数字数字.数字数字 e 数字数字 例如:例如:123.456e-3、-3.123e2等都是指等都是指数形式的浮点型常量。数形式的浮点型常量。(3)字符型常量)字符型常量u字符型常量是加字符型常量是加单引号单引号的字符,如的字符,如a、1、F等。等。u可以是可显示的可以是可显示的ASCII字符,也可以是不可显字符,也可以是不可显示的控制字符。示的控制字符。u对不可显示的控制字符须在前面
22、加上反斜杠对不可显示的控制字符须在前面加上反斜杠“”组成转义字符。利用它可以完成一些特组成转义字符。利用它可以完成一些特殊功能和输出时的格式控制。常用的转义字殊功能和输出时的格式控制。常用的转义字符如课本符如课本P73表表4-4所示。所示。表表4.4 常用转义字符常用转义字符转义转义字符字符含含 义义ASCII码码 0空字符(空字符(null)00H n换换行符(行符(LF)0AH r回回车车符(符(CR)0DH t水平制表符(水平制表符(HT)09H b退格符(退格符(BS)08H f换页换页符(符(FF)0CH 单单引号引号27H”双引号双引号22H 反斜杠反斜杠5CH(4)字符串型常量)
23、字符串型常量u字符串型常量由字符串型常量由双引号双引号“”括起的字符组成。括起的字符组成。如如“D”、“1234”、“ABCD”等。等。u字符串常量与字符常量是不一样的,一个字符字符串常量与字符常量是不一样的,一个字符常量在计算机内只用一个字节存放,而一个字常量在计算机内只用一个字节存放,而一个字符串常量在内存中存放时不仅双引号内的字符符串常量在内存中存放时不仅双引号内的字符一个占一个字节,而且系统会自动的在后面加一个占一个字节,而且系统会自动的在后面加一个转义字符一个转义字符“0”作为字符串结束符。因此作为字符串结束符。因此不要将字符常量和字符串常量混淆,如字符常不要将字符常量和字符串常量混
24、淆,如字符常量量A和字符串常量和字符串常量“A”是不一样的。是不一样的。2、变量、变量 n在在C51中,变量在使用前必须对变量进行中,变量在使用前必须对变量进行定义,指出变量的数据类型和存储模式。定义,指出变量的数据类型和存储模式。以便编译系统为它分配相应的存储单元。以便编译系统为它分配相应的存储单元。定义的格式如下:定义的格式如下:存储种类存储种类 数据类型数据类型 存储器类型存储器类型 变量名表变量名表(1)存储种类)存储种类n存储种类是指变量在程序执行过程中的作用范存储种类是指变量在程序执行过程中的作用范围。围。nC51变量的存储种类有四种,分别是自动变量的存储种类有四种,分别是自动(a
25、uto)、外部、外部(extern)、静态、静态(static)和寄存和寄存器器(register)。n如果省略存储种类,则该变量默认为自动如果省略存储种类,则该变量默认为自动(auto)变量。变量。(2)数据类型说明符)数据类型说明符 数据类型说明符:指明变量的数据类型,指明变量在存储器中占用的字节数。可以是基本数据类型说明符,也可以是组合数据类型说明符,还可以是用typedef或#define定义的类型别名。在C51中,为了增加程序的可读性,允许用户为系统固有的数据类型说明符用typedef或#define起别名,格式如下:typedef c51固有的数据类型说明符固有的数据类型说明符 别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完美 课件 资料 单片机 _4
限制150内