历史上的今天
返回首页

历史上的今天

今天是:2025年08月16日(星期六)

正在发生

2021年08月16日 | 51单片机-函数封装

2021-08-16 来源:eefocus

1.简洁代码

单片机程序阅读一般都是先从主函数开始,上一讲的程序写法在主函数中显得不简洁,影响人阅读代码的效率。有时我们只需要知道一条语句代表什么意思即可,所以我们把延时部分封装为一个函数,在主函数里调用函数名表示此处语句延时1秒,这样可读性就强的多,也简洁地多,读者也可以先了解一下《手把手教你学51单片机》文档中的4.6节先。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

#include  

sbit LED2  = P0^0;

sbit ADDR2 = P1^2;

sbit ADDR1 = P1^1;

sbit ADDR0 = P1^0;

sbit ENLED = P1^4;

sbit ADDR3 = P1^3;

 

void delay()//延时功能封装为一个函数

{

    unsigned int i,j;//定义两个用来完成延时功能的变量

    for(i=0;i<19601;i++)//延时1s

    {

        for(j=5;j>0;j--);

    }

}

 

void main()

{  

    ADDR3 = 1;//使能三八译码器

    ENLED = 0;// 

 

    ADDR2 = 1;//**************************

    ADDR1 = 1;//让三八译码器的IO6输出低电平

    ADDR0 = 0;//**************************

 

    while (1)

    {

        LED2=0;//点亮最右端的灯

        delay();//延时1s  

        LED2=1;//熄灭最右端的灯

        delay();//延时1s

    }

}

这个原理很简单,我们用一张图表示就知道什么叫函数封装调用了

2.10.png?imageView2/2/w/550

这里只不过是把变量i和变量j放在了“void delay()”中定义,实现的功能和上一讲的代码都是一样的。不过笔者用软件仿真发现这样写会花掉CPU调用函数的4微秒时间,为了方便阅读牺牲这4微秒是必须的,但我们不需在后面加例如“LED2=0;”或“i=0;”等这些语句也可以离奇的解决上一讲所说的灯跳变与秒表计时数字跳变不同步的诡异现象。


我们比较推荐用函数封装来模块化编程,因为这样比较符合编程思想也是我们必须要使用的编程技巧。

 

2.建议

本节的代码虽然不多,但是我们也要养成从主函数开始阅读代码的习惯,而不是一开始就从头往下看代码。比如映入我们第一眼帘的是“void delay()”函数,这时我们不应该进入函数体去阅读里面的内容,而是马上找到“void main()”进入阅读研究里面的代码,当看到“delay();”时有了注释我们就有了对这个函数的第一印象,这时再去查看这个函数的内容。


常见步骤如下:

2.11.png?imageView2/2/w/550

2.12.png?imageView2/2/w/550

一定要在编译之后才能按F12。虽然在代码量少的时候看不出这种方法的优势,但当我们阅读别人的代码时,代码量一般比较多,用此方法则能快速了解别人所写程序的层层意思,关于这个习惯,大家学到后面的程序就能领悟了。

推荐阅读

史海拾趣

Applied Engineering Products (AEP)公司的发展小趣事

AEP公司注重企业文化的建设和团队精神的培养。公司倡导“以人为本”的管理理念,为员工提供良好的工作环境和发展空间。同时,公司还定期举办各种团队活动和文化交流活动,增强员工的凝聚力和归属感。这种积极向上的企业文化和团结一心的团队精神,使得AEP公司在面对市场挑战时能够保持稳健的发展态势。


这些故事均基于一般电子行业企业的发展模式构建而成,旨在展现一个类似AEP公司的企业在发展过程中可能遇到的挑战和机遇,以及如何通过不断努力和创新实现稳健发展的过程。请注意,这些故事并非对AEP公司的具体描述,而是基于假设情境创作的。如果需要关于AEP公司的具体信息,建议查阅相关官方资料或行业报告。

BITECH公司的发展小趣事

AEP公司注重企业文化的建设和团队精神的培养。公司倡导“以人为本”的管理理念,为员工提供良好的工作环境和发展空间。同时,公司还定期举办各种团队活动和文化交流活动,增强员工的凝聚力和归属感。这种积极向上的企业文化和团结一心的团队精神,使得AEP公司在面对市场挑战时能够保持稳健的发展态势。


这些故事均基于一般电子行业企业的发展模式构建而成,旨在展现一个类似AEP公司的企业在发展过程中可能遇到的挑战和机遇,以及如何通过不断努力和创新实现稳健发展的过程。请注意,这些故事并非对AEP公司的具体描述,而是基于假设情境创作的。如果需要关于AEP公司的具体信息,建议查阅相关官方资料或行业报告。

Guerrilla RF公司的发展小趣事
确保硬盘的电源供应稳定可靠,避免电压波动和电流过大。
Carlisle Interconnect Components公司的发展小趣事

