|
在一个教程里看到了如下的红外代码结构 不解的是表示0 的1.125ms的周期是如何换算成 0x109c0的? 表示1 的2.25ms的周期是如何换算成 0x109c0的?这个和系统时钟有关系么? 请高手赐教! 谢谢!
以脉宽为0.565ms,间隔0.56ms, 周期为1.125ms的组合表示二进制“0”; 以脉宽为0.565ms,间隔1.685ms, 周期为2.25ms的组合表示二进制“1”;
#define Fosc 12000000; //晶振时钟 #define Fcclk (Fosc*5); //系统时钟 #define Fcco (Fcclk*4); #define Fpclk (Fcclk/4)*4;
struct NUMBER { unsigned int Offset; unsigned int Timer; }
struct NUMBER number0 = {0x1000, 0x109c0}; //1.125ms表示0, 0x1000为偏移量 struct NUMBER number1 = {0x1000, 0x20e00}; //2.25ms表示1 struct NUMBER numbers = {0x1000, 0xc6190}; //13.5ms表示码头
if(T>(numbers.Timer - numbers.Offset) && T<(numbers.Timer + numbers.Offset)) 解码位为引导码 if(T>(number0.Timer - number0.Offset) && T<(number0.Timer + number0.Offset)) 解码位为0 if(T>(number1.Timer - number1.Offset) && T<(number1.Timer + number1.Offset)) 解码位为1
|
|