芯片解密新唐N7600E003输入捕获解码无线遥控源码 时间:2026-07-15 来源: 芯片解密 浏览:2次 字号:大 中 小 芯片解密新唐N7600E003输入捕获解码无线遥控单片机源程序如下:#include "N76E003.h"#include "Common.h"#include "Delay.h"#include "SFR_Macro.h"#include "Function_define.h"#include <stdio.h>#include <string.h>// Leader code range 13.5ms#define IR_LDC_MAX 14500 //14.5ms#define IR_LDC_MIN 12500 //12.5ms// Bit = 1 range 2.25ms#define IR_BIT_1_MAX 2500 //2.5ms#define IR_BIT_1_MIN 2000 //2ms// Bit = 0 range 1.12ms#define IR_BIT_0_MAX 1250 //1.25ms#define IR_BIT_0_MIN 1000 //1msvolatile uint8_t IR_State = 0; // IR Statevolatile uint8_t IR_LDC_Ready = 0; // LeaDer Code is Readyvolatile uint8_t IR_CTC_Ready = 0; // CusTomer Code is Readyvolatile uint8_t IR_CTC0 = 0; // Received CusTomer Code 0volatile uint8_t IR_CTC1 = 0; // Received CusTomer Code 1volatile uint8_t IR_DAC = 0; // Received DAta Codevolatile uint8_t IR_DAB = 0; // Received DAta Bar codevolatile uint8_t IR_cnt = 0;uint8_t IR_CODE[4] = {0x00, 0x00, 0x00, 0x00};void IrDa_NEC_Rx(uint16_t Capture_Time){ if(IR_State == 0) { IR_LDC_Ready = 0; // Clear LeaDer Code Ready IR_CTC_Ready = 0; // Clear CusTomer Code Ready IR_State++; } // Leader or Repeater code else if(IR_State == 1) { // Leader code if((Capture_Time >= IR_LDC_MIN) && (Capture_Time <= IR_LDC_MAX)) { IR_LDC_Ready = 1; // Set LeaDer Code Ready IR_State++; } else { IR_State = 1; IR_LDC_Ready = 0; // Clear LeaDer Code Ready IR_CTC_Ready = 0; // Clear CusTomer Code Ready } } // Customer code 0 else if((IR_State >= 2 && IR_State < 10) && (IR_LDC_Ready == 1)) { IR_State++; IR_CTC0 = IR_CTC0 >> 1; if((Capture_Time >= IR_BIT_0_MIN) && (Capture_Time <= IR_BIT_0_MAX)) // 1.12ms = 0 IR_CTC0 &= 0x7f; else if((Capture_Time >= IR_BIT_1_MIN) && (Capture_Time <= IR_BIT_1_MAX)) // 2.25ms = 1 IR_CTC0 |= 0x80; else IR_State = 0; } // Customer code 1 else if((IR_State >= 10 && IR_State < 18) && (IR_LDC_Ready == 1)) { IR_State++; IR_CTC1 = IR_CTC1 >> 1; if((Capture_Time >= IR_BIT_0_MIN) && (Capture_Time <= IR_BIT_0_MAX)) // 1.12ms = 0 IR_CTC1 &= 0x7f; else if((Capture_Time >= IR_BIT_1_MIN) && (Capture_Time <= IR_BIT_1_MAX)) // 2.25ms = 1 IR_CTC1 |= 0x80; else IR_State = 0; } // Data else if((IR_State >= 18 && IR_State < 26) && (IR_LDC_Ready == 1)) { IR_State++; IR_DAC = IR_DAC >> 1; if((Capture_Time >= IR_BIT_0_MIN) && (Capture_Time <= IR_BIT_0_MAX)) // 1.12ms = 0 IR_DAC &= 0x7f; else if((Capture_Time >= IR_BIT_1_MIN) && (Capture_Time <= IR_BIT_1_MAX)) // 2.25ms = 1 IR_DAC |= 0x80; else IR_State = 0; } 上一篇:芯片解密华邦W25QXX SPI Flash使用笔记 下一篇:芯片复制STM32单片机对正交编码器的驱动