<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 第十節:程序從哪里開始,要到哪里去? 程序從哪里開始,要到哪里去?為了讓初學者了解 C 語言程序的執行順序,我把程序分成三個區域:進入主程序前的區域,主程序的初始化區域,主程序的循環區域。當然,這里三個區的分類暫時沒有把中斷程序的情況考慮進去,中斷程序的內容我會在后面相關的章節中再詳細介紹,這里暫時不考慮中斷。 進入主程序前的區域。這是上電后,在單片機執行主程序代碼之前就已經完成了的工作。包括頭文件的包含,宏定義,內存分配這些工作。這部分的內容可以暫時不用去了解,我會在后面的一些章節中陸續深入講解。 主程序的初始化區域。這是上電后,單片機進入主程序后馬上就要執行的程序代碼,這部分區域的代碼有一個特點,大家也必須記住的,就是單片機只執行一次。只要單片機不重啟,不復位,那么上電后這部分的代碼只被執行一次。 主程序的循環區域。單片機在主程序中執行完了初始化區域的代碼,緊接著就進入這片循環區域的代碼。單片機一直在逐行循環執行這些代碼,執行到末尾時又返回到循環區域的開始處繼續開始新一輪的執行,周而復始,往復循環,這就是上電后單片機的最終歸宿,一直處在循環的狀態。 下面我跟大家分析一個程序源代碼的三個區域和執行順序,大家先看中文解釋部分的內容,暫時不用理解每行指令的語法,有個整體的認識就可以了。此源代碼實現的功能是:上電后,蜂鳴器鳴叫一聲就停止(初始化區域),然后看到一個 LED 燈一直在不停的閃爍(循環區域)。 ![](https://img.kancloud.cn/71/78/717819f992e08175c92059fc95ebfd8f_551x475.png) 圖 10.1 本節示例程序匹配的單片機驅動電路原理圖 源代碼如下: ```c #include "REG52.H" // 進入主程序前的區域:頭文件包含 sbit beep_dr = P3^4; // 進入主程序前的區域:宏定義 sbit led_dr = P1^6; // 進入主程序前的區域:宏定義 unsigned long i; // 進入主程序前的區域:內存分配 void main () // 主程序入口,即將進入初始化區域 { beep_dr = 0; // 第一步:初始化區域:蜂鳴器開始鳴叫。 for (i = 0; i < 6250; i++); // 第二步:初始化區域:延時 0.5 秒左右。也就是蜂鳴器鳴叫的持續時間。 beep_dr = 1; // 第三步:初始化區域:蜂鳴器停止鳴叫。 while (1) // 執行完上面的初始化區域,即將進入循環區域 { led_dr = 0; // 第四步:循環區域:LED 開始點亮。 for (i = 0; i<6250; i++); // 第五步:循環區域:延時 0.5 秒左右。也就是 LED 點亮的持續時間。 led_dr = 1; // 第六步:循環區域:LED 開始熄滅。 for (i=0; i < 6250; i++); // 第七步:循環區域:延時 0.5 秒左右。也就是 LED 熄滅的持續時間。 } // 執行完上面第七步后,單片機又馬上返回到上面第四步繼續往下執行。 } ``` 上述代碼執行順序分析: 單片機進入主程序后,從第一步到第三步是屬于初始化區域,只被執行一次。然后進入循環區域,從第四步執行到第七步,執行完第七步之后,馬上又返回上面第四步繼續循環往下執行,單片機一直處于第四步到第七步的往復循環中。可以很清晰的看到,上面的 main 和 while (1) 關鍵詞就是三個區域的邊界分割線。 經過以上的分析,可以看出這三個區域的大概分布如下: ```c //... 進入主程序前的區域 void main () { // 初始化區域 while (1) { // 循環區域 } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看