欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于C語言switch語句 [打印本頁]

作者: jianuli    時間: 2020-9-3 09:49
標題: 關于C語言switch語句
大家好呀,這個程序那里有問題,如果想讓S2按下時,怎樣能讓LED1滅呢,新手,謝謝大家啦

IMG_20200903_094833.jpg (1.45 MB, 下載次數: 105)

IMG_20200903_094833.jpg

作者: 山水間    時間: 2020-9-3 10:55
程序不完整,cnt_2是什么也不知道,無法判斷呢
作者: 心有浮生    時間: 2020-9-3 11:15
調試,看看能不能運行到LED=1這句話,如果不能,則表明S2 !=0
作者: 烈火    時間: 2020-9-3 11:16
當S2按下時,讓LED1=1,燈滅
作者: wps10025    時間: 2020-9-3 12:10
子函數你前面聲明了,主程序之后沒寫吧。
作者: jianuli    時間: 2020-9-3 12:49
山水間 發表于 2020-9-3 10:55
程序不完整,cnt_2是什么也不知道,無法判斷呢

cnt_2是表示按鍵按下的次數,按第1次時,LED1亮,按第2次時,LED燈亮
作者: jianuli    時間: 2020-9-3 12:52
心有浮生 發表于 2020-9-3 11:15
調試,看看能不能運行到LED=1這句話,如果不能,則表明S2 !=0

您好,可以運行到的,S2按下時,LED1會暗一點,松開S2后,LED1恢復正常亮度,
作者: jianuli    時間: 2020-9-3 12:53
wps10025 發表于 2020-9-3 12:10
子函數你前面聲明了,主程序之后沒寫吧。

寫啦,再下面呢,就是按鍵的函數
作者: jianuli    時間: 2020-9-3 12:54
烈火 發表于 2020-9-3 11:16
當S2按下時,讓LED1=1,燈滅

圖中就是這樣寫的呀,但LED不為1啊
作者: jianuli    時間: 2020-9-3 12:55
大家幫忙分析下咯,
作者: 心有浮生    時間: 2020-9-3 13:06
jianuli 發表于 2020-9-3 12:52
您好,可以運行到的,S2按下時,LED1會暗一點,松開S2后,LED1恢復正常亮度,

查下電路吧,會暗估計有用,但是哪里出問題了 不會太清楚
作者: zxc05812438    時間: 2020-9-3 13:24
用程序檢測 LED 燈能否正常亮滅,能的話就是你寫的程序有問題,不能就是你電路有問題
作者: 山水間    時間: 2020-9-3 14:09
cnt_2是怎么算的,按下去算一次還是按下去彈起算一次,如果按下去彈起算一次,就不可能出現S2=0的情況,鍵沒有消抖,不知道你的按鍵函數中執行了沒?
作者: #include51.h    時間: 2020-9-3 15:03
本帖最后由 #include51.h 于 2020-9-3 15:13 編輯

你這是邏輯上有問題,case 1:后面應用if........else來寫,還有你那cnt_2值是不是不受影響的變化,這都能導致你得不到你想要的結果,可以用單步查一下你值的變化,要養成用調試查結果的習慣,你現在代碼還少,到你代碼多了出現錯誤時,別人也會看得頭大!說不定就不拱理你了
作者: 奮斗的小白熊    時間: 2020-9-3 15:52
你好  你看看是不是if(S2==0){}與break之間沒有加分號; 如果改良還有問題的話 那就好好看一下硬件

作者: 梁廷明    時間: 2020-9-3 16:33
程序里面怎么還掃描按鍵?
作者: 心有浮生    時間: 2020-9-3 16:37
梁廷明 發表于 2020-9-3 16:33
程序里面怎么還掃描按鍵?

他的掃描函數叫an_jian()吧
作者: jianuli    時間: 2020-9-3 18:20
山水間 發表于 2020-9-3 14:09
cnt_2是怎么算的,按下去算一次還是按下去彈起算一次,如果按下去彈起算一次,就不可能出現S2=0的情況,鍵 ...

您好,按鍵按下彈起時后算一次,也就是松開按鍵后算一次
作者: jianuli    時間: 2020-9-3 18:23
#include51.h 發表于 2020-9-3 15:03
你這是邏輯上有問題,case 1:后面應用if........else來寫,還有你那cnt_2值是不是不受影響的變化,這都能導 ...

您好,cnt_2不受影響的了,按鍵都有消抖處理,我感覺是case后面的語句只受switch判斷控制的了?
作者: jianuli    時間: 2020-9-3 18:25
心有浮生 發表于 2020-9-3 16:37
他的掃描函數叫an_jian()吧

是的,幫忙分析下咯,謝謝
作者: jianuli    時間: 2020-9-3 18:26
是不是case后面的所有語句只受switch判斷控制?
作者: Roy-2010    時間: 2020-9-3 19:15
無需單片機,你做個非門電路就好了。LED短路了之后通過電阻防止電源短路就好了。
作者: 王朗的誘惑    時間: 2020-9-3 22:11
jianuli 發表于 2020-9-3 12:52
您好,可以運行到的,S2按下時,LED1會暗一點,松開S2后,LED1恢復正常亮度,

