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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5037|回復: 0
收起左側

msp430單片機紅外解碼1838.c驅動程序

[復制鏈接]
ID:76127 發表于 2015-4-18 03:45 | 顯示全部樓層 |閱讀模式
  1. //***********************************************************************
  2. //   遙控器鍵碼
  3. //***********************************************************************
  4. #define KEY_0     0x16                 //鍵0
  5. #define KEY_1     0x0C                 //鍵1
  6. #define KEY_2     0x18                 //鍵2
  7. #define KEY_3     0x5E                 //鍵3
  8. #define KEY_4     0x08                 //鍵4
  9. #define KEY_5     0x1C                 //鍵5
  10. #define KEY_6     0x5A                 //鍵6
  11. #define KEY_7     0x42                 //鍵7
  12. #define KEY_8     0x52                 //鍵8
  13. #define KEY_9     0x4A                 //鍵9
  14. #define KEY_POWER 0x45                 //電源
  15. #define KEY_MODE  0x46                 //模式
  16. #define KEY_SOUND 0x47                 //靜音
  17. #define ch_       0x45                //模式
  18. #define ch        0x46
  19. #define cha       0x47                 //模式
  20. uchar KEY_VAL=0;
  21. uchar code_value=0;
  22. uchar key_code[4],code='_';
  23. //***********************************************************************
  24. //               MSP430IO口初始化
  25. //***********************************************************************
  26. /*void Port_Init()
  27. {
  28.   LED8DIR  = 0xFF;                      //設置IO口方向為輸出
  29.   LED8 = 0xFF;                      //P2口初始設置為FF
  30.   
  31.   RED_L;
  32.   RED_IN;
  33. }*/
  34. //*************************************************************************
  35. //   遙控器鍵值賦功能值子程序
  36. //*************************************************************************
  37. void Key_Icode(void)
  38. {
  39.    switch(key_code[2])                    //第3個字節是數據,第4個字節是反碼
  40.    {                                      //為了更穩定,可以加上第4個字節數據的判斷
  41.    case KEY_0:KEY_VAL=0;break;
  42.    case KEY_1:KEY_VAL=1;break;
  43.    case KEY_2:KEY_VAL=2;break;
  44.    case KEY_3:KEY_VAL=3;break;
  45.    case KEY_4:KEY_VAL=4;break;
  46.    case KEY_5:KEY_VAL=5;break;
  47.    case KEY_6:KEY_VAL=6;break;
  48.    case KEY_7:KEY_VAL=7;break;
  49.    case KEY_8:KEY_VAL=8;break;
  50.    case KEY_9:KEY_VAL=9;break;
  51.    case ch_ :code='-';break;
  52.    case ch :code='_';break;
  53.    case cha :code='+';break;
  54.    default:KEY_VAL=10;break;
  55.    }
  56.   
  57. }

  58. //*************************************************************************
  59. //     顯示采集到的數據到LED燈
  60. //*************************************************************************
  61. void Display_Key(uint data_KEY)
  62. {if(code=='_');  
  63.        //鍵值顯示到LED燈上,二進制的形式顯示,只識別0~9
  64. }
  65. //*************************************************************************
  66. // 遙控器解碼子程序
  67. //*************************************************************************
  68. void Red_Code()
  69. {
  70. uchar i,j,k = 0;
  71. for(i = 0;i < 19;i++)
  72. {
  73.   delay_us(400);           //延時400us
  74.   if(RED_R)                //9ms內有高電平,則判斷為干擾,退出處理程序
  75.   {
  76.       return;
  77.   }
  78. }
  79. while(!RED_R);            //等待9ms低電平過去

  80. for(i=0;i<5;i++)          //是否連發碼
  81. {
  82.   delay_us(500);
  83.   if(!RED_R)
  84.    {
  85.      return;
  86.    }
  87. }

  88. while(RED_R);               //等待4.5ms高電平過去
  89. for(i = 0;i < 4;i++)        //接收4個字節的數據
  90. {
  91.   for(j = 0;j < 8;j++)      //每個字節的數據8位
  92.   {
  93.   
  94.    while(!RED_R);           //等待變高電平
  95.    while(RED_R)             //計算高電平時間
  96.    {
  97.     delay_us(100);
  98.     k++;
  99.     if(k >22)               //高電平時間過長,則退出處理程序
  100.     {
  101.      return;        
  102.     }
  103.    
  104.    }
  105.    code_value>>=1;          //接受一位數據
  106.    if(k >= 7)
  107.    {
  108.     code_value|=0x80;       //高電平時間大于0.56,則為數據1
  109.    }
  110.    k = 0;                  //計時清零
  111.   }
  112.   key_code[i]=code_value;  //四個字節的數據
  113. }
  114.   Key_Icode();             //調用賦值函數
  115. //  Display_Key(KEY_VAL);     //顯示按鍵值

  116.   delay_ms(50);
  117. }
  118. //***********************************************************************
  119. //            主程序
  120. //***********************************************************************
  121. /*void main(void)
  122. {   
  123.   WDT_Init();                         //看門狗初始化
  124.   Clock_Init();                       //時鐘初始化
  125.   Port_Init();                        //端口初始化,用于控制IO口輸入或輸出

  126.     while(1)
  127. {
  128.     Red_Code();                       //調用遙控器解碼子程序
  129. }
  130. }*/
復制代碼


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜视频在线免费观看 | 午夜影院网站 | 久久久久久国产精品mv | 久草.com | 久久夜视频 | 欧美在线观看一区二区 | 欧美久久影院 | 国产精品视频久久久 | 亚洲97| 久草综合在线视频 | 久久大陆| 一区二区三区久久久 | 欧美视频在线看 | 国产一区二区三区不卡av | 91精品国产高清一区二区三区 | 日韩av成人在线观看 | 日日夜夜操天天干 | 婷婷成人在线 | 欧美日韩亚洲成人 | 国产免费自拍 | 久久精品综合网 | 蜜桃视频在线观看www社区 | 五月婷婷丁香 | 在线观看视频中文字幕 | 日本午夜免费福利视频 | 91精品国产综合久久精品 | 日韩在线不卡 | 国产精品一区二区免费看 | 国产成人一区二 | 日本 欧美 国产 | 成人h动漫亚洲一区二区 | 欧美精品一区二区三区四区五区 | 超碰人人人人 | 日本精品裸体写真集在线观看 | www.日本三级 | 国产精品乱码一二三区的特点 | 亚洲综合在 | 欧美不卡 | 国产成人福利在线观看 | 黄色一级大片在线免费看产 | 亚洲香蕉在线视频 |