msp430g2231 驱动红外线HS0038 的程序谁有

2019-03-24 15:00发布

我看到51单片机 keilc的程序是这样的 自己不会改
void IR_IN() interrupt 2 using 0{  unsigned char j,k,N=0;     EX1 = 0;   //EX1 = 0为外部中断允许 delay(15); if (IRIN==1)      { EX1 =1;   return;  }                            //确认IR信号出现  while (!IRIN)            //等IR变为高电平,跳过9ms的前导低电平信号。    {delay(1);}
 for (j=0;j<4;j++)         //收集四组数据 {   for (k=0;k<8;k++)        //每组数据有8位  {   while (IRIN)            //等 IR 变为低电平,跳过4.5ms的前导高电平信号。     {delay(1);}    while (!IRIN)          //等 IR 变为高电平     {delay(1);}     while (IRIN)           //计算IR高电平时长      {    delay(1);    N++;               if (N>=30) { EX1=1; return;}                  //0.14ms计数过长自动离开。      }                        //高电平计数完毕                     IRCOM[j]=IRCOM[j] >> 1;                  //数据最高位补“0”     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //数据最高位补“1”     N=0;  }//end for k }//end for j      if (IRCOM[2]!=~IRCOM[3])   { EX1=1;//外部中断允许     return; }
   IRCOM[5]=IRCOM[2] & 0x0F;     //取键码的低四位   IRCOM[6]=IRCOM[2] >> 4;       //右移4次,高四位变为低四位
   if(IRCOM[5]>9)    { IRCOM[5]=IRCOM[5]+0x37;}   else  IRCOM[5]=IRCOM[5]+0x30;
   if(IRCOM[6]>9)    { IRCOM[6]=IRCOM[6]+0x37;}   else  IRCOM[6]=IRCOM[6]+0x30;//////////////////////////L1602_char(2,10,IRCOM[5]);L1602_char(2,9,IRCOM[6]);     //beep();     EX1 = 1; } 


、、EX1 那些 在430上应该怎么用 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
鸵鸟蝈蝈
2019-03-24 23:29
< EX1 = 1;
__DINT();

EX1 = 0;
__EINT();

一周热门 更多>

相关问题

    相关文章