看樣子是 cnt_2 一直是 1 或者變成 2 的時間不夠, cnt_2 相關的邏輯問題。
作者: jianuli    時間: 2020-9-3 23:28
Roy-2010 發表于 2020-9-3 19:15
無需單片機,你做個非門電路就好了。LED短路了之后通過電阻防止電源短路就好了。

想知道什么原因
作者: jianuli    時間: 2020-9-3 23:29
大家幫忙分析下咯
作者: 山水間    時間: 2020-9-4 08:17
jianuli 發表于 2020-9-3 18:20
您好,按鍵按下彈起時后算一次,也就是松開按鍵后算一次

你的按鍵彈起算一次與按鍵按下去的時候LED1點亮矛盾了,你必須把按鍵彈起算一次改為按鍵按下去算一次才行
作者: TTQ001    時間: 2020-9-4 08:34
您可以根據測試結果更改代碼。 這是一個簡單的代碼,應該很容易調試。
作者: 心有浮生    時間: 2020-9-4 09:22
while里面清空,就留一個滅燈函數,看看能不能滅
作者: jianuli    時間: 2020-9-4 10:58
我感覺和case后面的語句矛盾了,因為case讓LED1=0,而下面我又讓LED1=1,
作者: jianuli    時間: 2020-9-7 21:35
沒有人說說了嗎,還沒有解開我心里的疑團呢呢
作者: ty417502873    時間: 2020-9-8 03:05
上全代碼別人才好分析
作者: 權威人物    時間: 2020-9-8 09:26
我猜是他邏輯有問題,S2按鍵按下會不會改變cnt_2的值?
作者: wlefa    時間: 2020-9-8 10:27
本帖最后由 wlefa 于 2020-9-8 13:11 編輯

恐怕cnt_2值都是1吧,所以程序重復運行在在case 1;當S2按下時,程序循環點亮熄滅(S2按下)LED1,單片機頻率高,所以看到的是LED1會暗一點;松開S2后,程序進不了if(s2==0),不能熄滅,所以LED1常亮;在if(S2==)中加個延時,LED1滅的時間長點,人眼容易分別。在case 1中開頭點亮LED1,緊接著用按鍵熄滅LED1,松開按鍵后第二次循環運行,進入程序就又把LED1點亮了,應該把LED1初始化移出循環,再在循環中改變LED狀態
作者: qq1182560902    時間: 2020-9-8 11:45
不給延時怎么看的出來
作者: jianuli    時間: 2020-9-9 08:45
wlefa 發表于 2020-9-8 10:27
恐怕cnt_2值都是1吧,所以程序重復運行在在case 1;當S2按下時,程序循環點亮熄滅(S2按下)LED1,單片機頻 ...

您好,首先謝謝你的回復,我剛才按你的方法加了延時,真的可以了耶,真是像你說的這樣,反復循環點亮與關斷LED1了,還有個最后問題,哈哈,就是case1:在執行后面語句的時候,是不是類似有{}加在LED1與LED8之間呢,像這樣case1:{LED1=0;LED2=1;LED3=1;LED4=1;LED=1;LED6=1;LED7=1;LE D8=1;}break;
作者: lucasa    時間: 2020-9-11 10:56
連個防抖設計都沒有,直接判斷s2==0??!!
作者: wangyuejia2015    時間: 2020-9-11 11:44
只測led1看能亮滅嗎,因該是硬件問題或者io選擇的問題
作者: w568243975    時間: 2020-9-11 15:44
把if(S2==0){}這段話寫到按鍵函數里面去處理
作者: gfshao    時間: 2020-9-15 14:00
cnt_2是怎么算的,按下去算一次還是按下去彈起算一次,如果按下去彈起算一次,就不可能出現S2=0的情況;前面的條件不滿足,下面的程序是不可能執行的
作者: cdiyy    時間: 2020-9-26 08:47
條件不對啊,嘗試聲明一個全局變量,用變量來記錄按鍵
作者: JXP0716    時間: 2020-9-26 15:46
學到了
作者: 長風007    時間: 2020-9-26 15:52
貼一個相對完整的上來,要不你就看清楚定義,分析一下是否能執行到LED=1;這里。
作者: xiong2018    時間: 2020-9-29 08:40
你的switch語句缺default: breaks;而且編程風格不是很好,一行應該就一個;語句的;
作者: i_could_have    時間: 2020-10-22 18:26
本帖最后由 i_could_have 于 2020-10-22 18:41 編輯
jianuli 發表于 2020-9-3 12:54
圖中就是這樣寫的呀,但LED不為1啊

按下會暗是因為程序一直在獲取按鍵輸入,開始時燈亮,你按下S2燈滅,之后再次獲取按鍵信息,case1還是先亮,之后檢測到S2按下,又滅。這樣閃爍,但是閃的頻率很快,所以看到的就是變暗。你可以在if里加個延時,那樣就會看到閃爍了
作者: univers    時間: 2020-10-26 14:03
看這序好象是亂套的。還不如先寫一個小函數,先在軟件里,自己調試一下。這樣才能學會。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1