课程的基本要求

上传人:第*** 文档编号:98692563 上传时间:2019-09-12 格式:PPT 页数:112 大小:748.50KB
返回 下载 相关 举报
课程的基本要求_第1页
第1页 / 共112页
课程的基本要求_第2页
第2页 / 共112页
课程的基本要求_第3页
第3页 / 共112页
课程的基本要求_第4页
第4页 / 共112页
课程的基本要求_第5页
第5页 / 共112页
点击查看更多>>
资源描述

《课程的基本要求》由会员分享,可在线阅读,更多相关《课程的基本要求(112页珍藏版)》请在金锄头文库上搜索。

1、课程的基本要求,通过本课程的学习,应该 掌握C51的程序设计语言; 掌握8051的中断、定时器/定位器、 串行通信等内部资源的C编程方法; 正确理解单片机的C语言模块化设计方法; 了解8051外部扩展资源的C程序设计方法。,单片机的C语言和程序设计,6.2 C语言与MCS-51单片机,6.3 C51运算符、表达式及其规则,6.4 C51数据与运算,6.5 C51函数,6.6 库函数简介,6.7 8051内部资源的C51编程,6.1 概述,6.1 单片机的C语言和程序设计,对于8051及其兼容单片机,目前有四种语言支持:汇编语言、BASIC语言、PL/M语言和C语言。,C语言是一种编译型程序设计

2、语言,它兼顾了各种高级语言的特点,并具备汇编语言的功能。,与汇编语言相比,C语言有很多的优点: 不要求了解单片机的指令系统,仅要求对8051的存储器结构有初步了解; 寄存器分配,不同存储器的寻址及数据类型等细节可由编译器管理; 程序有规范的结构; 函数库提供很多的标准程序。,单片机的C语言和标准C语言的比较,C51与标准的C语言定义的库函数不同. C51中的数据类型和标准C的数据类型也有一定的区别. C51变量与标准C中变量的存储模式不一样 . C51与标准C的输入/输出处理不一样. C51与标准C语言在函数使用方面有一定的区别.,学习重点: 学习C51程序设计,重点掌握标准C语言和C51的区

3、别. 主要内容: C51的数据类型和存储类型、 基本运算、构造数据类型、 函数以及程序设计中的其他一些问题等内容.,6.2 C语言与MCS-51单片机,6.2.1 C语言编译器与程序开发过程,6.2.2 C51程序结构,全局变量说明 /*可被本程序的各函数引用*/ 函数1说明 函数n说明 主函数main() 局部变量说明 *只能在本函数内引用* 执行语句(包括函数调用语句)(形式参数表) 函数1(形式参数说明) 局部变量说明 *只能在本函数内引用* 执行语句(包括调用其他函数语句)(形式参数表) 函数n(形式参数说明) 局部变量说明 执行语句 ,例6.1 程序如下: # include # i

4、nclude # define CON8279 XBYTE OX6EFF # define uchar unsigned char void INIT79(); /*8279初始化*/ void main() uchar xdata *p; uchar code TAB = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 /* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 */ INIT79(); P= ,注释部份 /*/ 这部分内容不会 被编译,也不被执行,编译预处理 程序编译、执行前系统 自动进行的特殊处理 特点: 以#开头

5、结束处无分号,#define CON8279 XBYTE 0x6EFF #define 宏定义命令 CON8279 符号常量 0x6EFF 宏体(可以是一个表达式,如3+4) 作用:用简单符号代表宏体部份内容 意义:直观/多次使用/便于修改 注意: #define 可出现在程序的任一位置(作用范围:由此行到程序末尾) 宏定义不是C语句,不必在行末加分号,否则会连分号一起置换。,#include 标准方式 只按标准方式(系统存放C库函数头文件所在目录) 查找所要包含的文件 对CX51,默认只在C51include目录下查找 #include “ ” 先在源文件所在目录找指定头文件, 若无再按标准

6、方式找(更保险),小 结 CX51语言程序的基本特点,CX51语言是一种函数式语言,其程序基本组成是函数 每个CX51程序必须有一个、也只能有一个主函数main 不管主函数在程序中的位置如何,程序执行总是从主函数开始 所有变量必须先定义(规定数据类型)后使用 每个语句必须用分号“;”结束(注意是“每个语句”而不“每行语句”) 编译预处理命令不是语句(行末不能用分号结束) Cx51语言本身没有输入/输出语句,其输入/输出功能须通过调用标准函数通过串行口实现 使用系统提供的标准库函数或其他文件提供的现成函数时,必须使用“文件包含”。,6.3 C51运算符、表达式及其规则,6.3.1 算术运算符及表

7、达式,1. 基本的算术运算符,C51语言的算术运算符一共有5种: + 加法运算符 减法运算符 * 乘法运算符 / 除法运算符 % 模(取余数)运算符,例: 14 % 4 = 0x02,2. 自增(+ +),自减()运算符,(1)当+ + j(或j)时,是先将变量j的值加1 (或减小1),再取变量值; (2)当j + +(或j)时,是先取变量值, 再把变量的值加1(或减1),例如:int i, j, k; i = 4; j = + + i;/ * j 值为5,i 值也为5*/ i = 5; k = i + +;/* k值为5,i 值为6*/,3. 算术表达式及优先级和结合性,单目运算符优先级高于

8、双目运算符,双目运算符优先级高于双目赋值运算符。,6.3.2 关系运算符、关系表达式,C51语言共有6种关系运算符: (大于) = (大于等于) = = (等于) ! = (不等于),6.3.3 逻辑运算符及表达式,C51提供三种以逻辑量为操作数的逻辑运算符: ! 逻辑非 & 逻辑与 | 逻辑或,例如:若a = 3,b = 4则 !a = 0 因为a = 3为非0数,即为逻辑1; a | b = 1 因为a、b为非0数,是逻辑1; a&b = 1因为a、b为非0数,是逻辑1; !a&b = 0 因为!a优先于&。,6.3.4 位运算符及表达式,C51语言提供6种位运算符, 所有的位运算符都是针

