/* EV1527 发射 接270K电阻时,查资料表得16LCK 12V时 周期为1200US 也就是4LCK=300US 12LCK=900US 同步头 4LCK(300US)高 低124CLK(9300US) 1 : 12CLK(900US)为高,4LCK(300US)为低 0 : 4LCK(300US)为高,12CLK(900US)为低 */ /**************** INT2中断接收函数 *************************/ void Ext_INT2 (void) interrupt INT2_VECTOR // { EA=0; cnt=0; //INT2_Disable(); //关闭按键中断使能 while(INT2_K2==0) //124clk同步低电平 9.3ms { Delay30us(); //精准延时 cnt++; if(cnt>400&&(cnt<200)) //低电平过长或过短都退出 { EA=1; return; } } //开始数据 for(j=0;j<3;j++) { for(i=0;i<8;i++) { cnt=0; while(INT2_K2==1); //跳过高电平 while(INT2_K2==0) // 计算低电平 { Delay30us(); cnt++; if(cnt>40) //低电平过长,跳出 { EA=1; return; } } D[j]<<=1; //左移 if(cnt>12)D[j]&=0xfe; //低电平12*30>360US 为0 上一步已经是大于40跳出,所以不计算超值 else if(cnt<=12&&(cnt>7)) //低电平12*30<=360US 并且宽度要大于30*7=210US 为1 D[j]|=1; else //否则 { EA=1; return; } } } Uart1_SendChar(D[0]); //测试输出 Uart1_SendChar(D[1]); Uart1_SendChar(D[2]); EA=1; }