历史上的今天

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

正在发生

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

发布者:脑电风暴 来源: eefocus关键字:51单片机  数组  指针 手机看文章 扫描二维码
随时随地手机看文章

串口章节和液晶屏章节的部分代码中总是看到“  *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);”了。

关键字:51单片机  数组  指针 引用地址:51单片机-指向数组的指针

上一篇:51单片机-液晶屏代码讲解
下一篇:51单片机-液晶屏代码单独文件

推荐阅读

2018年首届中国国际智能产业博览会(以下简称“智博会”)在重庆国际博览中心开幕。据介绍,首届智博会由科技部、工信部、中国科学院、中国工程院、中国科学技术协会和重庆市人民政府共同主办,大会主题为“智能化:为经济赋能,为生活添彩”,通过为期3天的展会、赛事路线、高端研讨等系列活动,展示国际尖端思想和领先的技术应用。 据介绍,本届智博会...
机器人的基础和前沿技术正处在迅猛发展的阶段,在2019世界机器人大会主上,各国的机器人专家各抒己见。专家们认为,在未来的机器人应用中,人机协作将成为主流,机器人将会懂得如何与人类交流,它们将成为人类的好伙伴。 在说到高科技的自动化生产线时,人们就会联想到“无人工厂”。但在机器人专家眼里,未来的工厂不是无人的,而是机器人与人类和谐共...
  在给许多客服打电话的时候,你肯定会听到以下对白,“为了保障你的利益,你的通话可能会被录音”。但是你知道是怎么录音的吗?用一支录音笔放在电话机旁边?用以前老港片里面用的那种磁带式模拟录音?还是像手机通话录音那样,要点击一下开始录音,才能录音?  “以上这些录音都不可能符合企业级的录音需求,现在流行的是数字全自动录音”。深圳市徽...
自动驾驶辅助在近年来发展迅猛,稍微上点档次的电动汽车上都搭载了此项配置,在带来更高安全性和便捷性的同时,也引发了诸多的争议。近日,美国国家公路交通安全管理局就针对特斯拉的一系列车祸进行调查,矛头直指特斯拉的自动辅助驾驶,但这并没有降低特斯拉对于该项技术的热情和执着。日前,有消息称特斯拉将与 Cybertruck ( 参数 | 询价 ) 一起推出更先...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved