历史上的今天
返回首页

历史上的今天

今天是:2024年08月26日(星期一)

正在发生

2021年08月26日 | 51单片机-指向数组的指针

2021-08-26 来源:eefocus

在串口章节和液晶屏章节的部分代码中总是看到“  *str!=''  ”和“  *str++  ”却一时难以理解意思,本节我们将简要讲解这两部分代码的含义,但前提需要大家有对指针方面的知识基础,建议先了解《手把手教你学51单片机》文档12.1节知识内容先。


1.代码解析

我们先定义一个数组“u8 LEDSET[4]={0x7E,0xBD,0xDB,0xE7};”

假设这四个元素的内存排布如下,5,6,7,8代表的是指向元素的指针。

每个数组初始化之后都会在最后那个元素内存的下一个内存分配有一个结束符的数据,“‘’”的ASCII码值就是0。

11.0.png?imageView2/2/w/550

接着我们先把下面代码下载进开发板中观察现象

#include  

#include //详见第六章第8讲 

  

void LED_task(u8 *str)

    while(*str != '')//连续发送字符串数据,直到检测到结束符

    {

        P0=*str++;

        delay_ms(1000);

    }  

}

  

void main()

{  

    u8 LEDSET[4]={0x7E,0xBD,0xDB,0xE7};

    LED_Init();//初始化LED硬件模块

  

    LED_task(LEDSET);

    while(1);

}


主函数里我们只需关注“LED_task(LEDSET);”,传入的参数是指针类型,LEDSET就是指向数组第一个元素的指针,也就是指向的是0x7E,指针是5。


在“while(*str != '')”里,由于传入的指针里面的值不是结束符,所以可以进入循环体,此时执行“P0=*str++;”。


“*str++;”的意思是,先把0x7E这个值赋给P0先,然后指针加1,此时的指针就是6了。

那么就有“P0=0x7E;”延时一秒之后,重新判断“while(*str != '')”,显然指针为6的内存里也不是结束符,而是0xBD,所以执行“P0=0xBD;”延时一秒。


后面再执行两次赋值给P0为0xDB,0xE7之后,由于此时指针加1之后指向了0x00,也就是结束符,不满足了“while(*str != '')”,该函数就执行完了。于是就到执行主函数里的“while(1);”,后面我们看到开发板的实验现象就是中间两盏灯一直保持常亮,因为已经执行完“LED_task(LEDSET);”了。

推荐阅读

史海拾趣

Gowanda Electronics公司的发展小趣事

对于连续可调直流稳压电源电路,网友可能会有多个方面的问题,以下是一些常见问题及其解答:

一、技术原理与性能参数

  1. 问:连续可调直流稳压电源电路的工作原理是什么?
    : 连续可调直流稳压电源电路的工作原理主要是通过扩展开关电源的电压和电流容量,采用高频调制技术,将输入的交流电转换为直流电,并通过调节电路使输出电压稳定在一个可调范围内。其内部包含整流、滤波、稳压等多个环节,以提供稳定且可调的直流电压输出。

  2. 问:如何选择合适的连续可调直流稳压电源?
    : 选择连续可调直流稳压电源时,需要考虑的主要因素包括所需电压范围、电流容量、稳压精度、纹波噪声、保护功能等。同时,也需要根据应用场景考虑电源的体积、重量、散热性能等因素。

二、使用与维护

  1. 问:在使用过程中,输出电压不稳定怎么办?
    : 如果输出电压不稳定,可以首先检查电源输入电压是否稳定,使用稳压电源或变压器等辅助设备来保持输入电压的稳定。其次,检查输出端电压设置是否正确,确保输出电压值在设定范围内。最后,检查电源输出端负载是否符合规定,避免负载过重或过轻导致输出电压波动。

  2. 问:如何对连续可调直流稳压电源进行日常维护?
    : 日常维护主要包括检查电源输入输出线路的连接是否牢固,清洁电源外壳和散热风扇上的灰尘,以及定期检查电源的工作状态和性能指标。如果发现异常或故障,应及时进行处理或更换损坏的部件。

