锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

红外遥控控制电机的程序

时间:2024-06-11 15:37:11

//***************************************************************** //author:su and me //date:2008-12-22 //一电视机万能遥控器按一电机正转,按二反转,按三电机停转,遥控解码程序,网上 //程序,加上修改和补充,成形。 //***************************************************************** #include < at89x52.h> #define byte unsigned char #define dbyte unsigned int #define DELAY854USdelay(21) #define DELAY934USdelay(23) #define DELAY1014USdelay(25) #define DELAY2414USdelay(60) sbit  hs0038_io=P3^2; sbit P20=P2^0; sbit P21=P2^1; sbit P22=P2^2; sbit P23=P2^3; byte  temp_data; byte  x,y,z; byte  data decode[4];//定义4个数组,用来存储代码 void delay(byte temp)//精确延时时间time=(40*temp+14)us { byte j,i; for(j=0;j< temp;j++) for(i=0;i< 10;i++); } void mov_zhen() { P20=1;//6 P21=0;//8 P22=0;//7 P23=0;//5 } void mov_fan() { P20=0; P21=0; P22=1; P23=0; } void mov_stop() { P20=0; P21=0; P22=0; P23=0; } void main() { IT0=1; EX0=1; EA=1; temp_data=0; while(1) {     if (decode[2]==24)mov_zhen();     if (decode[2]==25)mov_fan();     if (decode[2]==26)mov_stop(); } void t0(void) interrupt 0 using 2//外部中断0的函数 { EA=0;     for(x=0;x< 10;x++)//九毫秒分为10个0.9毫秒0     {      //延时0.854毫秒      DELAY854US; if (hs0038_io==1) //每隔0.854毫秒检测一次 { x=10;//如果检测到高电平,读取失败 break;//推出 }      else if(x==9)//如果达到10个0.854毫秒的时间         {             while(hs0038_io==0);//如果此时是低电平等待             DELAY2414US;延时2.414毫秒             if(hs0038_io==0)//如果检测到低电平                break;//退出             else                DELAY2414US;//延时2.414毫秒 //#####################################################################             for(y=0;y< 4;y++)//引导码正确,开始读取数据,总共四个字节             { //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@             for(z=0;z< 8;z++)//每个字节为八位                 {                 while(hs0038_io==0);//如果为低电平则等待                 //延时0.911毫秒。0.9毫秒约为0.6毫秒和1.6毫秒的平均值                 DELAY854US;                 if(hs0038_io)                 {                    temp_data|=(1<< z);//如果读到高电平,则置位相应位                    DELAY1014US;                  }                  else                    temp_data&=(~(1<< z));                 } //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@               decode[y]=temp_data;//把读到的一个字节保存在数组当中              } //#####################################################################        }    }    EA=1; }   
	  	        
锐单商城-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。锐单自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章