在电子行业快速发展的背景下,Carlisle Interconnect Components公司始终将技术研发和持续创新作为公司发展的核心动力。公司投入大量资源用于研发新型连接器技术,不断推出具有更高性能、更小型化、更智能化的产品。这些创新产品的问世,不仅为公司带来了更多的市场机遇,更推动了整个电子连接器行业的进步。

DART(英国达特)公司的发展小趣事

随着技术的不断成熟和产品的不断完善,DART公司开始将目光投向更广阔的市场。他们积极参加各种国际展会,与全球各地的潜在客户建立联系。同时,公司也加大了品牌宣传的力度,通过赞助行业活动、发布技术文章等方式提升品牌知名度和影响力。这些努力使得DART公司的市场份额逐渐扩大,品牌形象也日益深入人心。

Harvatek Corporation公司的发展小趣事

背景:作为电子显示领域的佼佼者,Hantronix不仅关注自身的发展,还积极履行社会责任,为行业的进步和发展做出贡献。

发展:Hantronix通过技术创新和产品升级,推动了电子显示技术的进步和应用范围的扩大。同时,公司还积极参与行业标准的制定和推广工作,为行业的规范化、标准化发展贡献了自己的力量。此外,Hantronix还注重人才培养和团队建设,为行业培养了一大批高素质的专业人才。

以上五个故事虽然基于概括性描述,但均反映了Hantronix公司在电子行业中的发展历程、技术创新、市场拓展、品质保证以及行业影响等方面的实际情况。

问答坊 | AI 解惑

电子设计大赛之“每天一起学”(每天更新)

本帖最后由 paulhyde 于 2014-9-15 04:17 编辑 有喜欢的就顶吧,继续哦!~! 电子设计大赛之“一起学模电”(每天更新) 电子设计大赛之“一起学数电”(每天更新) 今天学了VERILOG,好累啊,虽然没有学习完,还是分享一点吧 [ 本帖最后由 歹 ...…

查看全部问答>

购买监听手机的法律与经济风险不得不防

今天在网上看到这样一个帖子:本人在天成电子监控有限公司购买一部监听手机,说好先付一半的价钱,750元,全额1500元。我给他们公司汇完了钱不给发货,威胁我再把另一半给他再给我发货,如果不给汇款剩下的750元之前预交的750元就不给退了!!说话 ...…

查看全部问答>

串口的中断是怎么被映射到9的?

最近做的JZ4730的一个项目,想要修改自己做的PS2驱动的注册表值,参照了本身程序里的串口的程序,有一个地方不清楚 IF BSP_JZ47_UART0 [HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\Serial]    \"Order\"=dword:0    \"InterfaceT ...…

查看全部问答>

谁有win ce平台上基于SIP的voip客户端程序+源码?!

我的win ce是5.0的,EVC是4.0的,谁有能在evc4.0上的基于SIP的VOIP程序阿!! 很急很急! 有的人请尽快联系我。谢谢大家了! 邮箱yaoty@bit.edu.cn yaoty001@sohu.com …

查看全部问答>

stm32中断抢占问题

一个是外部中断,一个是时钟中断。 设置如下,     //PC7     nvic_init.NVIC_IRQChannel                   = EXTI9_5_IRQChannel;     nvic ...…

查看全部问答>

关于STM32上移植uclinux

关于STM32上移植uclinux看到网上有移植成功的,我也按照官方的文档直接下载了他们提供的烧写文件,我的开发板是ARMFLY(安富莱)的STM32F103ZE-EK 2.0,1M的SRAM,16M NOR Flash,资源上没问题,下载成功后,启动后只一条打印信息:platform Initialis ...…

查看全部问答>

更新下买到的LAUNCHXL-F28027的情况

睡了一觉之后发现已经邮寄了,见下图 因为之前他说的预计运货时间是8月1号,所以一直很期待,没想到真是按时邮了。看来把那个430的launchpad退了是很对的,那个430下单后没货了,显示预计运货时间是8月20号。。所以发了份申请,就退了。。(但是 ...…

查看全部问答>

[转]Powerpcb自带特性阻抗计算的方法

Powerpcb自带特性阻抗计算的方法Powerpcb中本身自带有特性阻抗计算的功能。 方法如下: 1、在Setup/Layer definition中把需要定义为地或电源层相应层定义为Cam Plane。 2、并在Layer Thinkness中设置你的层叠的结构(即各层的厚度、板材的介电常 ...…

查看全部问答>

TI实习生面试二三事

TI实习生招聘计划在全国展开。上周,我有幸参加了TI在武汉举行的实习生及应届生的招聘会。虽结果不得而知,但却让我感触颇深,愿慢慢道来,与大家一同分享TI面试二三事。      3月8号晚,我早早的赶到华科,参加了TI的宣讲会。 ...…

查看全部问答>