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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5337|回復(fù): 4
收起左側(cè)

新唐N7600E003輸入捕獲解碼無線遙控源碼

[復(fù)制鏈接]
ID:31094 發(fā)表于 2018-12-14 21:17 | 顯示全部樓層 |閱讀模式
新唐N7600E003輸入捕獲解碼無線遙控

0.png

單片機源程序如下:
  1. #include "N76E003.h"
  2. #include "Common.h"
  3. #include "Delay.h"
  4. #include "SFR_Macro.h"
  5. #include "Function_define.h"
  6. #include <stdio.h>
  7. #include <string.h>



  8. // Leader code range                   13.5ms
  9. #define     IR_LDC_MAX                 14500  //14.5ms
  10. #define     IR_LDC_MIN          12500  //12.5ms

  11. // Bit = 1 range                                        2.25ms
  12. #define     IR_BIT_1_MAX               2500         //2.5ms
  13. #define     IR_BIT_1_MIN        2000         //2ms
  14. // Bit = 0 range                                        1.12ms
  15. #define     IR_BIT_0_MAX              1250         //1.25ms
  16. #define     IR_BIT_0_MIN              1000         //1ms

  17. volatile    uint8_t             IR_State = 0;       // IR State
  18. volatile    uint8_t             IR_LDC_Ready = 0;   // LeaDer Code is Ready
  19. volatile    uint8_t             IR_CTC_Ready = 0;   // CusTomer Code is Ready
  20. volatile    uint8_t             IR_CTC0 = 0;        // Received CusTomer Code 0
  21. volatile    uint8_t             IR_CTC1 = 0;        // Received CusTomer Code 1
  22. volatile    uint8_t             IR_DAC = 0;         // Received DAta Code
  23. volatile    uint8_t             IR_DAB = 0;         // Received DAta Bar code
  24. volatile    uint8_t             IR_cnt = 0;
  25. uint8_t             IR_CODE[4]  =   {0x00, 0x00, 0x00, 0x00};
  26. void IrDa_NEC_Rx(uint16_t Capture_Time)
  27. {
  28.     if(IR_State == 0)
  29.     {
  30.         IR_LDC_Ready = 0;           // Clear LeaDer Code Ready
  31.         IR_CTC_Ready = 0;           // Clear CusTomer Code Ready
  32.         IR_State++;
  33.     }
  34.     // Leader or Repeater code
  35.     else if(IR_State == 1)
  36.     {
  37.         // Leader code
  38.         if((Capture_Time >= IR_LDC_MIN) && (Capture_Time <= IR_LDC_MAX))
  39.         {
  40.             IR_LDC_Ready = 1;       // Set LeaDer Code Ready
  41.             IR_State++;
  42.         }
  43.         else
  44.         {
  45.             IR_State = 1;
  46.             IR_LDC_Ready = 0;           // Clear LeaDer Code Ready
  47.             IR_CTC_Ready = 0;           // Clear CusTomer Code Ready
  48.         }
  49.     }
  50.     // Customer code 0
  51.     else if((IR_State >= 2 && IR_State < 10) && (IR_LDC_Ready == 1))
  52.     {
  53.         IR_State++;
  54.         IR_CTC0 = IR_CTC0 >> 1;
  55.         if((Capture_Time >= IR_BIT_0_MIN) && (Capture_Time <= IR_BIT_0_MAX))          // 1.12ms = 0
  56.             IR_CTC0 &= 0x7f;
  57.         else if((Capture_Time >= IR_BIT_1_MIN) && (Capture_Time <= IR_BIT_1_MAX)) // 2.25ms = 1
  58.             IR_CTC0 |= 0x80;
  59.         else
  60.             IR_State = 0;
  61.     }
  62.     // Customer code 1
  63.     else if((IR_State >= 10 && IR_State < 18) && (IR_LDC_Ready == 1))
  64.     {
  65.         IR_State++;
  66.         IR_CTC1 = IR_CTC1 >> 1;
  67.         if((Capture_Time >= IR_BIT_0_MIN) && (Capture_Time <= IR_BIT_0_MAX))          // 1.12ms = 0
  68.             IR_CTC1 &= 0x7f;
  69.         else if((Capture_Time >= IR_BIT_1_MIN) && (Capture_Time <= IR_BIT_1_MAX)) // 2.25ms = 1
  70.             IR_CTC1 |= 0x80;
  71.         else
  72.             IR_State = 0;
  73.     }
  74.     // Data
  75.     else if((IR_State >= 18 && IR_State < 26) && (IR_LDC_Ready == 1))
  76.     {
  77.         IR_State++;
  78.         IR_DAC = IR_DAC >> 1;
  79.         if((Capture_Time >= IR_BIT_0_MIN) && (Capture_Time <= IR_BIT_0_MAX))          // 1.12ms = 0
  80.             IR_DAC &= 0x7f;
  81.         else if((Capture_Time >= IR_BIT_1_MIN) && (Capture_Time <= IR_BIT_1_MAX))     // 2.25ms = 1
  82.             IR_DAC |= 0x80;
  83.         else
  84.             IR_State = 0;

  85.     }
  86.     // Data bar
  87.     else if((IR_State >= 26 && IR_State < 34) && (IR_LDC_Ready == 1))
  88.     {
  89.         IR_State++;
  90.         IR_DAB = IR_DAB >> 1;
  91.         if((Capture_Time >= IR_BIT_0_MIN) && (Capture_Time <= IR_BIT_0_MAX))      // 1.12ms = 0
  92.             IR_DAB &= 0x7f;
  93.         else if((Capture_Time >= IR_BIT_1_MIN) && (Capture_Time <= IR_BIT_1_MAX))     // 2.25ms = 1
  94.             IR_DAB |= 0x80;
  95.         else
  96.             IR_State = 0;

  97.         if(IR_State == 34)
  98.         {
  99.             if((IR_DAC ^ IR_DAB) == 0xff)
  100.             {
  101.                 IR_LDC_Ready = 0;   // Clear LeaDer Code Ready
  102.                 IR_CODE[0] = IR_CTC0;
  103.                 IR_CODE[1] = IR_CTC1;
  104.                 IR_CODE[2] = IR_DAC;
  105.                 IR_CODE[3] = IR_DAB;
  106.                 IR_cnt++;
  107.                  printf("IR_cnt=%Bd,CTC0=%bX,CTC1=%bX,DAC=%bX,DAB=%bX\n", IR_cnt,IR_CTC0,IR_CTC1,IR_DAC,IR_DAB);
  108.            }
  109.             IR_State = 0;
  110.         }
  111.     }
  112. }
  113. /************************************************************************************************************
  114. *    Timer2 Capture interrupt subroutine
  115. ************************************************************************************************************/
  116. void Capture_ISR (void) interrupt 12
  117. {
  118.                                 uint16_t T2_count;
  119.                                 T2_count =(C0H<<8)+C0L;
  120.                                 IrDa_NEC_Rx(T2_count);
  121.                                 clr_CAPF0;                          // clear capture0 interrupt flag       
  122.                                 clr_TF2;       
  123. }

  124. /************************************************************************************************************
  125. *    Main function
  126. ************************************************************************************************************/
  127. void main(void)
  128. {
  129.         Set_All_GPIO_Quasi_Mode;
  130.         InitialUART0_Timer3(115200);
  131.         P15_Input_Mode;
  132.         P15 = 1;
  133.        
  134.         T2MOD = 0XA9;                        // 定時器2時鐘定義為16分頻,捕獲事件發(fā)生后計數(shù)值自動清0
  135.         T2CON&=~SET_BIT0;  //定義定時器2功能為自動重裝載模式
  136.        
  137.         IC7_P15_CAP0_FallingEdge_Capture;  //下降沿捕獲

  138.         TL2 = 0;
  139.         TH2 = 0;

  140.         set_EA;
  141.         set_ECAP;                                   //Enable Capture interrupt
  142.         set_TR2;                                    //Triger Timer2

  143.        
  144.         while(1);
  145. }
