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

標題: 關于紅外遙控功能中斷問題 [打印本頁]

作者: PEB188    時間: 2021-8-29 19:57
標題: 關于紅外遙控功能中斷問題
紅外接收是用外部中斷IO口實現的,那遙控的功能服務怎么中斷?
按鍵1是正向流水燈,按鍵2是反向流水燈,現在按了1之后只能等流水燈跑完了再按2才有反應。


作者: lkc8210    時間: 2021-8-29 22:20
不要用delay,不要用for
作者: PEB188    時間: 2021-8-29 23:00
lkc8210 發表于 2021-8-29 22:20
不要用delay,不要用for

這不現實啊,循環都不用怎么實現需要的功能。我就沒明白功能服務怎么中斷,物理按鍵可以直接外部中斷,換成紅外該怎么中斷
作者: haistart    時間: 2021-8-29 23:13
那是因為你是一個循環就跑完整個流水燈的過程,你可以把流水燈的控制分在所有循環里,每次循環根據變量不同的狀態決定io的操作邏輯。這樣你收到新指令就可以在下一個小循環做出改變,而不需要等很久。這就是硬件定時器的作用。
作者: PEB188    時間: 2021-8-29 23:50
haistart 發表于 2021-8-29 23:13
那是因為你是一個循環就跑完整個流水燈的過程,你可以把流水燈的控制分在所有循環里,每次循環根據變量不同 ...

紅外功能服務函數用的case,流水燈循環中加入鍵碼變量判斷,那怎么跳轉到新變量對應的case那條執行相應代碼
作者: Ledge    時間: 2021-8-29 23:59
你得使用外部觸發,直接跳轉到相應的中斷服務函數中去
作者: lkc8210    時間: 2021-8-30 00:10
PEB188 發表于 2021-8-29 23:00
這不現實啊,循環都不用怎么實現需要的功能。我就沒明白功能服務怎么中斷,物理按鍵可以直接外部中斷,換 ...


  1. while(1){
  2. for(i=0;i<8;i++){
  3. //your code
  4. }
  5. }
復制代碼

改為
  1. i=0;
  2. while(1)
  3. {
  4. //your code
  5. if(++i>=8)i=0;
  6. }
復制代碼

作者: lkc8210    時間: 2021-8-30 00:14
PEB188 發表于 2021-8-29 23:00
這不現實啊,循環都不用怎么實現需要的功能。我就沒明白功能服務怎么中斷,物理按鍵可以直接外部中斷,換 ...

我在你之前的貼子中已回答了類似的例子
作者: PEB188    時間: 2021-8-30 09:14
Ledge 發表于 2021-8-29 23:59
你得使用外部觸發,直接跳轉到相應的中斷服務函數中去

紅外是中斷0觸發解碼的,那解碼后跳入中斷1函數中去,用兩個中斷是嗎?
作者: 188610329    時間: 2021-8-30 14:06
外部中斷響應紅外請求,開定時器中斷,關外部中斷。
定時器中斷解碼,生成鍵碼,關定時器中斷,開外部中斷。
主程序根據鍵碼判斷該干啥。





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