淘寶店鋪 如何購買 聯系方式
  網站導航:首頁 > 産品列表 >51單片機學習板BH51PRE  

目錄導航

   
  1、産品简介
2、板載資源
3、産品清单
4、實例源代碼
5、如何下載程序到學習板
6、CPU插入40腳鎖緊插座時的方向
7、建立開發環境——工具安裝
8、環境配置——建立第一個工程
   
 
 
百合电子工作室産品 ->51單片機學習板BH51PRE:實例源代碼  
 


  配套光盤提供入門所需的多個實例(有原理說明及相關知識點),幾乎每個實例都有視頻演示(個別以圖片形式呈現)。

源代碼一覽:


配套光盤對實例的分析示例:

  實驗目的:

  利用指令執行時間固定的原理實現精確延時,用數碼管顯示0~9秒計時。  

  在《定時器實驗—利用定時器延時》中我們得用定時器來實現了比較精確的延時,我們還可以利用指令執行時間得到非常精確的延時,其實在之前的好幾個實例中都用到了利用指令執行時間來延時,只是沒有精確進行計算過而已。

  不同的指令執行的時間都固定,比如執行MOVA,#35H這條指令所需時間爲1個機器周期,執行DJNZ指令的時間均爲2個機器周期,而機器周期=12/晶振頻率,如果使用12MHz的晶振,則機器周期=12/12000000=1us。

  我們用一個存儲單元作爲秒計數單元,當一秒鍾到來時,就讓秒計數單元加1,當秒計數達到10時,就自動返回到0,從新計數。一秒時間的産生在這裏我們采用軟件精確延時的方法來完成,經過精確計算得到1秒時間爲0.9983秒(以12MHz晶振爲例)。産生一秒延時的程序如下:

 

 
  1. DELY1S:    
  2.     MOV R5,#100     ;1個機器周期  
  3. D2:    
  4.     MOV R6,#20  ;1個機器周期  
  5. D1:    
  6.     MOV R7,#248     ;1個機器周期  
  7.     DJNZ R7,$   ;DJNZ爲2個機器周期指令,共執行248次,就是2*248=496個機器周期  
  8.     DJNZ R6,D1  ;20*(496+2+1)=9980個機器周期  
  9.     DJNZ R5,D2  ;100*(9980+2+1)=998300個機器周期 

  對于C語言實現軟件延時的難點在于需要確定編譯後生成的代碼是什麽,例如下面一段C程序:

 

 
  1. unsigned char a;   
  2. for(a=3;a>0;a--);  

在Keil環境下編譯後得到如下彙編代碼:

 
  1.    MOV R7,#0x03   
  2. LOOP:   
  3.    DJNZ R7,LOOP  

計算此彙編代碼的執行時間爲10us(晶振11.0592MHz)。

根據這一原理,出現了一些自動生成延時代碼的工具,使用非常方便,這裏給出其中一個工具:單片機工具集

  

輔助資料:

  彙編指令及其執行時間

流程圖:

結果演示:(配套光盤才可播放視頻)

 

 
 
 
本站程序由百合電子工作室開發和維護
Copyright @ baihe electric studio
渝ICP備09006681號-4