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

[高等教育]10112第4章

32页
  • 卖家[上传人]:tia****nde
  • 文档编号:70748077
  • 上传时间:2019-01-18
  • 文档格式:PPT
  • 文档大小:795.81KB
  • / 32 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第3章 单片机的C程序设计,本章重点 C51单片机的程序结构; 各种数据类型及变量的定义、存储及运算; C51单片机程序的流程控制; C51单片机函数的定义及调用。 本章难点 构造数据类型的存储结构及具体的灵活应用。,3.1 单片机程序设计概论,C51系列单片机支持三种高级语言,即PL/M、C和BASIC。(各自特点) 单片机的C语言编程特点 C51管理内部寄存器和存储器的分配,编程时,无需考虑不同存储器的寻址和数据类型等细节问题; 程序由若干函数组成,具有良好的模块化结构; 有丰富的子程序库可直接引用,从而大大减少用户编程的工作量; C语言和汇编语言可以交叉使用。 (各自特点) 单片机的C语言编译器 C语言编译器将C语言源代码翻译成可执行代码的软件。 支持C51系列单片机的C语言编译器有很多种,如American Automation、BSO/TASKING、IAR、Keil/Franklin等。 Keil/Franklin以它的代码紧凑和使用方便等特点优于其他编译器,本章针对这种编译器来介绍C51单片机的C语言程序设计。,3.1.3 C51单片机的程序结构,#include /头文

      2、件定义 #define PI 3.1415 /常量定义 unsigned char i,j; /全局变量定义 sfr P0 = 0x80; /特殊功能寄存器定义, /一般头文件中已包含 sbit CY = 0xD7; /可位寻址位或引脚定义, /一般头文件中已包含 void Delay(int TimeMs); /函数声明 main() int m,n; /局部变量定义 /初始化程序 while(1) /主循环 void Delay(int TimeMs) /函数实现 /函数实现代码 ,注意事项 C语言是大小写敏感语言; 标识符应该先说明再引用; 任何语句必须以“;”结束; “”必须成对,理论上位置可以随意,为增加可读性应层次分明。,3.2 C51的数据与运算,数据与数据类型 数据:具有一定格式的数字或数值。 数据是计算机操作的对象。 不管使用任何语言、何种算法进行程序设计,最终在计算机中运行的只有数据流。 数据类型:数据的不同格式叫作数据类型。 数据结构:数据按一定的数据类型进行的排列、组合、架构称为数据结构。,C51的数据类型,Franklin C51的数据类型,3.2.2 常量与

      3、变量,常量是指在程序运行中其值不变的量。 常量分为数值型常量和符号型常量 数值型常量:i=0x16; 符号型常量:#define PI 3.1415 变量是指在程序运行中其值可以改变的量。 变量由变量名和变量值构成. 变量名即是存储单元地址的符号表示; 变量的值就是该单元存放的内容. C语言定义一个变量,编译系统自动为它分配一个存储单元,具体地址程序员不必关心。 常见变量类型: bit char int float,3.2.3 C51数据的存储类型与存储器结构,存储类型是指数据存放位置,即数据存放在哪个存储器中。 C51共有6种存储类型 变量存储类型定义 data char x char data x,存储器模式是指决定了变量的默认存储器类型、参数传递区和无明确存储区类型的说明。 C51的存储器模式有SMALL、LARGE和COMPACT,3.2.4 特殊功能寄存器(SFR)及其定义,51单片机中,除了程序计数器(PC)和4组工作寄存器组外,其他所有的寄存器均为特殊功能寄存器(SFR),分散在片内RAM区的高128字节中,地址范围为80H0FFH。 SFR中地址能被8整除,即地址以8或

      4、0结尾的可以位寻址。 SFR定义(与标准C语言不兼容) sfr sfr-name = int constant; sfr PSW= 0XD0; 位寻址的SFR中的位定义(与标准C不兼容) 第1种格式:sbit bit-name = sfr-nameint constant; sbit CY=PSW7; 第2种格式:sbit bit-name = int constantint constant; sbit CY=0XD07; 第3种格式:sbit bit-name = int constant; sbit CY=0XD7 在reg51.h头文件中,已经对标准51单片机的SFR及可寻址位作了定义。,3.2.5 并行接口及其定义,51系列单片机片内集成4个I/O口,可以在片外扩展I/O口。51单片机片外扩展I/O口与片外数据存储器统一编址,即把一个I/O口当作数据存储器中的一个单元来看待。 片内IO口定义 sfr P0= 0X80; 注:在reg51.h头文件中已定义 片外IO口(相当于1个单元外部数据存储器)定义 #include #define PORTA XBYTE0XFFC0 ab

      5、sacc.h是C51中绝对地址访问函数的头文件。PORTA地址FFC0H,长度8位。,3.2.6 位变量(BIT)及其定义,sbit定义位变量 sbit CY=PSW7; sbit CY=0XD07; sbit CY=0XD7 bit定义位变量 bit tt; bit和sbit差别 Sbit明确地址 bit地址不明确 注: 位变量不能定义成指针; 位变量不能定义成数组。,3.2.7 C51运算符、表达式及其规则,3.3 C51流程控制语句,C语言是一种结构化编程语言,组成程序有三种基本结构: (1)顺序结构; (2)选择结构; (3)循环结构。 顺序结构及其流程图,2选择结构及其流程图 二分支选择 用if-else语句实现 串行多分支 用else if嵌套实现,并行多分支 用swith语句实现,循环结构 当循环 用while语句实现 直到循环 用do-while语句实现 从-到循环 用for语句实现,3.4 C51构造数据类型,数据类型分基本数据类型和构造数据类型 基本数据类型 字符型(char)、整型(int)和浮点型(float)等。 构造数据类型 将基本数据类型按某种规则组织起来

      6、称构造数据类型。 数组、结构、指针、共用体、枚举等。,3.4.1 数组,数组:由同种基本数据类型构成,数目固定的有序数据集合。 数组特点 数组中元素是基本数据类型; 数组各元素数据类型相同; 数组中元素个数固定。 数组数据用同一名字的不同下标访问。 数组使用 定义格式 数据类型 数组名常数表达式1常数表达式n; 中括号内必须是常数表达式,不能有变量,即数组大小程序运行中不能改变。 初始化 int a10=1,3,5,7; int a34= 1,3,5,7,2,4,6,8,1,2,3,4,5,6,7,8;,数组引用 数组必须先定义后引用; 数组元素只能逐个引用,不能整体引用。 a0=a3+a1+2; 字符数组 定义与普通数组类似 char a10; 初始化 char a10=B,E,I,J,I,N,G,/0; char a10=“BEI JING”; char a10=“BEI JING”;,查表 数组主要用途之一是查表; 在很多非线性转换场合,采用查表比数学公式更加方便。 uchar code tempt=32,34,36,37,39,41; uchar ftoc(uchar degc

      7、) return temptdegc; main() x=ftoc(5); 数组与存储空间 在程序中定义一个数组,编译系统开辟一个连续空间存放数据; 多维数组占用存储器空间较大,在单片机开发中不宜定义过多。,3.4.2 指针,指针的概念 变量与指针 变量的指针是变量的地址; 指针变量:存放另一个变量地址的变量 指针变量的值是另一个变量的地址,指针变量的定义 定义格式 数据类型 *指针变量名; int *ap “*”是定义指针变量的关键符,ap是指针变量名。 指针变量的引用 引用前先定义 int *ap;int a; 指针变量定义后系统分配存储单元给它,但单元内空白,即没有装入指针(地址)。 指针变量的引用是通过取地址符,数组指针和指向数组的指针变量 基本概念 数组指针:数组的起始地址。 指向数组的指针变量:用来存放数组起始地址(指针)的变量。 指向数组的指针变量的定义和赋值 定义 int a10; int *app; 赋值 方法1:app= appi=*(app+i),指向数组的指针变量可以带下标。,指针变量的运算 p=a; p+; x=*p; x=a1; *p+ = *(p+),先取

      8、值*p,再自加p+。 *p+*+p。 (*p)+ *(p+)。 *(p-)=ai- *(+p)=a+i *(-p)=a-i Franklin c51的指针类型:基于存储器指针和一般指针 基于存储器指针:以存储器类型为参数 访问效率高,占用1-2B char xdata *px; char xdata * data px; 一般指针:1B存储器类型+2B偏移地址,3.5 函数,一般概念 C语言程序是由一个个函数构成的。在构成C语言程序的若干个函数中,必有且只有一个是主函数main()。 函数之间不可以嵌套,但可以调用,主函数不能被调用。 C语言程序从主函数开始执行,调用子函数后返回主函数,最后在主函数中结束。 3.5.1 函数分类 按结构分类:主函数和子函数;,全程变量说明; main()/*主函数*/ 局部变量说明; 执行语句; ,function_1(形式参数表)/*函数1*/ 形式参数说明; 局部变量说明; 执行语句; ,3.5.1 函数分类,按使用分类:标准库函数和用户自定义函数 标准库函数:由编译系统提供,独立功能的公用函数。 C语言标准库函数功能强大、资源丰富充分利用可以提高

      9、效率,节省时间。 用户自定义函数:由用户自己编写的函数。 按函数参数分类:无参数函数和有参数函数 无参数函数:无输入参数,不返回结果,主要完成某种操作。 有参数函数:有输入参数,函数结束时返回结果。 空函数 函数体内没有语句,不做任何操作。 为后续功能扩充准备。,3.5.2 函数的定义,函数定义是指编写函数功能的程序块。 定义格式 返回值类型 函数名 (类型符1 形参1,类型符n 形参n) 说明语句; 执行语句; 函数头 函数类型:返回值类型,可以基本数据类型或复杂数据类型,默认为int,无返回值函数,其返回类型用void说明。 函数名与变量名一样是一种标识符,定义规则也与变量名一样。 形参表定义各个形参名及其数据类型,用于函数被调用时接收主调函数实参输入的数据。无参数函数,其形式参数表用void说明。 函数体 函数体用花括号括起来,类似于复合语句。函数体由说明语句和执行语句组成,说明语句可定义函数所使用的变量;执行语句描述函数的具体操作。 函数体无语句为空函数,不执行任何操作,但是花括号不能省略。 有返回值函数,函数体的执行语句中应用return语句返回结果,且保证返回结果的数据类型与函数头定义的返回值数据类型一致。,3.5.4 函数的调用,函数的调用是指主调函数使用被调函数的过程。 调用方式 函数调用语句 函数名(实参表); 函数表达式 y = 3 + sum(x1,x2); 函数参数 printf(“%d”,sum(x1,x2); 调用原则:主调函数只能调用已存在的被调函数。 库函数:用#include命令包含含有被调函数原型的头文件。 自定义函数: 被调函数应在主调函数前定义; 在调用被调函数前先声明被调函数。 声明被调函数其实就是声明被调函数的原型,类似于函数定义时的函数头。 int sum(int x1,int x2); 若被调函数声明在源程序的定义部分,该被调函数可以被任何函数调用。,

      《[高等教育]10112第4章》由会员tia****nde分享,可在线阅读,更多相关《[高等教育]10112第4章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党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.