實驗3按鍵輪詢_第1頁
實驗3按鍵輪詢_第2頁
實驗3按鍵輪詢_第3頁
實驗3按鍵輪詢_第4頁
實驗3按鍵輪詢_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、無錫谷雨電子實驗三按鍵實驗(輪詢),按鍵控制 LED 亮滅2014/1/27在此處鍵入文檔的摘要。摘要通常是對文檔內容的簡短總結。在此處鍵入文檔的摘要。摘要通常是對文檔內容的簡短總結。目錄前言2必要條件2原理圖2編程參考3源碼分析46 編譯調試67 使用 Flash Programmer程序71 前言人機交互最簡單的方式是按鍵,只要程序寫的足夠好,幾個按鍵就可以實現非常復雜的輸入。SmartRF 開發(fā)板上有兩種按鍵,一個是 Joystick 五向按鍵,另外一個是普通按鍵,本實驗實現的是普通按鍵實驗(輪詢)2 必要條件A 硬件1、 SmartRF 系列開發(fā)板,CC2530 或者 CC25312、

2、 CC-Debugger 仿真器B1、 IAR for 8051 開發(fā)環(huán)境,版本:8.102、 Flash Programmer 固件燒寫。3 原理圖當 P1.0當 P1.1當 P1.4是 LED1 亮,低電平是 LED1 滅;是 LED2 亮,低電平是 LED2 滅;是 LED3 亮,低電平是 LED3 滅;S1 按鍵按下時,P0.1 為,S1 按鍵恢復時,P0.1 為低電平(常態(tài))。4 編程參考和一般的單片機一樣,控制 GPIO,需要配置 GPIO 相關的寄存器,完整冊,請參:目錄下的 CC253x4x User Guide. (Rev. C).pdf,對應的 CC2530 的中文手冊。C

3、C254xEK宏定義函數 BV()。#define BV(x)1x;/將 1每個位。x 位,這樣可以非常方便而且非常清晰的控制寄存器的/ P1.0 定義為輸出P1DIR |= BV(0);P1SEL &= BV(0);/ P1.0 定義為一般 GPIO/設置 P0.1 為普通 IO 口P0SEL &= BV(1);/按鍵接在 P0.1 口上,設 P0.1 為輸入模式/設置 P0.1 輸入為上拉下拉模式/設置 P0.1 下拉,其實外部已經有下拉電路。P0DIR &= BV(1);P0INP &= BV(1); P2INP |= BV(5);注意上面的表格,每個寄存器中都有一個默認值,上面表格中

4、Reset 就是寄存器的默認值。TIPS:在協(xié)議棧中,用到了非常多的宏定義函數,宏定義不但能保持代碼簡介,而且代碼更容易,建議大家在編碼過程中多使用效率高的宏定義。5 源碼分析打開實驗 3 按鍵實驗key 工程(雙擊 Key.eww 打開)#include /CC2531 也可以使用該頭文件/Ghostyu SmartRF 開發(fā)板實驗/按鍵實驗(輪詢)/技術支持:/無錫谷雨電子typedef unsigned char u8;typedef unsigned shortu16;/定義 P1.0 口為 LED1 控制端/定義 P0.1 為按鍵輸入端口#define LED1 P1_0#defin

5、e KEY1 P0_1/*常用宏定義*/ #define BV(x) (1(x)/*名稱: DelayMS()功能: 毫秒延時,系統(tǒng)時鐘不配置時默認使用16M參數: msec 延時參數,注意,最大數值為 65536ms出口參數: 無*/ void DelayMS(u16 msec)u16 i,j;for (i=0; imsec; i+)for (j=0; j536; j+);/*名稱: InitLed()功能:參數:出口參數:設置 LED 相應的 IO 口無無*/void InitLed(void)/ P1.0 定義為輸出/ LED1 燈熄滅P1DIR |= BV(0);LED1 = 0;/*

6、名稱: InitKey()功能:參數:出口參數:設置按鍵相應的 IO 口無無*/void InitKey(void)/設置 P0.1 為普通 IO 口/按鍵接在 P0.1 口上,設 P0.1 為輸入模式/設置 P0.1 輸入為上拉下拉模式/設置 P0.1 下拉,其實外部已經有下拉電路。P0SEL &= BV(1);P0DIR &= BV(1); P0INP &= BV(1); P2INP |= BV(5);/*名稱: KeyPoll()功能:參數: 無按鍵狀態(tài)出口參數: 0 為抬起1 為按鍵按下*/u8 KeyPoll(void)if (KEY1 = 1)DelayMS(10);/去抖動延時 if (KEY1 = 1)while(KEY1);/是否持續(xù)按下/有按鍵按下return 1;/無按鍵按下return 0;void main(void)InitLed(); InitKey();/設置 LED1 相應的 IO 口/設置 S1 相應的 IO 口while(1)if (KeyPoll()/按鍵按下則改變 LED 狀態(tài)LED1 = LED1;6 編譯調試根據實驗 1 中的方法調試程序,若有語法錯誤,根據提示修改語句。按

溫馨提示

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

最新文檔

評論

0/150

提交評論