三、故障排查与解决

  1. 问:电源无法输出电压或电流怎么办?
    : 如果电源无法输出电压或电流,可以首先检查电源输入电压是否正常,电源本身是否损坏。其次,检查电源输出端连接是否正确,是否存在开路或短路的情况。最后,检查电源是否过载或短路,确保电源在正常工作范围内。

  2. 问:电源输出电压波动大怎么办?
    : 输出电压波动大可能是由于电源输入电压不稳定、输出端负载不匹配或存在电磁干扰等原因造成的。解决方法包括稳定输入电压、匹配适当的负载、检查并消除电磁干扰源等。

四、扩展与升级

  1. 问:如何扩展连续可调直流稳压电源的电压和电流范围?
    : 扩展电压和电流范围通常需要根据具体的电源设计来进行。一般来说,可以通过更换更高功率的整流管、滤波电容和稳压元件等方式来提升电源的电压和电流容量。同时,也可以通过增加并联或串联电路的方式来实现电压和电流的分档调节。

  2. 问:如何进行电路的升级和改造?
    : 电路的升级和改造需要根据实际需求和技术能力来进行。在升级过程中,需要注意保持原有电路的稳定性和可靠性,避免引入新的故障点。同时,也需要关注新技术的发展和应用,以便在升级过程中采用更先进、更高效的电路设计方案。

以上是针对连续可调直流稳压电源电路的一些常见问题及其解答。希望这些信息能够对网友有所帮助。

Amphenol Aerospace公司的发展小趣事

Amphenol Aerospace 是一家在电子行业中知名的公司,专注于设计、制造和销售航空航天领域的连接器和电缆组件。以下是关于 Amphenol Aerospace 公司发展的五个相关故事:

  1. 创立与早期发展:Amphenol Aerospace 公司的历史可以追溯到1932年,当时在美国新泽西州的Linden市成立了Amphenol公司。最初,该公司主要致力于生产无线电连接器和电缆组件。随着航空航天行业的发展和壮大,Amphenol Aerospace 公司开始专注于航空航天领域,成为该行业的关键供应商之一。

  2. 技术创新与产品多样化:Amphenol Aerospace 公司不断进行技术创新,推出了一系列先进的连接器和电缆组件产品。这些产品具有高可靠性、高耐用性和优良的性能特点,广泛应用于航空航天领域的飞机、卫星、导弹、航天器等设备中。Amphenol Aerospace 公司的产品包括圆形连接器、矩形连接器、光纤连接器等,满足了不同客户的需求。

  3. 客户合作与定制化解决方案:Amphenol Aerospace 公司与航空航天领域的客户建立了紧密的合作关系,共同开发定制化的连接器和电缆组件解决方案。公司的工程团队与客户密切合作,根据客户的需求和规格要求,设计和制造符合特定应用要求的产品。这种定制化解决方案为客户提供了更加个性化和专业化的服务。

  4. 质量控制与认证标准:Amphenol Aerospace 公司注重产品质量控制,并严格遵循行业标准和认证要求。公司的生产工艺和质量管理体系符合ISO 9001质量管理体系认证标准,以确保产品质量稳定可靠。此外,Amphenol Aerospace 公司的产品还通过了航空航天领域的相关认证,如AS9100质量管理体系认证等,确保产品符合行业标准和规定。

  5. 全球布局与市场拓展:除了在美国的生产基地外,Amphenol Aerospace 公司还在全球范围内设有多个生产工厂和销售办事处,为客户提供全面的服务和支持。公司在欧洲、亚洲和其他地区建立了广泛的销售网络,拓展了国际市场份额。通过全球布局和市场拓展,Amphenol Aerospace 公司不断扩大业务规模,增强了在航空航天领域的市场竞争力。

这些故事展示了 Amphenol Aerospace 公司从成立初期到如今在技术创新、产品多样化、客户合作与定制化解决方案、质量控制与认证标准以及全球布局与市场拓展等方面取得的重要进展。

General Cable公司的发展小趣事
根据应用需求,将YN5103的数据和控制引脚连接到相应的输入或输出设备。例如,数据引脚可能连接到微控制器或其他数据源,控制引脚可能用于接收外部控制信号。
台湾町洋(dinkle)公司的发展小趣事

町洋注重企业文化建设,倡导以人为本的管理理念。公司为员工提供了良好的工作环境和福利待遇,并积极开展各种培训和学习活动,帮助员工提升自身素质和专业技能。这种关注员工成长和发展的企业文化使得町洋的凝聚力不断增强,为公司的持续发展提供了有力保障。

