TI中文支持网
TI专业的中文技术问题搜集分享网站

msp430g2553红外遥控程序

用g2553单片机控制红外接收发送程序使用不了,怎么样修改;

 

#include <msp430g2553.h>
#define Ir_Pin  (P1IN & 0X02)                        //定义红外接收头端口

unsigned char Ir_Buf[4];                             // 用于保存解码结果

unsigned int Ir_Get_Low();
unsigned int Ir_Get_High();
 
void main(void)
{
     unsigned int temp,delay;
     char i,j;

     WDTCTL = WDTPW + WDTHOLD;                       // 关闭看门狗
     BCSCTL1 &= ~XT2OFF;                             // XT2on
     BCSCTL2 |= SELM1 + SELS;                        // MCLK为8M
     for(delay=5000;delay>0;delay–);
     IFG1 &=~OFIFG;

     CCR0=0XFFFF;
     P1DIR =0X40;//P1.6输出
     P1OUT=0XFF;// 输入设置

 

     while(1)
     {
     restart:
             while(Ir_Pin);                          //等待红外信号
             temp=Ir_Get_Low();
             if(temp<8500 || temp>9500) continue;    //引导脉冲低电平9000
             temp=Ir_Get_High();
             if(temp<4000 || temp>5000) continue;    //引导脉冲高电平4500
             for(i=0;i<4;i++)                        //4个字节
             for(j=0;j<8;j++)                        //每个字节8位
             {
                  temp=Ir_Get_Low();
                  if(temp<200 || temp>800) goto restart;
                  temp=Ir_Get_High();
                  if(temp<200 || temp>2000) goto restart;
                  Ir_Buf[i]>>=1;
                  if(temp>1120) Ir_Buf[i]|=0x80;
             }
      if(Ir_Buf[2]==0X0C)P1OUT =0X00;        //如果按的是0按键则点亮LED
      else if(Ir_Buf[2]==0X16)P1OUT =0X40;   //如果按的是CH-按键则关闭LED
      }
}

/******************************************************************************
函数名称:Ir_Get_Low
功    能:计算低电平持续的时间
参    数:无

返回值  :TAR
******************************************************************************/
unsigned int Ir_Get_Low()
{
      TAR=0X0000;
      TACTL=TASSEL_2 + TACLR + ID0 +ID1 + MC_1;

      while(!Ir_Pin  && (TAR&0x8000)==0);    //等待高电平到来
      TACTL=0X00;
      return TAR;
}

/******************************************************************************
函数名称:Ir_Get_High
功    能:计算高电平持续的时间
参    数:无

返回值  :TAR
******************************************************************************/
unsigned int Ir_Get_High()
{
      TAR=0X0000;
      TACTL=TASSEL_2 + TACLR + ID0 +ID1 + MC_1;

      while(Ir_Pin && (TAR&0x8000)==0);
      TACTL=0X00;
      return TAR;
}

怎么样才能是这段程序在G2553中成功的运行,谢谢!

    

Young Hu:

有什么现象?能不能抓点引脚的波形以及现象描述?谢谢

tao wang:

这是我移植的MSP430F149上的红外遥控程序,请问能否提供一个能在G2553上运行的程序,非常感谢!

Young Hu:

回复 tao wang:

程序我这边没有,不过都是430的程序,修改起来其实很简单。

移植您发出来的程序到G2553上面,需要修改时钟部分、TimerA部分。G2553不支持高频晶振,比较高频率的时钟信号由DCO产生,可以参考TI的例程来修改。另外,TimerA部分的话,可能有些寄存器的命名不一样。

Hardy Hu:

给你一个建议,把F149上这个应用代码的软件流程图分析出来,根据流程图去开发其他的MCU,这样会事半功倍的

赞(0)
未经允许不得转载:TI中文支持网 » msp430g2553红外遥控程序
分享到: 更多 (0)