9、对整型操作数,而不能针对实型数据。 则:a&b = 2.) | 按位或 按位异或 按位取反 右移 左移,635 赋值运算符,赋值运算符 即是把运算符右侧操作数赋给左侧的操作数。 即变量名 = 表达式,当“=”两侧类型不一致时,系统自动将右边表达式的值转换成左侧变量的类型,再赋给该变量,具体规则如下: 当整型变量 = 实型数据时,实数的小数部分被舍去; 当实型变量 = 整型数据时,变量中的数值为浮点形式; 当短字节整型变量 = 长字节整型数据时, 则长字节整型数据的低位数据赋给短字节整型变量; 当长字节整型变量 = 短字节整型数据时, 则短字节整型数据赋给长字节整型变量的低位数据,而长字节整型变

10、量的每一位高位数据被赋给短字节整型数据的符号值。,赋值语句,作用:使变量获得具体的运算值。 语句形式 变量名=表达式(常量、变量、函数、算式及其混合); lower =0; /*变量lower赋初值*/ s=sin(x); /*求sin(x)*/ 注意:函数sin( )在头文件math.h中定义。 所以程序开头处必须加上一行所谓“文件包含”: #include 变量赋初值亦可在数据类型定义时进行: int lower =0, x; 把变量声明语句与赋值结合在一起的语句,术语上称为 “初始化语句”。,2. 复合赋值运算符,凡是有两个运算对象的运算符都可以与赋值运算符“=”一起组成复合运算符。 复

11、合赋值运算符有以下10种:,+=,- =,*=,/=,%=,=,&=,|=,=。 例如:a+=b 等价于 a = (a+b) a=4 等价于 a = (a4),64 C51数据与运算,641 数据类型,80C51单片机采用哈佛结构,RAM与ROM分开,SFR与片内RAM统一编址。 KEIL CX51编译器将变量、常量定义成不同的存储类型(data, bdata, idata, pdata, xdata, code)的方法,将它们定位在不同的存储区中。 8051的变量的存储类型定义为: 存储类别 变量类型 存储类型 变量名 其中存储种类与存储类型为可选项。 存储类别主要有四种:自动(auto)(

12、默认的存储种类)、外部(extern)、静态(static)和寄存器(register)。 存储类型主要有:data,bdata,idata,pdata,xdata,code等。,642 变量及其数据类型,1变量的说明,变量的格式如下: 存储类说明 类型说明符修饰符标识符=初值 其中 部分可有可无。,(1)类型说明符 (char,int,long,),(2)标识符,(3)变量初始化,(4)存储类说明符,aauto(自动存储类):堆栈 (默认存储类),bregister(寄存器存储类):,cextern (外部存储器类):,dstatic(静态存储类):,(5)修饰符 由于8051存储空间的多样

13、性,C51提供了修饰存储空间 类型的修饰符, 用于指明定义的变量应分配在什么存储空间中。,C51存储空间类型的修饰符有 data ,idata,pdata,xdata,code,bdata,,无修饰符时,取决于编译时选用的存储方式,存储类别 决定变量的“寿命”(何时“生”,何时“灭”) 一个完整的变量说明格式如下: 存储类别 数据类型 存储类型 变量名 如 static int data x , y ; C51程序的存储类别有:, register型(寄存器型) 存取速度快,一般只允许23个,且限于char型和int型,通常用于循环变量。 auto型(自动变量型) 优点同一内存区可被不同变量反

14、复使用。 以上两种变量均属于“动态存储型”,即调用函数时才为这些变量分配单元,函数调用结束其值自动消失。 static型(静态变量型) 程序执行开始至结束,始终占用该存储空间 extern型(外部变量型) 同上,其值可供其他源文件使用 以上两种均属于“静态存储”性质,即从变量定义处开始,在整个程序执行期间其值都存在 。,从变量的存在时间来看,可分为静态存储变量和动态存储变量。 静态存储变量是指该变量在程序运行期间其存储空间不变,全局变量为静态存储变量; 动态存储变量是指该变量的存储空间不确定,在程序运行期间需要动态地为该变量分配存储空间,局部变量为动态变量。,变量的生存期 静态存储变量:与程序

15、“共存亡” 动态存储变量:与函数“共存亡” 寄存器变量:同动态变量,未说明存储类别时, 函数内定义的变量默认为auto型 函数外定义的变量默认为extern型。,2变量的数据类型,对于Franklin C51编译器, 只有bit和Unsigned char两种数据类型可以直接支持机器指令, 为了提高单片机的数据处理速度,在编制C51程序时一定要对变量和数据类型进行慎重的选择。,(1)位变量(bit),bit是C51特有的数据类型, 其值为: 1(ture)或0(false)。 bit类型可用的修饰符有bdata,data,idata, 但最好是bdata修饰符 例如:bdata bit mark1 data bit mark2 idata bit mark3,(2)字符变量(char),字符变量的长度为一个字节, 标识符为char (-128127)或 unsigned char( 0-255 ),,(3)整型变量(int),整型变量(int)的长度为二个字节, 标识符为int,unsigned int,,整型变量值0x5678,(4)长整型变量(long int) 长整型变量的长度为四个字节, 标识符为unsigned long, long。,(5)浮点型变量 (float) 浮点型变量长度为四个字节, C51的浮点变量数据类型格

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号