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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機紅外IR程序中有個問題想不通,就是high_t 高電平保持的時間清0的時機

[復制鏈接]
跳轉到指定樓層
樓主
ID:390267 發表于 2018-8-27 01:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
     我的紅外處理程序中有個問題想不通,存放IR_PIN的高電平時間的變量,清0的時機選擇問題。具體請看下注釋,
  1.             void IR_Recevie()                          {
  2.                 static uchar i,j,high_t;
  3.                 uint err_time;
  4.                 high_t=0;
  5.                 Delay8us(875);
  6.                 if(IR_Pin==LOW)
  7.                 {
  8.                         err_time=10;
  9.                         while((IR_Pin==LOW)&&(err_time>0))
  10.                         {
  11.                                 Delay8us(125);                //延時1ms
  12.                                 err_time--;        
  13.                         }
  14.                         if(IR_Pin==HIGH)
  15.                         {
  16.                                 err_time=6;
  17.                                 while((IR_Pin==HIGH)&&(err_time>0))
  18.                                 {
  19.                                         Delay8us(100);                //延時0.8ms
  20.                                         err_time--;
  21.                                 }                                                     for(i=0;i<4;i++)
  22.                                 {
  23.                                         for(j=0;j<8;j++)
  24.                                         {
  25.                                                 err_time=2;
  26.                                                 while((IR_Pin==LOW)&&(err_time>0))
  27.                                                 {
  28.                                                         Delay8us(40);                //延時0.32ms
  29.                                                         err_time--;
  30.                                                 }
  31.                                                 err_time=100;
  32.                                                 while((IR_Pin==HIGH)&&(err_time>0))
  33.                                                 {
  34.                                                         Delay8us(20);                //延時0.16ms
  35.                                                         err_time--;
  36.                                                         high_t++;
  37.                                                         if(high_t>20)  
  38.                                                                 return;
  39.                                                 }
  40.                                                 ir_code[i]=ir_code[i]>>1;
  41.                                                 if(high_t>=6)
  42.                                                 {
  43.                                                         ir_code[i]|=0x80;   [b] //   當high_t 如果在這里面清0,[/b][b]遙控就接受不到正確的值[/b]
  44.                                                 }
  45.                                                high_t=0;
  46.                                         }
  47.                                 }
  48.                         }
  49.                         if(ir_code[2]!=~ir_code[3])
  50.                         return;
  51.                     }
  52.            }
復制代碼



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

使用道具 舉報

沙發
ID:1 發表于 2018-8-27 01:44 | 只看該作者
您這個問題給的信息不全,估計是沒人能回答得了的,先轉移到冷門區了,自行編輯補充一下吧,審核員會幫你重新轉到熱門問答區的
回復

使用道具 舉報

板凳
ID:390267 發表于 2018-8-27 01:55 | 只看該作者
admin 發表于 2018-8-27 01:44
您這個問題給的信息不全,估計是沒人能回答得了的,先轉移到冷門區了,自行編輯補充一下吧,審核員會幫你重 ...

謝謝回復,剛發帖時誤按了TAB鍵。
回復

使用道具 舉報

地板
ID:382067 發表于 2018-8-27 07:41 | 只看該作者
                                                while((IR_Pin==HIGH)&&(err_time>0))
                                                {
                                                        Delay8us(20);                //延時0.16ms
                                                        err_time--;
                                                        high_t++;
                                                        if(high_t>20)  
                                                                return;
                                                }
                                                ir_code[ i]=ir_code[ i]>>1;
                                                if(high_t>=6)
                                                {
                                                        ir_code[ i]|=0x80;    //   當high_t 如果在這里面清0,遙控就接受不到正確的值
                                                }
                                               high_t=0;

這段代碼主要是對接收0和1的區分,high_t時間稍長的是1,所以他設定了一個區間, if(high_t>=6)時,才確定判斷接收到1(隱含條件小于20),但是這個計數high_t在接收完一個bit后要清零,進行下一位的判斷

評分

參與人數 1黑幣 +70 收起 理由
admin + 70 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:390267 發表于 2018-8-27 17:03 來自觸屏版 | 只看該作者
yang陽 發表于 2018-8-27 07:41
while((IR_Pin==HIGH)&&(err_time>0))
                ...

了解了,我今天想到了,提取到0也是要清零的,之前一直糾結在提取1后清零,謝謝指導!
回復

使用道具 舉報

6#
ID:382067 發表于 2018-8-27 21:00 | 只看該作者
祥祥俱樂部 發表于 2018-8-27 17:03
了解了,我今天想到了,提取到0也是要清零的,之前一直糾結在提取1后清零,謝謝指導!

沒事 很高興能幫助到你
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产超碰人人爽人人做人人爱 | 久久久久无码国产精品一区 | 中文字幕亚洲专区 | 成人国产a | 91天堂网| 91在线精品视频 | 亚洲免费毛片 | 欧美精品一区二区在线观看 | 在线色| 亚洲国产精品精华素 | 亚洲成人精品 | 欧美日韩亚洲视频 | 免费一区 | 粉嫩av在线 | 国产精品视频一区二区三 | 国产精品久久久一区二区三区 | 亚洲欧美激情精品一区二区 | 日韩欧美大片在线观看 | 亚洲二区视频 | 午夜欧美日韩 | 瑞克和莫蒂第五季在线观看 | 99精品网| 一区二区不卡视频 | 一区二区国产在线观看 | 国产精品久久久久无码av | 婷婷激情综合 | 亚洲网站在线观看 | 一区二区三区成人 | 国产精品视频97 | 三区在线观看 | 午夜激情免费视频 | 成人在线播放网站 | 久久亚洲一区 | 亚洲精品久久久一区二区三区 | 手机在线一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 欧美精品久久久久久久久久 | 久久躁日日躁aaaaxxxx | 最新国产精品 | 狠狠的日 | 欧美一级淫片免费视频黄 |