Bytes公司的发展小趣事

Bytes公司自成立以来,始终坚持以技术创新为核心竞争力。公司早期便投入大量研发资源,开发出一款具有划时代意义的电子产品,迅速在市场上占据一席之地。随着技术的不断进步,Bytes公司不断推出更新换代的产品,满足消费者日益增长的需求。同时,公司还积极与高校、科研机构合作,共同研发新技术,为公司的持续发展提供源源不断的动力。

Austek Microsystems公司的发展小趣事

在追求经济效益的同时,Austek Microsystems也积极履行社会责任。公司严格遵守环保法规,采用环保材料和生产工艺,减少对环境的影响。此外,Austek Microsystems还积极参与公益事业,为社区的发展和进步贡献自己的力量。

这五个故事展示了Austek Microsystems在电子行业中的发展历程和取得的成就。通过创新研发、建立合作伙伴关系、技术升级与产品迭代、市场拓展与品牌建设以及履行社会责任等方式,Austek Microsystems逐渐在市场中崭露头角,成为了电子行业中一颗璀璨的明星。

问答坊 | AI 解惑

TI dsp2000培训

看看能不能用上…

查看全部问答>

招聘信息

来自EEWORLD版主群:68652484 职位描述: 1.基于公司音效芯片和其他产品的开发板设计和实现; 2.客户应用方案的设计与实现,并提供技术支持和现场服务; 3.分析并解决硬件开发过程中的问题; 职位要求: 1.精通模拟、数字电路设计,有至 ...…

查看全部问答>

我想求购这样一款IC,是升压IC,最大输出电流0.7A

我想求购这样一款IC,是升压IC,最大输出电流0.7A 输入电压:1-5V 输出电压:可以在选择3.3-6V之间选择输出电流:额定600mA,最大700mA 转换效率:最高96% 开关频率:500KHz 输出纹波:50mV(MAX) 20M带宽工作温度:工业级(-40℃到 +85℃)满载温升 ...…

查看全部问答>

请问CF卡读取问题

请问谁知道用EVC怎么来读取多个CF卡的序列号,我现在能读取出一个CF卡的序列号,但是如果有多个CF卡的时候怎么办呢? 而且我还要读出CF卡的个数,谢谢大家。下面是我读取CF卡的程序 #include \"stdafx.h\" //my code #include #include #defin ...…

查看全部问答>

wince6.0 重新编译explorer会成为英文的explorer

问题一: rt,第一次全部编译,没问题,修改任务栏后,rebuild and sysgen 了explorer模块,结果就出现了英文,(经试验,即使不做任何改动,重新编译explor也是英文界面); 问题二: 还有一个奇怪问题,如下我把explorer。cpp中的taskbar生成 ...…

查看全部问答>

Keil AGDI接口的一个问题?

我用Keil IDE 公司提供的AGDI接口实现Debugger,现在遇到一个问题非常棘手?想问下大家? 现在大部分功能都实现了,就差Watch Breakpoint,(即Access BreakPoint,有Read,Write属性),其他的断点也都OK了。为什么我实现不了它呢?有这样一个问题: ...…

查看全部问答>

opencv arm上安装和编译问题!!!!

按照http://www.opencv.org.cn/index.php/%E5%B5%8C%E5%85%A5%E5%BC%8FARM%E7%B3%BB%E7%BB%9F%E4%B8%AD%E5%AE%89%E8%A3%85上的安装过程安装,但我用的交叉编译器为arm-linu-g++ 4.3.3的 安装完成之后用如下命令编译,问题一大堆 显示的错误信 ...…

查看全部问答>

CE下怎么隐藏窗体标题栏

用vs2008开发的窗体,运行在wince系统上,怎么隐藏窗体的标题栏 FormBorderStyle设置成none也不能隐藏。。什么原因?…

查看全部问答>

向大虾请教字库问题

在CE 应用程序中把 烱 显示为 烱 ,请问需要增加什么字库?在线等!!…

查看全部问答>

wince web服务器问题

那位大侠可以帮忙么? 我在wince上加入了WEB内核,用ASP标准控件编写的网页,控件在WINCE 上显示不出来,但是用HTML控件编写网页控件可以显示出来,但是不能调用.dll,请问为什么?我的vs2005 和2440开发板 …

查看全部问答>