成人app

首頁  /  單片機教程  /  函數封裝  /  

函數封裝

點擊打開在線編譯器,邊學邊練

1.簡潔代碼

單片機程序閱讀一般都是先從主函數開始,上一講的程序寫法在主函數中顯得不簡潔,影響人閱讀代碼的效率。有時我們只需要知道一條語句代表什么意思即可,所以我們把延時部分封裝為一個函數,在主函數里調用函數名表示此處語句延時1秒,這樣可讀性就強的多,也簡潔地多,讀者也可以先了解一下《手把手教你學51單片機》文檔中的4.6節先。

#include <reg52.h> 
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.建議

成人app本節的代碼雖然不多,但是我們也要養成從主函數開始閱讀代碼的習慣,而不是一開始就從頭往下看代碼。比如映入我們第一眼簾的是“void delay()”函數,這時我們不應該進入函數體去閱讀里面的內容,而是馬上找到“void main()”進入閱讀研究里面的代碼,當看到“delay();”時有了注釋我們就有了對這個函數的第一印象,這時再去查看這個函數的內容。

常見步驟如下:

2.11.png

2.12.png

成人app一定要在編譯之后才能按F12。雖然在代碼量少的時候看不出這種方法的優勢,但當我們閱讀別人的代碼時,代碼量一般比較多,用此方法則能快速了解別人所寫程序的層層意思,關于這個習慣,大家學到后面的程序就能領悟了。


本文固定URL:http://hnsaiyang.com/course/183

上一課:延時1秒 下一課:函數傳參調用
第一章 單片機入門
第二章 LED
第三章 蜂鳴器
第四章 數碼管
第五章 獨立按鍵
第六章 多文件編程
第七章 外部中斷
第八章 定時器
第九章 舵機與超聲波模塊
第十章 串口通信
第十一章 1602液晶屏
第十二章 IIC通信
第十三章 紅外遙控與溫度傳感器
第十四章 AD與DA
第十五章 混合例程
第十六章 完結
Dotcpp在線編譯      (登錄可減少運行等待時間)