《第7章-单片机的C语言程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第7章-单片机的C语言程序设计课件.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计教学目的教学目的教学目的教学目的q熟悉熟悉C51的程序结构的程序结构q掌握掌握C51的数据类型、存储类型及函数等概念的数据类型、存储类型及函数等概念q了解了解C51与标准与标准C的不同之处的不同之处q熟悉熟悉C51的开发工具的开发工具Keil C5127.1 7.1 5151的程序结构的程序结构的程序结构的程序结构 qq与汇编语言相比,与汇编语言相比,与汇编语言相比,与汇编语言
2、相比,C51C51在功能、结构性、可读性、在功能、结构性、可读性、在功能、结构性、可读性、在功能、结构性、可读性、可维护性及可移植性上有明显的优势可维护性及可移植性上有明显的优势可维护性及可移植性上有明显的优势可维护性及可移植性上有明显的优势 。qqC51C51程序结构与一般程序结构与一般程序结构与一般程序结构与一般C C语言没有差别。语言没有差别。语言没有差别。语言没有差别。邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的特点:的特点:q1C51在吸取了汇编语言精华的基础上又有所改进 q2C51继承和发扬
3、了高级语言的长处 q3C51的可移植性好 q4生成的代码质量高,在代码效率方面可以和汇编语言相媲美 5151的程序结构的程序结构的程序结构的程序结构3.15151的程序结构的程序结构 4邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51程序的结构程序的结构q一个C51程序大体上是一个函数定义的集合,在这个集合中仅有一个名为main的函数(主函数)。q函数定义由类型、函数名、参数表和函数体四部分组成。q函数的一般格式如下:类型 函数名(参数表)参数说明;数据说明部分;执行语句部分;5151的程序结构的程序结构的程
4、序结构的程序结构3.15151的程序结构的程序结构 5邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q编写编写C51 程序时应注意以下几点:程序时应注意以下几点:q1.一个C51程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何。q2C语言程序的书写格式十分自由。一条语句可以写成一行,也可以写成几行,还可以在一行内写多条语句。但每条语句都必须以分号“;”作为结束符。q3C语言对大小字母敏感,C语言编译器编译程序时对同一个字母的大小写作为不同的变量来处理。q4可以用/*/对C程序中的任何部分作
5、注释。程序加上必要的注释,可增加程序的可读性。5151的程序结构的程序结构的程序结构的程序结构3.15151的程序结构的程序结构 67.2 7.2 数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式 qq数据类型数据类型数据类型数据类型qq常量和变量常量和变量常量和变量常量和变量qqC51C51的存储类型及存储模式的存储类型及存储模式的存储类型及存储模式的存储类型及存储模式qq特殊功能寄存器、并行接口及位变量的定义特殊功能寄存器、并行接口及位变量的定义特殊功能寄存器、并行接口及位变量的定义特殊功能寄存器、并行接口及位变量的定义邵阳学
6、院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q数据类型数据类型 可分为基本数据类型和构造数据类型。构造数据类型由基本数据类型构造而成。qC51的数据类型分类如下所示:数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式3.2 数据类型、存储类型及存储模式数据类型、存储类型及存储模式 8邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计C51C51编译器能识别的数据类型编译器能识别的数据
7、类型数 据 类 型长 度大 小unsigned char1B0255char1B-128+127unsigned int2B065535int2B-32768+32767unsigned long4B04294967295long4B-2147483648+2147483647float4B1.175494E-383.402823E+38*1B3B对象的地址bit位0或1sfr1B0255sfr162B065535sbit位0或19邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q常量和变量常量和变量 C语言中的数据
8、有常量、变量之分。常量在程序运行的过程中,其值不能改变的量称为常量。C语言支持4种常量:整数常量、浮点数常量、枚举量常量、字符常量。变量在程序执行过程中,其值能不断变化的量。使用一个变量之前必须进行定义,用一个标识符作为变量名并指出它的数据类型和存储类型,以便编译系统为它分配相应的存储单元。数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式3.2 数据类型、存储类型及存储模式数据类型、存储类型及存储模式 10邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计
9、 C51中变量定义的格式如下:中变量定义的格式如下:数据类型数据类型 存储器类型存储器类型 变量名表变量名表 其中,其中,存储器类型存储器类型是可选项。是可选项。例如:例如:char data var;11邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的存储类型及存储模式的存储类型及存储模式 51系列单片机的存储器采用哈佛结构。即其程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式。以AT89C52为例,其具体结构如图所示。数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存
10、储模式数据类型、存储类型及存储模式3.2 数据类型、存储类型及存储模式数据类型、存储类型及存储模式 12邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的存储类型及存储模式的存储类型及存储模式 C51在定义变量、常量时,将通过不同的存储类型将它们定位在不同的存储区中。存储类型与AT89C51单片机实际存储空间的对应关系如表所列。数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式3.2 数据类型、存储类型及存储模式数据类型、存储类型及存储模式 13邵
11、阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计存储器类型描 述data直接寻址的片内数据存储器低128B,访问速度最快bdata可位寻址的片内数据存储器(地址20H2FH共16B)允许位和字节混合访问idata间接寻址片内数据存储器256B。允许访问片内全部地址pdata分页寻址片外数据存储器256B,使用指令MOVX Rn访问,需要2个指令周期xdata寻址片外数据存储器64KB,使用指令MOVX DPTR访问code寻址程序存储器区64KB,使用指令MOVC A+DPTR访问14邵阳学院邵阳学院邵阳学院邵阳学院7
12、 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计存储模式存储模式 C51编译器允许采用三种存储模式:小编译模式SMALL、紧凑编译模式COMPACT、大编译模式LARGE。15邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计 例如,如果我们用例如,如果我们用char char bianbian语句定义一个字符型变量,变量名为语句定义一个字符型变量,变量名为bianbian。在使用在使用SMALLSMALL存储模式下,变量存储模式下,变量bianbian被放置在片内被放置在片
13、内RAMRAM存储区,即变量存储区,即变量bianbian被自动定义为被自动定义为DATADATA存储类型;存储类型;在使用在使用COMPACTCOMPACT存储模式下,变量存储模式下,变量bianbian则被放置在片外则被放置在片外RAMRAM存储区的某存储区的某一页,即变量一页,即变量bianbian被自动定义为被自动定义为PDATAPDATA存储类型;存储类型;在使用在使用LARGELARGE存储模式下,变量存储模式下,变量bianbian被放置在片外被放置在片外RAMRAM存储区的存储区的6464KBKB空空间,即变量间,即变量bianbian被自动定义为被自动定义为XDATAXDAT
14、A存储类型。存储类型。16邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q特殊功能寄存器的定义特殊功能寄存器的定义 AT89C52单片机中除了程序计数器PC和4组通用寄存器组(R0R7)之外,其他所有寄存器均称为特殊功能寄存器(SFR),它们分散在片内RAM区的高128B中,它们只能采用直接寻址方式访问。为了能直接访问这些SFR,C51扩充了类型说明符sfr、sfr16、sbit。利用它们可在C语言源程序中直接对AT89C52单片机的特殊功能寄存器进行定义。定义方法如下:sfr 特殊功能寄存器名=地址常数sfr16
15、特殊功能寄存器名=地址常数例如:sfr P0=0 x80;sfr16 DPTR=0 x82;/即DPTR低8位地址为0 x82,高8位为0 x83 数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式3.2 数据类型、存储类型及存储模式数据类型、存储类型及存储模式 17邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q并行接口的定义并行接口的定义 AT89C52单片机内部有4个8位并行口,即SFR中的P0-P3。这些内部并行口既可进行字节寻址,也可进行位寻址
16、。数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式3.2 数据类型、存储类型及存储模式数据类型、存储类型及存储模式 sfr P0=0 x80;/*定义单片机P0口,片内SFR,字节地址为080H*/sfr P1=0 x90;/*定义单片机P1口,片内SFR,字节地址为090H*/sfr P2=0 xA0;/*定义单片机P2口,片内SFR,字节地址为0A0H*/sfr P3=0 xB0;/*定义单片机P3口,片内SFR,字节地址为0B0H*/18邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设
17、计语言程序设计语言程序设计语言程序设计q位变量的定义位变量的定义q1.定义位变量的语法如下:bit check_bit;/*将变量check_bit定义为位变量*/q2.函数可包含类型为bit的参数,也可将其作为返回值。q3.可位寻址对象的定义和访问(分两步)例如:bdata char temp;/先把temp 定义为char类型 sbit temp3=temp3;/再把temp3为temp的第3位 数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式数据类型、存储类型及存储模式3.2 数据类型、存储类型及存储模式数据类型、存储类型及存储模式 197.3 7.3
18、 运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制 qqC51C51的运算符的运算符的运算符的运算符qqC51C51的函数的函数的函数的函数qqC51C51的流程控制语句的流程控制语句的流程控制语句的流程控制语句邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的运算符的运算符q1.C51的赋值运算符和算术运算符(+、-、*、/、%)q2.C51的关系运算符(、=、=、=、!=)q3.C51逻辑运算符(|、&、!)q4.C51位操作运算符(、|、&、)q5
19、.自增减运算q6.复合运算符(10种)运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 21邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的函数的函数 函数是C语言中的一种基本模块,一个C语言程序就是由若干个模块化的函数所构成的。q 1.函数的分类从用户使用角度划分,函数分为标准库函数和用户自定义函数。用户自定义函数是指用户根据任务自己编写的函数。从函数定义的形式上可划分为三种形式:无参数函数、
20、有参数函数和空函数。运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 22邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的函数的函数q 2.函数的定义无参数函数的定义返回值类型 函数名()函数体语句有参数函数的定义返回值类型 函数名(形式参数列表)形式参数类型说明 函数体语句空函数的定义返回值类型 函数名()运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函
21、数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 23邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的函数的函数q 3.函数的参数和返回值形式参数和实际参数形参:定义函数时,位于函数名后面圆括号中的变量名称为“形式参数”。实参:调用函数时,主调用函数名后面括号中的表达式称为“实际参数”。参数的返回值通过函数调用使主调用函数获得一个确定的值,这就是函数的返回值。函数的返回值是通过return语句获得的。运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算
22、符、函数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 24邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的函数的函数q 4.函数的调用调用的形式为:函数名(实际参数表列);函数的调用方式有三种:1.函数调用语句:即把被调用函数名作为调用函数的一个语句,如func()2.被调用函数作为表达式的运算对象:如x=2*func(a,b)3.被调用函数作为另一个函数的实际参数:如x=min(a,func(a,b);运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控
23、制运算符、函数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 25邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的函数的函数q 5.对被调用函数的说明在调用一个函数之前,应对该函数的类型进行说明,即“先说明,后调用”。被调用函数必须是已经存在的函数(库函数或用户自定义函数)。q6.函数变量的存储方式函数变量按其有效作用范围可划分为局部变量和全局变量。变量按其存储方式可分为四种存储种类,分别是自动变量(auto)、外部变量(extern)、静态变量(static)和寄存器变量(reg
24、ister),这些存储种类与变量的关系为:内部变量可定义为自动变量、静态变量或寄存器变量,外部变量可定义为全局变量或静态变量。运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 26邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的流程控制语句的流程控制语句 C语言有三种基本结构:顺序结构、选择结构与循环结构。运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数
25、及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 顺序结构流程图顺序结构流程图 27邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的流程控制语句的流程控制语句运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 选择结构流程图选择结构流程图 其中选择结构又派生出串行多分支结构和并行多分支结构,28邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语
26、言程序设计语言程序设计语言程序设计语言程序设计qC51的流程控制语句的流程控制语句运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 循环结构流程图循环结构流程图 循环结构又分为“while”型循环结构和“do while”型循环结构。29邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51的流程控制语句的流程控制语句 q1.1.选择语句选择语句ififC语言提供了语言提供了3种形式的种形式的if语句:
27、语句:(1)if(条件表达式条件表达式)语句;语句;(2)if(条件表达式条件表达式)语句语句1;else 语句语句2;(3)if(条件表达式条件表达式1)语句语句1;else if(条件表达式条件表达式2)语句语句2;else if(条件表达式条件表达式3)语句语句3;else if(条件表达式条件表达式m)语句语句m;else 语句语句n;运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制运算符、函数及程序流程控制3.3运算符、函数及程序流程控制运算符、函数及程序流程控制 30邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序
28、设计语言程序设计语言程序设计语言程序设计【例例7-17-1】if-else ifif-else if语句举例。语句举例。intint abcabc;char xyz;char xyz;if (if (abcabc=1)=1)xyz=0 x00;xyz=0 x00;else else if(abcif(abc=2)=2)xyz=0 x20;xyz=0 x20;else else if(abcif(abc=3)联合元素C51C51的构造数据类型的构造数据类型的构造数据类型的构造数据类型3.4 C51C51的构造数据类型的构造数据类型38邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机
29、的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q枚举枚举 枚举数据类型是一个有名字的某些整数型常量的集合。这些整数型常量是该类型变量可取的所有的合法值。枚举定义应当列出该类型变量的可取值。定义枚举类型变量的一般格式为:enum 枚举名 枚举值表列 变量表列;enum weekday 1,2,3,4,5,6,7 x1,x2;C51C51的构造数据类型的构造数据类型的构造数据类型的构造数据类型3.4 C51C51的构造数据类型的构造数据类型39邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q指针指针
30、指针是C语言的一个重要概念,也是特色之一。使用指针可以有效地表示复杂的数据结构,直接处理内存地址,而且可以更有效地使用数组。q指针的概念 变量的指针就是变量的地址 q指针变量的定义指针变量定义的一般形式如下:类型标示符*指针变量名q指针变量的引用 通过举例说明。应注意的是:“*”在指针变量定义时和在指针运算时所代表的含义是不同的。qC51的指针类型C51C51的构造数据类型的构造数据类型的构造数据类型的构造数据类型3.4 C51C51的构造数据类型的构造数据类型40邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q指
31、针指针 qC51的指针类型C51编译器支持“基于存储器”的指针和“一般”指针两种类型。基于存储器的指针:在编译时一般被“行内”编码,无须库调用。即指针所指的对象所在的存储空间由定义时C源代码中的存储类型决定。该指针只占用1-2个字节。一般指针:包含3个字节。其中2个字节偏移量(即指针的地址)和1个字节存储器类型。为了表示这种指针必须用长整数来定义存储类型。C51C51的构造数据类型的构造数据类型的构造数据类型的构造数据类型3.4 C51C51的构造数据类型的构造数据类型41邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序
32、设计q指针指针 q基于存储器的指针 该指针不但指出了指针本身的存储类型(缺省时由编译时的存储模式决定),而且还明确的指出了指针所指向的对象变量的存储类型(不能缺省)。基于存储器的指针长度短,速度快,但因为它所指的对象变量有确定的存储器空间,所以这类指针缺乏兼容性。q一般指针定义指针时若未明确指明指针所指对象变量的存储类型,则该指针为一般指针。定义一般指针的方法与标准C语言相同。C51C51的构造数据类型的构造数据类型的构造数据类型的构造数据类型3.4 C51C51的构造数据类型的构造数据类型42邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设
33、计语言程序设计语言程序设计q指针指针 对比一般指针和基于存储器的指针,可得出以下结论:q基于存储器的指针长度短,运行速度快。而一般指针由于其所指对象变量的存储器空间位置只有在运行期间才能确定,编译器在编译期间无法优化存储方式,必须生成一般代码以保证能对任意空间的对象进行存取,所以一般指针所产生的代码运行速度较慢。q一般指针可用于存取任何变量而不必考虑变量在AT89C52存储器空间的位置,函数可利用一般指针来存取位于任何存储空间的数据。因此一般指针的兼容性较好。而基于存储器的指针所指的对象有确定的存储器空间,因此缺乏兼容性。C51C51的构造数据类型的构造数据类型的构造数据类型的构造数据类型3.
34、4 C51C51的构造数据类型的构造数据类型437.5 7.5 KeilKeil C51 C51简介简介简介简介qq项目文件的建立、设置与目标文件的获得项目文件的建立、设置与目标文件的获得项目文件的建立、设置与目标文件的获得项目文件的建立、设置与目标文件的获得qq程序的调试程序的调试程序的调试程序的调试邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q项目文件的建立、设置与目标文件的获得项目文件的建立、设置与目标文件的获得q1.启动Vision2并创建一个项目q2.创建新的源文件q3.项目的详细设置q4.编译和链接程
35、序KeilKeil C51 C51简介简介简介简介3.6 KeilKeil C51 C51简介简介45邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q程序的调试程序的调试q1.常用调试命令q2.在线汇编q3.断点设置q4.程序调试窗口存储器窗口观察窗口反汇编窗口串行窗口KeilKeil C51 C51简介简介简介简介3.6 KeilKeil C51 C51简介简介467.6 C517.6 C51实例分析及混合编程实例分析及混合编程实例分析及混合编程实例分析及混合编程qqC51C51实例分析实例分析实例分析实例分析q
36、q混合编程混合编程混合编程混合编程邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计qC51实例分析实例分析 设计一个程序来实现以下功能:设计一个广告灯程序,硬件连线图如下。C51C51实例分析及混合编程实例分析及混合编程实例分析及混合编程实例分析及混合编程3.5 C51C51实例分析及混合编程实例分析及混合编程48邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计q混合编程混合编程q1.参数的传递 在混合语言编程中,关键是入口参数和出口参数的
37、传递。它们必须有完整的约定。典型的规则是:所有参数以内部RAM的固定位置传递给程序。若是传递位,那么它们也必须位于内部可位寻址空间的顺序位中。其顺序和长度必须让调用和被调用程序一致。q2.在C51程序中直接嵌入汇编在C文件中直接嵌入汇编代码可以用下面的方式:#pragma ASM 汇编代码#pragma ENDASM 用此方法可以在C源代码的任意位置嵌入汇编语句。但要注意的是在直接使用形参时要小心,在不同的优化级别下产生的汇编代码有所不同。C51C51实例分析及混合编程实例分析及混合编程实例分析及混合编程实例分析及混合编程3.5 C51C51实例分析及混合编程实例分析及混合编程49邵阳学院邵阳
38、学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计中断服务程序中断服务程序中断服务程序中断服务程序qC51编译器支持在编译器支持在C源程序中直接开发中断程序源程序中直接开发中断程序q函数定义语法如下:函数定义语法如下:返回值返回值 函数名函数名 interrupt n 其中:其中:n的对应关系为的对应关系为 0:外部中断:外部中断0;1:定时器:定时器/计数器计数器0 2:外部中断:外部中断1;3:定时器:定时器/计数器计数器1 4:串行口中断:串行口中断5.2 中断响应过程中断响应过程50邵阳学院邵阳学院邵阳学院邵阳学院7 7 单片机的单片机的单片机的单片机的C C语言程序设计语言程序设计语言程序设计语言程序设计本章小结本章小结本章小结本章小结q熟悉熟悉C51的程序结构的程序结构q掌握掌握C51的数据类型、存储类型及函数等概念的数据类型、存储类型及函数等概念q了解了解C51与标准与标准C的不同之处的不同之处q熟悉熟悉C51的开发工具的开发工具Keil C5151