娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月08日(星期六)

2020年03月08日 | 基于MSP430F5529的按鍵消抖問題

發布者:BlossomWhisper 來源: eefocus關鍵字:MSP430F5529  按鍵  消抖問題 手機看文章 掃描二維碼
隨時隨地手機看文章

注:板子:MSP430F5529 開發環境:CCSv5


上一篇博文發了按鍵中斷的例程和詳細的注釋,但是好像把程序燒進單片機之后執行效果并不是很好:每按一次按鍵燈的狀態不一定只改變一次,有時燈本來是亮的,按一次后還是亮的;或者按下去之后燈滅了,按鍵抬起來之后燈又亮了。


造成該現象的原因就是按鍵的抖動問題。

按鍵的抖動一般是機械性抖動,當開關斷開或閉合時接觸點處不會一下子接通也不會一下子斷開,而是會產生輕微的抖動導致電路的多次接通和斷開,這個過程大致會持續5ms-10ms。想像一下如果中斷程序是瞬間完成的,那么接觸點每抖動一下都會引起一次中斷,所以就會引起按下按鍵后燈的狀態改變次數是不確定的,也就是效果和我們的預期不一致;由于按下和抬起時都會有抖動產生,所以就會出現按下去燈滅,抬起來燈亮的情況。


知道了抖動產生的原因,我們就可以思考解決的辦法了。


1、延時消抖

很顯然如果中斷的反應不要那么快,是不是就可以避免這個問題了呢?那么有一個辦法就是把中斷程序的執行時間延長,讓中斷執行的慢一點,這樣在第一次觸發中斷后cpu去執行中斷程序,當抖動引發的中斷請求發出時中斷標志位IFG已經被置位所以這些中斷請求相當于被覆蓋掉了,從而達到消抖的目的。

于是我們的中斷程序為


#pragma vector = PORT2_VECTOR

__interrupt void Port_2 () {

__delay_cycles(10000);            //延時消抖 所傳遞參數為cpu周期

P1OUT |= BIT0;

}


似乎是可以的,設置按鍵下降沿觸發中斷,按下后避過抖動時間然后改變燈的狀態,但是還有按鍵抬起呢?抬起時的抖動一樣會觸發中斷,這時我們可以加一條語句


#pragma vector = PORT2_VECTOR

__interrupt void Port_2 () {

__delay_cycles(10000);            //延時消抖 所傳遞參數為cpu周期

if((P2IN & BIT1)==0) {

P1OUT ^= BIT0;

}

P2IFG &= ~BIT1;

}


判斷延時后按鍵處于按下狀態時才改變燈的狀態,否則就不變。

如果想上升沿觸發中斷的話就改一下判斷條件就好了。


2、利用定時器

還有一個辦法,就是不用按鍵去觸發中斷,而是定時檢測按鍵的狀態。

當按鍵按下后,電平狀態為 高—低—高,那么我們就去不停的檢測按鍵的電平狀態,若發現電平由高變低,那么改變燈的狀態就好了。

利用定時器,每隔10ms左右(可調整)去檢測按鍵電平,用兩個變量分別記錄上一次的狀態和本次的狀態,發現符合條件就改變燈的狀態。

具體實現如下:


#include <msp430.h> 

int main(void) {

    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

P1DIR |= BIT0;

P2DIR &= ~BIT1;


P2OUT |= BIT1;

P2REN |= BIT1;

TA0CTL |= TASSEL_1 + MC_1 + TAIE + TACLR;

TA0CCR0 = 32;

__bis_SR_register(LPM4_bits + GIE);

return 0;

}

#pragma vector=TIMER0_A1_VECTOR

__interrupt void TIMER0_A1_ISR() {

static unsigned char key_now=0;

unsigned char key_past=0;

key_past=key_now;

if(P2IN & BIT1) key_now=1;

else key_now=0;

if(key_now==0&&key_past==1) P1OUT ^= BIT0;

TA0CTL &= ~TAIFG;

}


關鍵字:MSP430F5529  按鍵  消抖問題 引用地址:基于MSP430F5529的按鍵消抖問題

上一篇:msp430內置函數總結 __bic_SR_register(),__delay_cycles(x)
下一篇:MSP430F5529時鐘系統深究

推薦閱讀

