C程序设计中使用指针可以:使程序简洁、紧凑、高效有效地课件

上传人:58****5 文档编号:240923042 上传时间:2024-05-18 格式:PPTX 页数:28 大小:1.72MB
返回 下载 相关 举报
C程序设计中使用指针可以:使程序简洁、紧凑、高效有效地课件_第1页
第1页 / 共28页
C程序设计中使用指针可以:使程序简洁、紧凑、高效有效地课件_第2页
第2页 / 共28页
C程序设计中使用指针可以:使程序简洁、紧凑、高效有效地课件_第3页
第3页 / 共28页
点击查看更多>>
资源描述
C程序设计中使用指针可以:使程序简洁、紧凑、高效有效地表示复杂的数据结构动态分配内存得到多于一个的函数返回值C语言知识语言知识(161页页):指针:指针1谢谢观赏2019-5-9C程序设计中使用指针可以:C语言知识(161页):指针11 1、变量与地址、变量与地址地址地址 内存内存0 x000 x30350 x31560 x32780 x33120 x34340 x35560 x3678如变量声明如下如变量声明如下(默认存储在内存默认存储在内存):ijk编译编译(对于全局变量对于全局变量)或函或函数调用数调用(对于全局变量对于全局变量)时时根据变量的类型为其分配根据变量的类型为其分配地址,地址,具体地址,我们不具体地址,我们不必关心。必关心。首地址就是该变首地址就是该变量的地址量的地址内存中每个字内存中每个字节有一个编号节有一个编号-地址地址首地址就是该变量首地址就是该变量的地址的地址 就像院长只知道我院有多少学生宿舍,但并不关心哪个学生住哪个宿舍一样。一个字符型变量分配一字节(char)内存单元,一个整型(int)变量分配两字节内存单元,一个长整型变量分配4字节内存单元。2谢谢观赏2019-5-91、变量与地址地址内存0 x000 x30350 x31560 x地址地址外存外存0 x00000 x2000350 x2001560 x2002780 x2003120 x2004340 x2005560 x200678如变量声明如下如变量声明如下(定义在外存定义在外存):ijk首地址就是首地址就是该变量的地该变量的地址址 外存外存,64K字节字节地址:地址:0 x0000-0 xFFFF编译编译(对于全局变量对于全局变量)或函数调用或函数调用(对于全局对于全局变量变量)时根据变量的类时根据变量的类型为其分配型为其分配地址地址,具具体地址,我们不必关体地址,我们不必关心。首地址就是该变心。首地址就是该变量的地址量的地址3谢谢观赏2019-5-9地址外存0 x00000 x2000350 x2001560 x2地址地址外存外存0 x00000 x2000350 x2001560 x2002780 x2003120 x3000 xx0 x3001xxijk2、指针、指针通过变量名获取变量值,是变量的基本通过变量名获取变量值,是变量的基本使用方法使用方法直接访问。直接访问。通过对变量地址的访问,获取变量的值通过对变量地址的访问,获取变量的值间接访问。间接访问。要访问变量的地址就涉及到了指针。要访问变量的地址就涉及到了指针。就本质而言,就本质而言,指针就是地址。指针就是地址。以定义在外部存储器变量为对象,具体以定义在外部存储器变量为对象,具体说明指针的概念说明指针的概念 例例3412间接访问,使用于访问数组、字符串间接访问,使用于访问数组、字符串(有序存储的(有序存储的“一串数据一串数据”,“一片存一片存储区储区”)。)。4谢谢观赏2019-5-9地址外存0 x00000 x2000350 x2001560 x2指针变量指针变量指针变量的定义指针变量的定义指针变量是用来存储地址值的变量。首先,指针变量本身也是变量,其次,指针变量的值只能是地址(16bit,占2两个字节)。类型名*指针变量名;例如:指针(变量)将指针(变量)将来来只能指向整型只能指向整型变量,即:变量,即:指针变量的类型,应和它指向的对象类型匹配一致“*”是指针是指针(变量)的标(变量)的标示符,示符,指针指针(变量)是(变量)是k,k,而不是而不是*k!*k!一般不赋初值,无实际意义5谢谢观赏2019-5-9指针变量指针变量的定义指针变量是用来存储地址值的变量。类指针变量的指向指针变量的指向指针变量赋值,就是获取指向“某变量地址”的过程。例如:例如:0 x00000 x2000350 x2001560 x2002780 x2003120 x3000 xx0 x3001xx0020041Eij指针变量指针变量k0 x78122是1E04指针变量指针变量k k,指向,指向整型变量整型变量i i,k k的的值就是值就是i i的地址的地址“&”“取地取地址址”运算符运算符“*k”是变量i。“k”是变量i的地址不必关心不必关心k k的地址的地址6谢谢观赏2019-5-9指针变量的指向例如:0 x00000 x2000350 x20第第7 7章章 ADAD转换器的控制转换器的控制 7.1.1 7.1.1 AD AD转换器转换器7.1 7.1 概述概述AD转换器即ADC(Analog to Digital Converter),是能将模拟量转换为数字量的器件。7.1.2 7.1.2 AD AD转换分辨率(分解度)转换分辨率(分解度)常用转换结果的二进制数的位数来表示。位数越大,分辨率越高。例:模拟量的变化范围:例:模拟量的变化范围:0V-5V0V-5V,ADAD转换器分辨率是转换器分辨率是8 8位。位。5V/28=5V/2560.02V=20mV经经8 8位位ADAD转换器,能区别的最小输入电压转换器,能区别的最小输入电压(也就是数字量也就是数字量1 1对应对应的电压的电压)为:为:经经1212位位ADAD转换器,能区别的最小输入电压为:转换器,能区别的最小输入电压为:5V/212=5V/40690.0012V=1.2mV 7谢谢观赏2019-5-9第7章 AD转换器的控制 7.1.1 AD转换器7.1 7.2.3 AD7.2.3 AD转换时间转换时间 即完成一次AD转换所用的时间输出的数字量为:NA/D转换器的位数 参考电压 模拟输入电压 8谢谢观赏2019-5-97.2.3 AD转换时间 即完成一次AD转换所用的时间输出的7.2 ADC08097.2 ADC08097.2.1 ADC08097.2.1 ADC0809介绍介绍 8路模拟通道输入 8位,8路通道,转换时间100s 参考电压输入8位数字量输出 模拟通道地址输入 转换结束输出端 转换启动信号输入 时钟输入端 地址锁存输入 输出允许输入 9谢谢观赏2019-5-97.2 ADC08097.2.1 ADC0809介绍 8地址稳定的模拟量ADDADDALEALEAINAINSTARTSTARTEOCEOCOEOE数字量DOUTDOUT ADC0809 ADC0809时序时序完成一次完成一次A/DA/D,最多需要,最多需要1010个时钟(个时钟(8 8位逐次渐进位逐次渐进A/DA/D)不必关心)不必关心!先准备好先准备好地址,再地址,再锁存地址锁存地址启动转换之前启动转换之前及转换期间,及转换期间,模拟量必须稳模拟量必须稳定定启动转换后,启动转换后,EOC=0,表示,表示正在转换正在转换EOC=1EOC=1,表示,表示转换结束转换结束ENABLE=0ENABLE=0,数据,数据线为线为“高阻高阻”单片机单片机“发现发现”EOC=1EOC=1后,置后,置ENABLE=1ENABLE=1,数据,数据线输出数字量线输出数字量ENABLE=0ENABLE=0,数据,数据线为线为“高阻高阻”10谢谢观赏2019-5-9地址稳定的模拟量ADDALEAINSTARTEOCOE数字量功能要求:功能要求:用ADC0809实现一路A/D数模转换,并用LCD显示。7.2.2 ADC08097.2.2 ADC0809应用实例应用实例1 1(查询)(查询)1、硬件连接(电路)地址稳定的模拟量ADDADDALEALEAINAINSTARTSTART从时序图可以看到,ALE上升沿锁存地址,START下降沿启动A/D必须先锁存地址,再启动A/D,因而这两个信号可以“合并”。11谢谢观赏2019-5-9功能要求:用ADC0809实现一路A/D数模转换,并用LCD晶振12M、复位电路未画出显示电路未画出显示电路未画出要求较高时要用专用基准源,价格较高4分频降低频率,以满降低频率,以满足足ADC0809ADC0809的要求的要求晶振12M输出2M的脉冲500K时钟脉冲只用通道0ENABLE和START共用上拉电阻12谢谢观赏2019-5-9晶振12M、复位电路未画出显示电路未画出要求较高时要用专用基2.2.软件软件 I/OI/O口定义口定义 13谢谢观赏2019-5-92.软件 I/O口定义 13谢谢观赏2019-5-9地址稳定的模拟量ADDADDALEALEAINAINSTARTSTARTEOCEOCOEOE数字量DOUTDOUT编程编程:就是实现时序图就是实现时序图 14谢谢观赏2019-5-9地址稳定的模拟量ADDALEAINSTARTEOCOE数字量功能要求:功能要求:ADC0809实现八路A/D数模转换(数据采集)。7.2.3 ADC08097.2.3 ADC0809应用实例应用实例1 1(总线、中断、指针)(总线、中断、指针)将ADC0809视为内存单元利用数据总线/地址总线交换信息(控制/读取数据)电路15谢谢观赏2019-5-9功能要求:ADC0809实现八路A/D数模转换(数据采集)。16谢谢观赏2019-5-916谢谢观赏2019-5-9A15.A8A7.0ALEALE/RD/RDP0P0P2P2DATA IN时序是由单片机执行读外部数据存储器时时序是由单片机执行读外部数据存储器时“自动自动”完成完成AT89C51AT89C51读外部数据存储器的时序读外部数据存储器的时序高阻P0口先输出存储器的低8位地址A7.0P2口输出存储器的高8位地址A15.8P0口从存储器读数据将A7.0锁存在74HC573中读:通知外存将数据送到端口17谢谢观赏2019-5-9A15.A8A7.0ALE/RDP0P2DATA IN 时A15.A8A7.0ALEALE/WR/WRP0P0P2P2DATA OUTAT89C51AT89C51写外部数据存储器的时序写外部数据存储器的时序高阻P0口先输出存储器的低8位地址P2口输出存储器的高8位地址写:通知外存,存储数据将A7.0锁存在74HC573中锁存地址后P0口输出数据时序是由单片机执行写外部数据存储器时时序是由单片机执行写外部数据存储器时“自动自动”完成完成18谢谢观赏2019-5-9A15.A8A7.0ALE/WRP0P2DATA OUT网络标号,同一标号是接在一起的时钟电路未画转换结束时,产生上升沿实现反相下降沿触发中断低8位地址锁存,固定接法!或非门高8位地址只用了A15(P2.7)执行一次写操作,产生一个正脉冲执行一次读操作,产生一个正脉冲读写信号通常是119谢谢观赏2019-5-9网络标号,同一标号是接在一起的时钟电路未画转换结束时,产生上地址:0 x7ff8-0 x7fffP2:01111111P0:11111000 -11111111高8位地址只用了A15(P2.7)执行一次写操作,产生一个正脉冲执行一次读操作,产生一个正脉冲读写信号通常是1不使用的不使用的“位位”统统置统统置1,一是,一是,可以减小功耗;可以减小功耗;二是不影响这些二是不影响这些位做输入位做输入20谢谢观赏2019-5-9地址:0 x7ff8-0 x7fff高8位地址只用了A15(P20 0写操作,只有写操作,只有P2.7(A15)和和/WR(写写)信号起作用信号起作用?,目的(,目的(1)将已)将已锁存在锁存在74HC573的低三位地址锁存(上升沿)到的低三位地址锁存(上升沿)到ADC0809;(2)启启动动(下降沿)下降沿)ADC0809ADC080921谢谢观赏2019-5-90写操作,只有P2.7(A15)和/WR(写)信号起作用?0 0读操作,只有读操作,只有P2.7(A15)和和/RD(写写)信号起作用信号起作用,只是为只是为ADC0809的的/OE提提供一个正脉冲(高供一个正脉冲(高电平期间将结果送电平期间将结果送到数据线上到数据线上22谢谢观赏2019-5-90读操作,只有P2.7(A15)和/RD(写)信号起作用,只程序23谢谢观赏2019-5-9程序23谢谢观赏2019-5-924谢谢观赏2019-5-924谢谢观赏2019-5-9不必设置优先级。不必设置优先级。50mS定时器定时器0中断一次,中中断一次,中断断20次即一秒,启动一次次即一秒,启动一次A/D,转换时间约,转换时间约0.02mSmS,转换转换结束产生外部中断结束产生外部中断0,等,等待(待(1秒)再次启动,因而不秒)再次启动,因而不会同时产生中断会同时产生中断25谢谢观赏2019-5-9不必设置优先级。25谢谢观赏2019-5-926谢谢观赏2019-5-926谢谢观赏2019-5-9主函数初始化后,”就没事做啦”(待机)27谢谢观赏2019-5-9主函数初始化后,”就没事做啦”(待机)27谢谢观赏2019-28谢谢观赏2019-5-928谢谢观赏2019-5-9
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!