基于51單片機的流水燈實驗_第1頁
基于51單片機的流水燈實驗_第2頁
基于51單片機的流水燈實驗_第3頁
基于51單片機的流水燈實驗_第4頁
基于51單片機的流水燈實驗_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第4講完成一個流水燈實驗流水燈設計 本講任務: 分別用位輸出操作、移位操作、循環移位操作完成3個典型流水燈的設計。掌握下列C語言知識點:宏定義、函數和函數調用、循環結構、while語句、關系運算和邏輯值 掌握流程圖繪制。 完成閃爍燈的設計。 如 何 完 成 函 數 調 用。完成一個典型流水燈的設計程序就是人的思想的反映,編程最重要的就是你的編程思路,有什么樣的思路就會編出什么樣的程序。 先看上一講的點一個發光管程序: 1、思路分析。流程圖是整理我們思路的好工具,同時也能保證若干年以后你還能輕易看懂自己編寫的程序。 2、程序講解(這個程序是利用了位輸出操作) 。 宏定義 函數和函數調用 如何熄滅

2、發光管 循環結構,while語句詳解、關系運算和邏輯值 如何改變流水燈流動的速度本講需要學習的新知識 數電、模電方面同上一講一樣,有不熟悉的同學也可回看上一講的內容,本講在C語言方面增加了一個新的函數。 延時函數delay for循環語句了解一下延時函數了解一下延時函數 學過匯編你就會知道,每條指令都占一定的時間(或者機器周期)的,如果你讓機器什么都不做,即空指令的話,機器就會延時,然后你在計算好每次延時到底有多長,外面套一個循環(或者多重循環),根據你想要的延時時間即可計算出來循環的次數 ,延時函數基本上都是這種原理,它的參數就是用來控制循環次數的。怎樣編寫精確的延時函數怎樣編寫精確的延時函

3、數實現延時通常有兩種方法:一種是硬件延時,要用到定時器/計數器,這種方法可以提高CPU的工作效率,也能做到精確延時;另一種是軟件延時,這種方法主要采用循環體進行。 1 使用定時器/計數器實現精確延時 2 軟件延時與時間計算 在很多情況下,定時器/計數器經常被用作其他用途,這時候就只能用軟件方法延時。下面介紹幾種軟件延時的方法。 2.1 短暫延時 2.2 在C51中嵌套匯編程序段實現延時 2.3 使用示波器確定延時時間 2.4 使用反匯編工具計算延時時間認識一個認識一個For 循環語句循環語句 For (表達式1;表達式2;表達式3) 語句(內部可為空)執行過程:1.求解一次表達式1.2.求解表

4、達式2,若其值為真(非0 即為真),則執行for中語句。然后執行第3步。否則結束for 語句,直接跳出,不再執行第3步。3.求解表達式3.4.跳到第2步重復執行。一個簡單的延時函數一個簡單的延時函數只需要了解一下,不需要記住,學會調用它就可以了。 /*- 延時函數,含有輸入參數 unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 065535 -*/ void Delay(unsigned int t) while(-t); 了解一下實驗板初始化了解一下實驗板初始化 初始化就是把變量賦為默認值,把控件設為默認狀態,把沒準備的準備好。 但是如果是

5、整個系統初始化那就不一樣了。在匯編語言中,為變量分配空間時,初始化過的變量的初值位于可執行文件代碼段數據后,會占用一定空間,不必要的初始化會造成磁盤空間的浪費。在C語言等高級語言中,為每一個變量賦初值被視為良好的編程習慣,有助于減少出現Bugs的可能性。因此,是否對不必要的變量初始化依情況而定。實驗板初始化函數 只需要了解一下,不需要記住,學會調用它就可以了。 bst-m51.h bst-m51.c宏定義#號是預處理指令,用#開頭。 #define ON (新的名稱 ) 1(原來的名稱) 作用:在程序書寫時可用新的名稱代替原來的名稱書寫,以達到簡化或直觀的效果。編譯器在預處理的時候,自動將新的

6、名稱還原為原來的名稱。 書寫位置:源程序開頭,函數的外面3個流水燈程序框圖函數的引入函數是C語言的主要特點,也是我們學習的一個重點。主函數:主人,只有一個。從家里的電腦壞了說起。在實際編程中,我們會遇到兩種情況:1、需要使用別人的程序,現在是網絡共享時代,要學會在網絡中找到你需要的東西,例如 DS18B20功能函數2、某一段程序會反復用到,這時,我們需要用到函數和函數調用其他功能函數:工人(下屬,可以被調用完成某項工作的人),以有多個,可實現某種功能的一段相對獨立的,可以被調用的代碼 。 相互間的調用關系 注意:我們一般所說函數,指的都是功能函數實現函數調用的前提:調用者必須能看到被調用者調用

7、者必須能看到被調用者程序如何才能找到要 調用的函數呢?有三種方法: 第一種、將被調用函數寫在當前代碼之前。 第二種、將被調用函數的函數聲明寫在當前代碼 之前。 第三種:使用頭文件 。如何完成函數的調用 函數調用: 就是在一個函數體中引用另外一個已經定義的函數 完成函數的調用三種方式: 1、函數語句。函數名(實際參數表);有參調用和無參調用 2、函數表達式。 3、函數參數。函數的調用注意掌握4個要點:被調函數名稱、功能、參數、返回值。函數內部語句不必了解!While循環語句 While (關系表達式或邏輯值); While (關系表達式或邏輯值)一條語句; While (關系表達式或邏輯值) 注

8、意:這里沒有分號 語句1; 語句2; 語句3; 語句n; 特點:先判斷條件表達式,后執行語句。 原則:若條件表達式的值為真,那么執行語句。否則跳出 while 語句。關系運算和邏輯值關系運算12=0 邏輯值:真(1或非0),假(0) 計算機中三種運算千萬不要搞混了: 1、算術運算:參與運算的對象是數,結果也是數,運算符是加減乘除; 2、邏輯運算:參與運算的對象是邏輯量,結果也是邏輯量,運算符是與或非; 3、關系運算:參與運算的對象是數,結果是邏輯量,運算符如下: = = =等于(注意:與賦值符=,完全不同!) != 不等于關系運算和邏輯值關系運算12=0 邏輯值:真(1或非0),假(0) 計算

9、機中三種運算千萬不要搞混了: 1、算術運算:參與運算的對象是數,結果也是數,運算符是加減乘除; 2、邏輯運算:參與運算的對象是邏輯量,結果也是邏輯量,運算符是與或非; 3、關系運算:參與運算的對象是數,結果是邏輯量,運算符如下: = = =等于(注意:與賦值符=,完全不同!) != 不等于如何改變流水燈流動的速度 1、改變調用延時函數的實參。 2、更換不同頻率的晶振。(復習以前講過的時鐘的快慢決定了程序運行速度)左移和右移位運算:按位對變量進行運算。左移和右移屬于位運算。格式:P12;/*右移二位*/一般我們比較多的是對8位無符號數進行移位操作,移出的數丟棄,空位自動補0。注意點:位運算不改變參與運算的變量的值,如果希望改變參與運算的變量的值,應利用相應的賦值操作!用左移編寫第二個流水燈程序。例程循環左移和循環右移C51沒有專門的循環左移和循環右移指令,但我們可以調

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論