三星已經正式發布了上半年的旗艦手機Galaxy S9/S9+,而現在三星下半年的旗艦手機Galaxy Note9也已經在研發的最后階段了,目前在網上曝光了首份三星Galaxy Note9的跑分,看起來三星已經將Note9制造出來。這一次曝光的Galaxy Note9跑分為Html5測試,得分522。手機型號為SM-N960U,搭載的是安卓8.0系統,不過Html5測試網站對于三星Galaxy Note9的分辨率...
自2019年1月1日起工信部宣布以強制性措施對M1類車型(M1類車包括駕駛員座位在內,座位數不超過9座的載客車。)安裝胎壓檢測器之后引起了行業人士的廣泛熱議,其中胎壓監測市場一旦爆發,量產是否能夠滿足產能需求也成為了核心討論點。為何胎壓監測話題提了多年量產依舊是隱憂?這又該如何解決呢? 首先為何胎壓監測強制安裝勢在必行?以一組網絡數據為例,在...
在機器人領域,讓機器人保持站立并進行平穩的運動一直是一個棘手的挑戰,因為這需要超高的專業知識和設計水平。盡管一些傳統的機器人能在人工控制的情況下完成站立和運動,但它們的活動范圍也充滿了各種局限性。 為了解決這個問題,Google近日和佐治亞理工學院以及加州大學伯克利分校的研究人員聯合發表了一篇論文,詳細介紹了他們如何成功地構建了一...
從去年的Tiger Lake處理器開始,Intel把Thunderbolt 4(俗稱雷電4)接口作為基礎功能引入,40Gbps的速度遠超當前的USB 3.2/3.1接口,而且數據傳輸、供電、視頻通吃,一個接口統一江湖。 雷電4之后呢?Inte現在已經開始準備繼任者了,還沒明確的命名,估計會叫做Thunderbolt 5(雷電5),Intel客戶計算連接部門IO戰略總監Ben Hacker在接受TH網站采訪時...

史海拾趣

問答坊 | AI 解惑

青越鋒軟件的常見操作問題----(原理圖)

1、為什么我“Open”或是“Import”打不開項目文件啊? 答:我們對于項目文件和單個文件的打開是有區別的。“Open”是打開以我們青越鋒軟件保存的文件,“Import”則是導入其他文件的格式,目前支持ASCII格式。而打開項目則是通過“Project”來處 ...…

查看全部問答∨

誰有電池檢測電路?

我用9V的電池經過處理的5V后給單片機系統供電,但是低于4.1V電路就不能正常工作了,請問各位,誰有電池電量檢測和指示電路,順便說一下原理,對了,不要用很貴的IC芯片,只要能簡單的現實就可以了,謝謝了。 我的郵箱:xfh168168@163.com…

查看全部問答∨

請教一個IAR下malloc的問題

各位大俠, 請教個IAR下malloc的問題。 我的一個zip算法庫是在vc上生成的。然后我把相關壓縮和解壓源碼放到IAR4.42A下,編譯通過。 但是在debug的時候,發現單步走到malloc的地方就有問題了,一直提示我MEM_ERROR,也就是 there was not enough ...…

查看全部問答∨

avr studio怎么進行ADC仿真

各位:      大家有沒有使用avr studio進行調試仿真的, 我是新手,現在想在studio中模擬調試一下AD功能, 請問怎么在studio中給ADC0加上模擬電壓輸入啊! 在線等,知道的可否告知一下。…

查看全部問答∨

新手提問,怎樣在pocket pc 2003 se 仿真程序中進行tcp套接字連接(誰來救救我)

本地開啟一個服務器 試圖編寫一個運行在pda上的程序,在本地測試,用tcp套接字連接本地的服務器(127.0.0.1),用的pocket pc 2003 se 仿真程序 可是怎么也連接不上 隨便寫一個控制臺應用程序都能連上,就是這個連不上!! 是不是要對其進行什 ...…

查看全部問答∨

ting13寫得18b20問題

由于沒法仿真,我用示波器測出來的讀數據間隙全是高電平 經過計算出來的溫度是0度,不知道是什么問題,請高手解答…

查看全部問答∨

如何在WINCE5.0上跑JAVA程序?

需要移植一個JVM嗎?有現成的嗎? 各位大俠幫忙給個思路。…

查看全部問答∨

使用大容量STM32F10xxx的FSMC

這個應用筆記說明了如何使用大容量的STM32F10xxx的FSMC(靈活的靜態存儲器控制器)驅動一組外部的存儲器。文中首先簡要地介紹了STM32F10xxx的FSMC控制器,然后給出了包含典型的FSMC配置的存儲器接口實例,以及時序計算和硬件連接方法。 本應用 ...…

查看全部問答∨

求奉獻

誰有xilinx12.3的破解文件,麻煩奉獻一下,1021079221@qq.com,謝了…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 广德县| 广水市| 监利县| 伊川县| 中阳县| 凯里市| 隆子县| 九江县| 嘉荫县| 那坡县| 沽源县| 鱼台县| 迭部县| 和平县| 临潭县| 抚顺市| 昌邑市| 陕西省| 临西县| 上饶市| 平塘县| 石嘴山市| 木兰县| 郴州市| 略阳县| 忻州市| 新蔡县| 南部县| 南投市| 英超| 彰武县| 亳州市| 濉溪县| 内黄县| 抚远县| 固安县| 井陉县| 黎城县| 尖扎县| 井研县| 合山市|