zigbee學習之路 三 按鍵的控制

2022-05-03 17:42:09 字數 1294 閱讀 9810

一.前言

通過前一次的實驗,相信大家都已經對cc2530程式的編寫有了一定的認識,這次我們來操作和實驗的是cc2530上的按鍵模組。

二.原理分析

我們先來看一下按鍵的原理圖:

根據原理圖我們可以得出,按鍵不按下的時候值為0,因為接地,所以,按鍵要被按下的時候,but1和but2輸入值為1,當檢測到它們為1時,按鍵就為按下的狀態,因為p0dir預設的狀態是輸入,所以不需要配置io暫存器,當按鍵按下時,改變led的狀態,來驗證實驗。

三.程式

#define led1 p1_0      //led1為p1_0埠控制

#define led2 p1_1      //led2為p1_1埠控制

#define led3 p1_4      //led3為p1_4埠控制

#define key1 p0_4      //key1為p0_4埠控制

/*****************  函 數 名  : delayms  功能描述  : 毫秒延時  輸入引數  : xms:延時時間,如 i=xms 即延時i毫秒  輸出引數  : none  返 回 值  : none *********************/

void delayms(uint xms)  

/ 函 數 名  : initled  功能描述  : led io初始化  輸入引數  : none  輸出引數  : none  返 回 值  : none *************/

void initled(void)

/********************  函 數 名  : keyscan  功能描述  : 按鍵檢測函式  輸入引數  : none  輸出引數  : none  返 回 值  : 0:無按鍵按下  1:按鍵按下 ***********************/

uchar keyscan(void)

if(key1==0)    

}     return 0;           //無按鍵按下 }

/*************************  函 數 名  : main  功能描述  : key測試(通用io的輸入/輸出使用)  輸入引數  : none   輸出引數  : none  返 回 值  : none **************************/

void main(void)   

四.總結

通過本次實驗,我們學習了如何使用按鍵來控制cc2530的外設,用鍵盤掃瞄函式來檢測按鍵狀態的改變,函式中有呼叫延時函式,用於延時去抖,增加系統的穩定性,可是不斷檢測會造成占用cpu的工作時間,下一講介紹一種更好的方式。

zigbee學習之路 十五 基於協議棧的按鍵實驗

一.前言 經過上次的學習,相信大家已經初步學會使用zigbee協議進行傳送和接受資料了。今天,我們要進行的實驗是按鍵的實驗,學會如何在協議棧裡實現按鍵中斷。二.實驗功能 在協議棧上實現按鍵中斷,but1 按下,led1 閃爍兩次。三.講解 大家還記得,前面做過的按鍵實驗是怎麼配置的嗎,其實基於zig...

zigbee學習之路 一 zigbee介紹

一.前言 二.zigbee定義 三.zigbee特點 下面是zigbee特點的詳細介紹 1 低功耗 兩節五號電池支援長達6 個月到2 年左右的使用時間。2 低成本 由於簡化了協議棧,降低核心的效能要求,以cc2530 為例,核心就是乙個增強型的8051 核心,從而降低了晶元成本。每塊cc2530 大...

我的ZigBee學習之路

每個人總要有自己的一技之長,來體現自己的價值。每個都應該培養自己的以及之長,來實現自己的價值。這個世界是殘酷的,同時也是公平的,天道酬勤 相信付出總會有所回報。時間,是個神奇的東西,它帶走了一切,同時也帶來了一切。它是我們生命中唯一可以把握的事物。假如我們能夠活到90歲,每年365天,每天24小時,...