復(fù)制代碼

所有資料51hei提供下載:
N76E003_necR_samplecode_time2_capture.zip (1.11 MB, 下載次數(shù): 69)




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:327071 發(fā)表于 2019-5-20 19:27 | 顯示全部樓層
好東西,正好需要,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

ID:633827 發(fā)表于 2019-11-1 14:09 | 顯示全部樓層
謝謝樓主的無私精神
回復(fù)

使用道具 舉報

ID:615610 發(fā)表于 2020-6-21 16:29 | 顯示全部樓層
真是好東西,謝謝樓主分享
回復(fù)

使用道具 舉報

ID:1017899 發(fā)表于 2022-9-30 14:05 來自觸屏版 | 顯示全部樓層
wxbdcmh 發(fā)表于 2020-6-21 16:29
真是好東西,謝謝樓主分享

你試了沒
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲xx在线 | 欧美色综合天天久久综合精品 | 99久久婷婷国产亚洲终合精品 | 日本高清视频在线播放 | 一级a性色生活片久久毛片 午夜精品在线观看 | 国产日韩久久 | 欧美一区永久视频免费观看 | 逼逼视频 | 日韩视频在线观看一区二区 | 国产精品色 | 蜜桃视频在线观看www社区 | 日韩欧美精品一区 | 日韩一区二区成人 | 91在线一区二区 | 在线观看涩涩视频 | 日韩资源| 最近日韩中文字幕 | 日韩精品二区 | 免费在线观看av片 | 久久精品国产99国产 | 成人啊啊啊 | 午夜免费看 | 亚洲天堂av在线 | 国产精品久久久久久久久久久久 | 精品国产乱码久久久久久88av | 亚洲欧美激情精品一区二区 | 午夜电影网站 | 国产69精品久久99不卡免费版 | 国产精品久久久久久久久久久久久 | 成人激情免费视频 | 欧美日韩在线免费 | 毛片免费在线观看 | 午夜精品导航 | 麻豆久久久久久久久久 | 欧美专区日韩专区 | 一区二区三区中文字幕 | 日本免费视频在线观看 | 中文字幕在线电影观看 | av在线一区二区 | 欧美一级二级视频 | 在线观看黄色 |