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

標(biāo)題: 想通過單片機(jī)+紅外控制流水燈的模式切換 [打印本頁]

作者: baobao125    時(shí)間: 2021-8-30 11:00
標(biāo)題: 想通過單片機(jī)+紅外控制流水燈的模式切換
外部中斷紅外接收進(jìn)來進(jìn)行解碼,根據(jù)解碼的鍵值判斷執(zhí)行哪條程序。
.怎樣一直掃描紅外鍵碼的變動,鍵碼一變就跳轉(zhuǎn)執(zhí)行相應(yīng)代碼,在定時(shí)中斷中掃描嗎?



作者: Hui_Min    時(shí)間: 2021-8-30 13:18
如果不是紅外線,而直接是按鍵切換狀態(tài)的話, 你會做嗎?仔細(xì)想想他們的區(qū)別
作者: lkc8210    時(shí)間: 2021-8-30 13:44
不要用delay,不要用for


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

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

作者: 188610329    時(shí)間: 2021-8-30 13:44
先假定,紅外接收解碼,你已經(jīng)會了,
又假定,根據(jù)外部中斷切換主程序分支,你也會了(一般是定義變量Mode, 然后主程序Switch(mode) 走不同的分支).

那么,把紅外線接受頭的引腳連接在外部中斷口。當(dāng)紅外接受頭收到信號,開始動作,則觸發(fā)外部中斷。
然后,外部中斷程序開啟定時(shí)器中斷,并且關(guān)閉自己的外部中斷。
隨后,定時(shí)器中斷負(fù)責(zé)處理紅外接受頭收到的信號。處理完畢后,把鍵值保存,并置位標(biāo)志位(主程序根據(jù)標(biāo)志位判斷是否需要進(jìn)行模式切換)。
同時(shí)關(guān)閉定時(shí)器,打開外部中斷(為下次接受信號準(zhǔn)備)。
這么寫應(yīng)該能理解吧?
作者: HEIZI555    時(shí)間: 2021-8-30 13:58
紅外遙控接收代碼,現(xiàn)成的
作者: baobao125    時(shí)間: 2021-8-30 16:58
188610329 發(fā)表于 2021-8-30 13:44
先假定,紅外接收解碼,你已經(jīng)會了,
又假定,根據(jù)外部中斷切換主程序分支,你也會了(一般是定義變量Mode, 然 ...

還沒同時(shí)用過兩個(gè)中斷。我理解的你說的意思是紅外接收是最優(yōu)先中斷0,紅外解碼的程序放到定時(shí)中斷1里面執(zhí)行,外部中斷每成功接收一次信號先關(guān)閉外部中斷,等定時(shí)中斷處理完解碼再重新打開外部中斷接收下一次信號。然后根據(jù)定時(shí)中斷里的標(biāo)志位回到Switch里面走相應(yīng)程序。關(guān)于“把鍵值保存,并置位標(biāo)志位”,根據(jù)不同鍵碼置不同標(biāo)志位,然后賦值給mode嗎
作者: baobao125    時(shí)間: 2021-8-30 17:01
HEIZI555 發(fā)表于 2021-8-30 13:58
紅外遙控接收代碼,現(xiàn)成的

紅外解碼寫好了,現(xiàn)要用紅外遙控實(shí)現(xiàn)不同的功能,包括對電機(jī)的控制啊,燈的亮度,燈的狀態(tài)等
作者: baobao125    時(shí)間: 2021-8-30 17:03
lkc8210 發(fā)表于 2021-8-30 13:44
不要用delay,不要用for


這個(gè)好像沒啥關(guān)系吧,執(zhí)行中斷,都能跳出來,或是在循環(huán)里放按鍵掃描功能
作者: wojiaoguogai    時(shí)間: 2021-8-30 18:06
baobao125 發(fā)表于 2021-8-30 17:01
紅外解碼寫好了,現(xiàn)要用紅外遙控實(shí)現(xiàn)不同的功能,包括對電機(jī)的控制啊,燈的亮度,燈的狀態(tài)等

按鍵的會寫了,紅外的也就會寫了。無外乎把紅外套按鍵的邏輯
作者: lkc8210    時(shí)間: 2021-8-30 19:48
baobao125 發(fā)表于 2021-8-30 17:03
這個(gè)好像沒啥關(guān)系吧,執(zhí)行中斷,都能跳出來,或是在循環(huán)里放按鍵掃描功能

那還有什么問題?
Just do it~!
作者: 188610329    時(shí)間: 2021-8-31 20:42
baobao125 發(fā)表于 2021-8-30 16:58
還沒同時(shí)用過兩個(gè)中斷。我理解的你說的意思是紅外接收是最優(yōu)先中斷0,紅外解碼的程序放到定時(shí)中斷1里面執(zhí) ...

額,你可能稍稍有點(diǎn)誤會我的意思了。
我的意思是,沒必要定時(shí)器常開一直等待按鍵,紅外接受信號時(shí)有個(gè)頭信號的,此時(shí)會產(chǎn)生一個(gè)下降沿,利用這個(gè)下降沿觸發(fā)外部中斷,來打開定時(shí)器,接受及解碼按鍵。
當(dāng)然,你要嫌麻煩也不怕消耗資源,可以不用這個(gè)外部中斷,直接定時(shí)器常開24小時(shí)等待紅外信號也可以。
然后就是和你理解的差不多,定時(shí)器中斷獲取鍵值存入變量Key. 然后main程序根據(jù)這個(gè)變量Key,選擇執(zhí)行哪一段代碼。需要注意的是,如果你希望這個(gè)操作可以被打斷的話,就要分段執(zhí)行,比如你要跑馬燈右移8次,不要一次就讓他for循環(huán)跑完,你通過一個(gè)變量比如 remain , 賦值8,然后每次進(jìn)入這個(gè)分支 if(--remain > 0) 右移一次。那么,你就要8次循環(huán)主程序才會跑完這個(gè)右移過程,這個(gè)過程中,只要接受到新的按鍵,鍵值改變了,就能在分支入口選擇mode的地方打斷之前那個(gè)分支的操作了。理解我的意思不?
作者: 人人學(xué)會單片機(jī)    時(shí)間: 2021-9-1 08:22
先學(xué)會紅外解碼  
《人人學(xué)會單片機(jī)》 第28、第29課講了紅外解碼教程。A站可以觀看、原子哥網(wǎng)也可以免費(fèi)觀看。
作者: hejianmin    時(shí)間: 2021-9-1 09:19
如果你紅外接收程序能寫出來,那后面的程序應(yīng)不是難事




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