电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章

52页
  • 卖家[上传人]:E****
  • 文档编号:89503287
  • 上传时间:2019-05-26
  • 文档格式:PPT
  • 文档大小:1.78MB
  • / 52 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第5章 机械工业出版社同名教材 配套电子教案,单片机原理与控制技术,第3版, C语言概述,第5章 C51程序设计,5.1 C51概述,C语言是一种结构化语言,简洁、紧凑,层次清晰,便于按模块化方式编写程序;有丰富的运算符和数据类型,能适应并实现各种复杂的数据处理;能实现位(bit)操作,生成目标代码效率较高,可移植性好,兼有高级语言和低级语言的优点。 因此,C语言应用范围越来越广泛。目前,各种操作系统和单片机,都可以用C语言编程,C语言是一种通用的程序设计语言,在大型、中型、小型和微型计算机上都得到了广泛应用。, Keil C51概述,用于80C51系列单片机编程的C语言,通常称为C51。C51实际上是一个编译系统,种类很多。其中,德国Keil Software公司推出的Keil C51软件应用最为广泛而方便。, C51编程的特点,与80C51汇编语言相比,主要具有以下特点: 编程相对方便。 便于实现各种复杂的运算和程序。 可方便地调用各已有程序模块。 可读性较好。 实时性较差。,5.2 C51数据与运算,5.2.1 数据与数据类型, 数据类型, 数据长度, 标识符,C语言标识符命名规

      2、定: 标识符只能由字母、数字和下划线三种字符组成,且须以字母或下划线开头。 标识符不能与“关键词”同名。关键词是C语言中一种具有固定名称和特定含义的专用标识符,用户不能用它自行定义其他用途。 英文字母区分大小写。即标识符中的英文字母大小写不能通用。 有效长度随编译系统而异,一般多于32个字符,已足够用了。, 常量 :,程序运行过程中,其值不能被改变的量称为常量。, 位型常量(bit) 字符型常量(char) 整型常量(16位int和32位long) 浮点型常量(float) 字符常量 字符串常量 符号常量,5.2.2 变量及其定义方法, 变量概述,变量有两个要素:变量名和变量值。 变量名要求按标识符规则定义; 变量值存储在存储器中。 变量必须先定义,后使用。 程序运行中,通过变量名引用变量值。,80C51单片机主要用于实时控制, 变量一般为8bit无符号格式,16bit较少, 有符号和有小数点的数值计算也很少。 因此,在已知变量长度及变量为正整数的情况下,应尽量采用8bit无符号格式:unsigned char。,C51程序中使用的常量和变量必须定位在80C51不同的存储区域。, 变量

      3、的存储区域, 存储器类型,数据定位在80C51不同的存储区域中,其访问方式和速度也就不同。,位变量只能定位在片内RAM位寻址区,使用bdata存储器类型; 常用的数据应定位在片内RAM中,使用data和idata存储器类型; 不太常用的数据可定位在片外RAM中,使用pdata和xdata存储器类型; 常量可采用code存储器类型。, 编译模式,若用户不对变量的存储器类型作出定义, 系统将采用由编译模式默认的存储器类型, 局部变量和全局变量, 局部变量,C51程序在一个函数开始运行时, 才对该函数的局部变量分配存储单元, 函数运行结束,即释放该存储单元。, 全局变量,全局变量定义在函数外部, 但始终占用一个固定的存储单元, 可供各函数共用。,降低了函数的通用性;,应尽量减少全局变量的使用,能不用就尽量不用。,降低了内部存储单元的利用率;,可大大提高内部存储单元的利用率。, 变量的定义方式,存储种类 数据类型 存储器类型 变量名表,变量定义应集中放在函数的开头; 可单个定义,也可多个一起定义(必须是同类型); 定义时,可赋值,也可不赋值; 变量定义语句必须以“;”结束。, 80C51特殊功

      4、能寄存器定义方式,C51对80C51片内21个特殊功能寄存器和部分可寻址位 按MCS-51中取的名字(必须大写)全部作了定义, 只需在程序开头的头文件部分 写一条预处理命令:#include , 即可直接引用。,但对ACC、B、P0、P1和P2的可寻址位, 因位定义名不符C51标识符要求,仍需重新定义。,5.2.3 运算符和表达式, 赋值运算符,变量表达式, 算术运算符,i和i:变量先加(减)1,后使用; i和i:变量先使用,后加(减)1。,除法运算的结果与参与运算数据的类型有关。 若两个数据都是整数,运算结果也为整数,余数舍去。,求余运算时要求参与运算的数据都是整型, 运算结果为两数相除的余数。, 关系运算符,用于两个数据之间进行比较判断 。,运算的结果只能有两种: 条件满足,运算结果为1(真); 条件不满足,运算结果为0(假)。,注意:不要混淆关系运算符“”与赋值运算符“”的区别。, 逻辑运算符,用于求条件表达式整体之间逻辑运算的逻辑值。 条件表达式的值只有两种:1(非0或真)或0(假)。 运算结果也只有两种:1(真)或0(假)。, 位逻辑运算符,用于变量数据本身按位(化为二进制数

      5、)进行逻辑运算。 变量数据的值可以是任意整常数。 运算结果也可以是任意整常数。, 复合赋值运算符,由运算符和赋值运算符叠加组合,5.3 C51基本语句,5.3.1 语句基本概念,主要有表达式语句、复合语句、选择语句和循环语句等。, 表达式语句,在表达式后面加上“;”就构成表达式语句。, 复合语句,由若干条单语句组合而成的语句称为复合语句。,5.3.2 选择语句,根据给定的条件是否成立选择相应的操作。,具有一定的逻辑分析能力和选择决策能力, 按结构可分为单分支选择结构和多分支选择结构, 主要有if语句和switch语句。, if语句,分为3种形式:, 条件成立就选择,否则就不选择。,if (条件表达式) 内嵌语句;, 不论条件成立与否,总要选择一个。,if (条件表达式) 内嵌语句1; else 内嵌语句2;, 串行多分支结构。,if (条件表达式1 ) 内嵌语句1; else if (条件表达式2 ) 内嵌语句2; else if (条件表达式n ) 内嵌语句n; else 内嵌语句(n+1);,条件运算符“?:”,表达式1?表达式2:表达式3;,首先计算表达式1的值, 若为非0(真)

      6、,则将表达式2的值作为整个条件表达式的值; 若为0(假),则将表达式3的值作为整个条件表达式的值。,例如:,max = (xy) ? x : y; /若xy,max= x;否则,max= y,【例5-7】 已知电路如图5-6所示,要求实现: S0、S1均未按下,VD0亮,其余灯灭; S0单独按下,VD1亮,其余灯灭; S1单独按下,VD2亮,其余灯灭; S0、S1均按下,VD3亮,其余灯灭。,Keil C51软件调试: 编译链接并进入调试状态后, 打开P1口,依次设置P1.6、P1.7四种状态, 并观察程序运行后P1.3P1.0的状态变化。,Proteus虚拟仿真调试: 装入Hex文件后, 全速运行, 点击S0、S1按钮, 设置4种不同状态, 可看到VD0VD3 相应亮暗状态。, switch语句,switch (表达式) case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; case 常量表达式n: 语句n; break; default: 语句(n+1);,类似于汇编中散转程序,【例5-9】 电路和要求同例5-7 ,试用switch语句

      7、编程实现。 解:C51程序如下,Keil C51软件调试和Proteus ISIS虚拟仿真调试同例5-7。, while循环语句,5.3.3 循环语句,根据判断语句在流程中执行的先后可分为: while循环(也称为当型)和do-while循环(也称为直到型)。, while循环,while (条件表达式) 循环体语句;, do-while循环,do 循环体语句; while(条件表达式);,【例5-11】 用while(1)无限循环语句改编例5-7程序。 解:编程如下:,Keil C51软件调试和Proteus ISIS虚拟仿真调试同例5-7。,while循环(当型),do-while循环(直到型),Keil C51软件调试:编译链接并进入调试状态后,全速运行, 可看到:n=101,sum=5050 。, for循环语句,for (表达式1;表达式2;表达式3) 循环体语句;, 首先对循环变量赋初值(表达式1); 判断表达式2是否满足给定的循环条件, 若满足循环条件(值为非0),则执行循环体语句; 若不满足循环条件(值为0),则结束循环; 在满足循环条件(值为非0)的前提下,执行循环体

      8、语句; 计算表达式3,更新循环变量; 返回判断表达式2,重复及以下操作,直至跳出for循环语句。,【例5-13】 用for循环语句改编例5-10程序。 解:本题程序与例5-10程序基本相同, 但第46行用2行for循环替代:,Keil C51软件调试:编译链接并进入调试状态后,全速运行, 可看到:n=101,sum=5050 。,5.4 C51构造类型数据,构造类型数据,主要有数组、指针、结构、共用体和枚举等。,5.4.1 数组,数组是一组具有相同类型数据的有序集合。 每一数组用一个标识符表示,称为数组名, 数组名同时代表数组的首地址; 数组内数据有序排列的序号称为数组下标,放在方括号内, 根据数组下标可访问组成数组的每一个数组元素。,数组可分为一维和多维,常用的是一维数组。, 一维数组,数据类型 存储器类型 数组名元素个数, 定义格式, 引用格式,数组名下标,注意:数组下标是从0开始编号的, 因此,数组下标最大编号比元素个数小1。, 数组赋值,一般在数组初始化时(即数组定义时)赋值。,【例5-18】 试将16个单字节无符号数从大到小排列。 解:编制C51程序如下:,Keil C51软

      9、件调试参阅例9-5。,5.4.2 指针,指针就是地址; 存放指针(地址)的变量称为指针变量,, 指针和指针变量, 指针变量定义方式,数据类型 数据存储器类型 *指针存储器类型 指针变量名, 取地址运算符和指针运算符,&:取地址运算符 *:指针运算符(或称为间接访问运算符、取指针内容运算符),【例5-21】 已知一维数组a10,试将其按顺序输出。 解:该题目有3种解法,C51程序分别如下:,Keil C51软件调试: 编译链接 并进入调试状态后, 打开Serial #1窗口, 全速运行, 可看到 Serial #1窗口 输出程序运行结果: 1,2,3,4,5,6,7,8,9,10,5.5 C51函数,函数是C程序的基本单位,即C51程序主要是由函数构成的。,5.5.1 函数概述, 函数的分类,C51函数可分为主函数main( )和普通函数两种:,一个C51源程序必须有也只能有一个main函数, 而且是整个程序执行的起始点。,普通函数是被主函数调用的子函数, 普通函数又可分为标准库函数和自定义函数。,标准库函数是由C51编译系统的函数库提供的,,自定义函数就是用户根据自己的需要编写的函数。, 函数的定义方式,返回值类型 函数名(形式参数列表) 编译属性 中断属性 寄存器组属性 局部变量说明 函数体语句,返回值类型是指本函数返回值的数据类型, 若无返回值,则成为无类型,用void表示; 若该项要素缺省,则C51编译系统默认为int类型。,函数名除了main函数有固定名称外, 其他函数由用户按标识符的规则自行命名。,形式参数用变量名(标识符)表示,没有具体数值; 可以是一个,或多个(中间用逗号“,”分隔),或没有形式参数。,编译属性是指定该函数采用的存储器编译模式, 有Small、Compact和Large 3种选择,缺省时,默认Small模式。,中断属性是指明该函数是否中断函数; 寄存器组属性是指明该函数被调用时准备采用哪组工作寄存器。,局部变量是仅应用于本函数内

      《单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章》由会员E****分享,可在线阅读,更多相关《单片机原理与控制技术——双解汇编和C51 第3版 教学课件 ppt 作者 张志良 第5章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.