C语言篇(扩展)01V.ppt_第1页
C语言篇(扩展)01V.ppt_第2页
C语言篇(扩展)01V.ppt_第3页
C语言篇(扩展)01V.ppt_第4页
C语言篇(扩展)01V.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理与应用,2019/7/21,第3部分 C语言篇(扩展) 1,学习内容和目标 开发MCU系统的基本平台 必须注意的事项 软件操作指导 注意: 思维一定要开阔一些,多问为什么。 允许不用举手,并随时打断,向我提任何和课程相关的问题。,2019/7/21,2,本节学习目标,1.1 引言 Keil C51 软件是众多单片机应用开发的优秀软件之一 集编辑,编译,仿真于一体 支持汇编、PLM 语言和C 语言的程序设计 界面友好,易学易用。,2019/7/21,3,1 Keil软件的基本使用,多看HELP,学习使用菜单下的各个内容:,2019/7/21,4,1.2 Keil C51的编辑界面,流程: 建立工程; 选择单片机型号(考虑非单片机怎么办) 建立程序文件; 根据目的编写程序; 调试程序; 编译程序:理解编译器 烧写程序到目标机:烧写方法必须根据单片机确定; 请到百度或google上搜索keil C的使用方法 自己动手是熟悉编程/编译平台的不二法门。,2019/7/21,5,1.3 Keil编程的主要流程,2.1 引言 请带着以下问题理解将来讲述的内容() : C语言的程序结构是怎样的? C语言的语法是怎样的,有何特点? C程序中从表达内容上可以怎样分? 程序即逻辑,那么C如何表现逻辑的? 需要注意C程序的编写方式么? 常说的“模块”是怎样的?有什么具体要求么? 对于MCU而言,编程是怎样的?,2019/7/21,6,2 C语言总略,C语言的发展过程如下: 1960年:ALGOL 1963年:CPL 1967年:BCPL 1970年:B 1972年:C C语言是目前世界上流行最广的通用程序设计语言。 介乎于高级语言和汇编语言之间,兼有两者的优点。 引用结构化程序结构,便于软件工程化。 语言简洁,且表达能力强,使用灵活,易于学习和应用。 可移植性好 。,2019/7/21,7,2.2 C语言的发展及其特点,考虑: 这种结构的特点是什么? 各个区域中如何实现的? 具体用法是怎样的? 如何更好的实现调用?,2019/7/21,8,2.3 C程序的结构,2019/7/21,9,2.4 C语言的几个知识点(),3.1 标识符 标识符:在高级语言程序中由用户(即程序员)或编译程序(有时称系统)定义的常量、变量、自定义的数据类型、函数、过程和程序等的名字。 标识符的组成规则:由字母(AZ,az)、下划线_和数字(09)组成,其第一个字母或下划线_。字母要区分大小写。 标识符的有效长度:能够被编译程序识别的标识符的字符的数目称为标识符的有效长度。标准C规定标识符的有效长度为31。,2019/7/21,10,3基本语法单位(复习)(),关键字由固定的小写字母组成,是系统预定的名字,用于表示C语言的语句,数据类型、存储类型或运算符。关键字又称为保留字 。 标准C定义的32个关键字如下:,2019/7/21,11,3.2关键字,分隔符:包括空格符、制表符、换行符、换页符及注释符。程序中两个相邻的标识符、关键字和常量之间必须用分隔符分开(通常用空格符)。 常量:程序中其数值不发生变化的量。C语言中常用的的常量有三类:数,字符和字符串 。此外,C语言中还经常使用两种表现形式不同的常量:换码序列和符号常量。常量的类型是由常量的文字自身隐含说明的 。 请注意:一个优秀的编程人员会灵活和有效的使用常量。,2019/7/21,12,3.3 分隔符与常量,4.1 如何定义(说明)各种类型的变量 在程序执行过程中,值可以改变的量称为变量。变量定义的格式(定义一个变量的语句这样写): 存储类型 数据类型 变量名 = 初值; 如上例中的 int i ; 即定义了一个int 型(整型)变量i;也可以一条语句定义多个变量,格式为: 存储类型 数据类型 变量名表; 如: int i, j, k; i,j,k是变量名, int 是数据类型。,2019/7/21,13,4 数据类型和变量定义(复习)(),请务必掌握各个数据类型的定义方法,并明确在何种条件使用。 变量定义与存储类型相关。,2019/7/21,14,4.2 数据类型,原则1:明确公共变量的含义、作用、取值范围及公共变量间的关系。(说明:在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。) 原则2:使用严格形式定义的、可移植的数据类型,尽量不要使用与具体硬件或软件环境关系密切的变量。 原则3:在变量中务必说明该变量的数据类型:例如一个整型变量,可以在当前添加字母i描述。下表是我常用的前缀。 原则4:望文生义 总之:书写规范是为了便于交流。,2019/7/21,15,4.3 定义数据类型的规范,几个新的定义:bit、sbit、sfr和sfr16是为访问MCS-51硬件中的内部RAM中的位、SRF中的位以及8位SRF和16位SFR(如DPTR)所特有的类型,它们不是ANSI C的一部分,不能用指针对它们进行访问,也不能定义包含这些类型元素的数组、结构体、联合体等。 与存储器结构相关,可以指定存储区域:4个存储区 例:char data varl; unsigned long xdata array100; float idata x,y,z;,2019/7/21,16,4.4 MSC-51的变量定义,特殊功能寄存器的声明: sfr 特殊功能寄存器名称=地址常数 sfr P0=0x80; sfr P1=0x90; 定义特殊功能寄存器中的地址必须在0x800xff范围内。 定义特殊功能寄存器,必须放在函数外面作为全局变量。 用sfr或sfr16每次只能定义一个特殊功能寄存器。 像sbit一样,用sfr或sfr16定义的是绝对定位的变量(因为名字是与确定地址对应的),具有特定的意义,在应用时不能像一般变量那样随便使用。 16bit特殊功能寄存器的声明: sfr16 特殊功能寄存器名称=地址常数 sfr16 T2=0xcc;,2019/7/21,17,4.5 MSC-51中寄存器及接口定义,特殊功能寄存器中特定位的声明: sbit 位变量名特殊功能寄存器名位的位置 sbit 位变量名字节地址位的位置 sbit 位变量名位地址 用sbit定义的位变量,必须能够按位操作,而不能够对无位操作功能的位定义位变量。 用sbit定义位变量,必须放在函数外面作为全局位变量,而不能在函数内部定义。 用sbit每次只能定义一个位变量。 对其它模块定义的位变量(bit型或 sbit型)的引用声明,都使用bit。 用sbit定义的是一种绝对定位的位变量(因为名字是与确定位地址对应的),具有特定的意义,在应用时不能像bit型位变量那样随便使用。,2019/7/21,18,4.5 MSC-51中寄存器及接口定义(续1),对存储器的访问: CBYTE (访问code区字符型) CWORD (访问code区int型) DBYTE (访问data区字符型) DWORD (访问data区int型) PBYTE (访问pdata或I/O区字符型) PWORD (访问pdata区int型) XBYTE (访问xdata或I/O区字符型) XWORD (访问xdata区int型) 这些宏定义原型放在absacc.h文件中,使用时需要用预处理命令把该头文件包含到文件中,形式为:#include 。 #include DBYTE0x30=48; /给片内RAM送数据 XBYTE0x0002=0x36; /给片外RAM送数据 dis_buf0=CBYTETABLE+5; /从CODE区读数据,2019/7/21,19,4.5 MSC-51中寄存器及接口定义(续2),对外部I/O接口的访问: MCS-51单片机I/O接口与外部数据存储区是统一编址的,因此对I/O接口地址可用XBYTE或PBYTE。 例如:XBYTE0x7fff0x30;将30H输出到地址为7FFFH的接口。 几点说明: 使用typedef方便移植:typedef int integer; sbit用于定义位变量的名字和地址,地址是确定的且不用编译器分配。定义范围为整个位寻址空间。 bit用于定义位变量的名字,编译器会对其分配地址。位变量分配在内部RAM的位寻址区,位地址范围为00H7FH。,2019/7/21,20,4.5 MSC-51中寄存器及接口定义(续3),5.1 C运算符 算术运算符有5个: 算术运算时的自动类型转换可描述为:双目运算符的两个运算量中,值域较窄的类型向值域较宽的类型转换。“值域”就是类型所能表示的值的最大范围。,2019/7/21,21,5 C运算符及其使用,表达式中的有符号和无符号字符以及短整型一律被转换为整型,如果int类型能表示原来类型的值,则转换成int类型,否则转换成unsigned类型。 当一个运算量为long类型,另一个为unsigned类型时,如果long能表示unsigned的全部值,则将unsigned转换成long,否则将两个运算量都转换为unsigned long。 赋值转换将右值表达式结果的类型转成左值表达式的数据类型。赋值转换具有强制性,它不受算术转换规则的约束,转换结果的类型完全由左子表达式的类型决定。 强制类型转换是靠强制类型转换运算符来实现数据类型转换的,因此强制类型转换也叫做显式转换 。它的作用是将表达式转换成“类型名”所指定的类型。表达式形式为: (类型名) 表达式,2019/7/21,22,5.2 C运算符注意事项,C语言中的关系运算符包括: =(大于或等于) (大于) != (不等于) 关系运算符用来比较两个运算量之间的关系。用关系运算符将前、后两个运算量连接起来的式子称为“关系表达式”,这两个运算量可以是任意表达式。当关系表达式成立时,表达式的结果为整数1,否则为整数0 。 C语言中的逻辑运算符包括: & (逻辑与) | (逻辑或) ! (逻辑非),2019/7/21,23,5.3 关系运算符和逻辑运算符,重要内容:,2019/7/21,24,5.4 位运算符,自增自减运算符: 赋值运算符与赋值表达式: 复合赋值运算:(不推荐) 例如: i += j 等价于 i = i + j x *= y - 5 等价于 x = x * (y-5) m = 2 等价于 m = m 2 条件运算符: (不推荐) 它的格式是: 表达式1 ? 表达式2 : 表达式3 它的操作过程是:判断表达式1的值,如果为非0值,则求解表达式2的值,并将其作为该条件表达式的值;如果表达式1

温馨提示

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

评论

0/150

提交评论