找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 1635|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

一個(gè)看似簡(jiǎn)單的按鍵問題,卻怎么都弄不明白

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1005338 發(fā)表于 2022-8-7 21:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我想檢測(cè)KEY鍵按下4次后,就打開LED燈,程序如下:
        for(i=4;i>0;i--)          //按KEY鍵4次
        {
                delay_ms(800);
                while(KEY==1);             
                i--;
        }

但程序運(yùn)行非常不穩(wěn)定,實(shí)際KEY鍵可能按下2次或者3次,就打開LED了,延時(shí)800ms的參數(shù)調(diào)整為500或者1000或者2000,都是這樣。

求高手指點(diǎn),這到底是為什么?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1005338 發(fā)表于 2022-8-8 10:07 | 只看該作者
早上剛睡醒想明白了,自己回一下吧,我這個(gè)循環(huán)中用了兩次:i--,所以只按2下開關(guān)就達(dá)到4次效果
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2022-8-9 10:11 | 只看該作者
還不錯(cuò),自己能找到問題。
回復(fù)

使用道具 舉報(bào)

地板
ID:811253 發(fā)表于 2022-8-10 16:39 | 只看該作者
這個(gè)還有問題吧,試一下長(zhǎng)時(shí)間按著不放是不是會(huì)一次就著了。
回復(fù)

使用道具 舉報(bào)

5#
ID:1042823 發(fā)表于 2022-8-24 16:17 | 只看該作者
你這個(gè)用if判斷不是更加嗎?但是要注意消抖
回復(fù)

使用道具 舉報(bào)

6#
ID:372932 發(fā)表于 2022-8-27 13:52 來自觸屏版 | 只看該作者
這種程在實(shí)際應(yīng)用中沒有意義whlie等待松手這個(gè)其它事都別干了。
回復(fù)

使用道具 舉報(bào)

7#
ID:59202 發(fā)表于 2022-8-28 19:47 | 只看該作者
在for循環(huán)語句中嚴(yán)禁手工修改循環(huán)計(jì)數(shù)變量這是必須嚴(yán)格遵守的規(guī)定啊,會(huì)造成不可預(yù)知的錯(cuò)誤的,而且從你的程序看出來你的c語言基礎(chǔ)很差啊,還需要好好修煉學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

8#
ID:170318 發(fā)表于 2022-8-29 08:46 | 只看該作者
換種思維方式實(shí)現(xiàn)該功能吧
回復(fù)

使用道具 舉報(bào)

9#
ID:189206 發(fā)表于 2022-8-29 16:35 | 只看該作者
用了兩次i--,
回復(fù)

使用道具 舉報(bào)

10#
ID:712493 發(fā)表于 2022-8-29 20:52 | 只看該作者
xxxevery 發(fā)表于 2022-8-28 19:47
在for循環(huán)語句中嚴(yán)禁手工修改循環(huán)計(jì)數(shù)變量這是必須嚴(yán)格遵守的規(guī)定啊,會(huì)造成不可預(yù)知的錯(cuò)誤的,而且從你的 ...

能說下這個(gè)規(guī)定出處?另能說明下為什會(huì)造成不可預(yù)知的錯(cuò)誤?這個(gè)for循環(huán)每個(gè)語句執(zhí)行都是串行的,又不是并行,沒超那個(gè)計(jì)數(shù)范圍有什么危險(xiǎn)?話說那個(gè)變量超了范圍可以使用?
回復(fù)

使用道具 舉報(bào)

11#
ID:16671 發(fā)表于 2022-8-29 22:04 | 只看該作者
for中有i--  while中有加了i--,引起
回復(fù)

使用道具 舉報(bào)

12#
ID:59202 發(fā)表于 2022-8-29 22:54 | 只看該作者
在林銳博士的《高質(zhì)量c++/c編程指南》里有講到,因?yàn)閒or語句中的循環(huán)計(jì)數(shù)變量的控制是編譯器自動(dòng)生成的語句,如果我們手動(dòng)又去控制循環(huán)計(jì)數(shù)變量的值就有很大可能與編譯器產(chǎn)生的語句有沖突,造成死循環(huán)或系統(tǒng)崩潰等現(xiàn)象
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表