51单片机-函数封装

发布者:devilcore最新更新时间:2021-08-16 来源: eefocus关键字:51单片机  主函数 手机看文章 扫描二维码
随时随地手机看文章

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

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


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

 

2.建议

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


常见步骤如下:

2.11.png

2.12.png

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

关键字:51单片机  主函数 引用地址:51单片机-函数封装

上一篇:51单片机-延时1秒
下一篇:51单片机-函数传参调用

小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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