久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2441|回復: 12
打印 上一主題 下一主題
收起左側

想通過單片機+紅外控制流水燈的模式切換

[復制鏈接]
跳轉到指定樓層
樓主
ID:960619 發表于 2021-8-30 11:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
外部中斷紅外接收進來進行解碼,根據解碼的鍵值判斷執行哪條程序。
.怎樣一直掃描紅外鍵碼的變動,鍵碼一變就跳轉執行相應代碼,在定時中斷中掃描嗎?


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:776954 發表于 2021-8-30 13:18 | 只看該作者
如果不是紅外線,而直接是按鍵切換狀態的話, 你會做嗎?仔細想想他們的區別
回復

使用道具 舉報

板凳
ID:161164 發表于 2021-8-30 13:44 | 只看該作者
不要用delay,不要用for


  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. }
復制代碼
回復

使用道具 舉報

地板
ID:624769 發表于 2021-8-30 13:44 | 只看該作者
先假定,紅外接收解碼,你已經會了,
又假定,根據外部中斷切換主程序分支,你也會了(一般是定義變量Mode, 然后主程序Switch(mode) 走不同的分支).

那么,把紅外線接受頭的引腳連接在外部中斷口。當紅外接受頭收到信號,開始動作,則觸發外部中斷。
然后,外部中斷程序開啟定時器中斷,并且關閉自己的外部中斷。
隨后,定時器中斷負責處理紅外接受頭收到的信號。處理完畢后,把鍵值保存,并置位標志位(主程序根據標志位判斷是否需要進行模式切換)。
同時關閉定時器,打開外部中斷(為下次接受信號準備)。
這么寫應該能理解吧?
回復

使用道具 舉報

5#
ID:96072 發表于 2021-8-30 13:58 | 只看該作者
紅外遙控接收代碼,現成的
回復

使用道具 舉報

6#
ID:960619 發表于 2021-8-30 16:58 | 只看該作者
188610329 發表于 2021-8-30 13:44
先假定,紅外接收解碼,你已經會了,
又假定,根據外部中斷切換主程序分支,你也會了(一般是定義變量Mode, 然 ...

還沒同時用過兩個中斷。我理解的你說的意思是紅外接收是最優先中斷0,紅外解碼的程序放到定時中斷1里面執行,外部中斷每成功接收一次信號先關閉外部中斷,等定時中斷處理完解碼再重新打開外部中斷接收下一次信號。然后根據定時中斷里的標志位回到Switch里面走相應程序。關于“把鍵值保存,并置位標志位”,根據不同鍵碼置不同標志位,然后賦值給mode嗎
回復

使用道具 舉報

7#
ID:960619 發表于 2021-8-30 17:01 | 只看該作者
HEIZI555 發表于 2021-8-30 13:58
紅外遙控接收代碼,現成的

紅外解碼寫好了,現要用紅外遙控實現不同的功能,包括對電機的控制啊,燈的亮度,燈的狀態等
回復

使用道具 舉報

8#
ID:960619 發表于 2021-8-30 17:03 | 只看該作者
lkc8210 發表于 2021-8-30 13:44
不要用delay,不要用for


這個好像沒啥關系吧,執行中斷,都能跳出來,或是在循環里放按鍵掃描功能
回復

使用道具 舉報

9#
ID:415064 發表于 2021-8-30 18:06 | 只看該作者
baobao125 發表于 2021-8-30 17:01
紅外解碼寫好了,現要用紅外遙控實現不同的功能,包括對電機的控制啊,燈的亮度,燈的狀態等

按鍵的會寫了,紅外的也就會寫了。無外乎把紅外套按鍵的邏輯
回復

使用道具 舉報

10#
ID:161164 發表于 2021-8-30 19:48 來自觸屏版 | 只看該作者
baobao125 發表于 2021-8-30 17:03
這個好像沒啥關系吧,執行中斷,都能跳出來,或是在循環里放按鍵掃描功能

那還有什么問題?
Just do it~!
回復

使用道具 舉報

11#
ID:624769 發表于 2021-8-31 20:42 | 只看該作者
baobao125 發表于 2021-8-30 16:58
還沒同時用過兩個中斷。我理解的你說的意思是紅外接收是最優先中斷0,紅外解碼的程序放到定時中斷1里面執 ...

額,你可能稍稍有點誤會我的意思了。
我的意思是,沒必要定時器常開一直等待按鍵,紅外接受信號時有個頭信號的,此時會產生一個下降沿,利用這個下降沿觸發外部中斷,來打開定時器,接受及解碼按鍵。
當然,你要嫌麻煩也不怕消耗資源,可以不用這個外部中斷,直接定時器常開24小時等待紅外信號也可以。
然后就是和你理解的差不多,定時器中斷獲取鍵值存入變量Key. 然后main程序根據這個變量Key,選擇執行哪一段代碼。需要注意的是,如果你希望這個操作可以被打斷的話,就要分段執行,比如你要跑馬燈右移8次,不要一次就讓他for循環跑完,你通過一個變量比如 remain , 賦值8,然后每次進入這個分支 if(--remain > 0) 右移一次。那么,你就要8次循環主程序才會跑完這個右移過程,這個過程中,只要接受到新的按鍵,鍵值改變了,就能在分支入口選擇mode的地方打斷之前那個分支的操作了。理解我的意思不?
回復

使用道具 舉報

12#
ID:390416 發表于 2021-9-1 08:22 | 只看該作者
先學會紅外解碼  
《人人學會單片機》 第28、第29課講了紅外解碼教程。A站可以觀看、原子哥網也可以免費觀看。
回復

使用道具 舉報

13#
ID:342954 發表于 2021-9-1 09:19 | 只看該作者
如果你紅外接收程序能寫出來,那后面的程序應不是難事
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级欧美 | 亚洲午夜电影 | 日本人爽p大片免费看 | 三级av在线 | 国产婷婷精品 | 日韩一区二区不卡 | 超碰日韩 | 欧美精品综合在线 | 亚洲午夜av久久乱码 | 香蕉视频一区二区 | 国产一区二区免费 | 四色永久 | 欧美日韩在线精品 | 欧美精品欧美精品系列 | a在线视频观看 | 99pao成人国产永久免费视频 | 99国产精品久久久久 | 一区二区在线观看免费视频 | 91精品国产91久久综合桃花 | 操夜夜| 中文天堂在线一区 | 色婷婷一区二区三区四区 | 亚洲影音先锋 | 欧美日韩精品一区二区三区四区 | 毛片一级片 | 国产一级一级国产 | 国产一极毛片 | 午夜免费看视频 | 免费亚洲一区二区 | 免费观看成人av | 久久久久国产一区二区三区四区 | 97国产一区二区精品久久呦 | 欧美不卡视频一区发布 | 久久久激情视频 | 99国内精品| 国产美女在线观看 | 国产精品久久二区 | 久久一视频| 国产一区二区免费 | 成年女人免费v片 | 免费黄色成人 |