MSP430-流水灯和key

关于CCS 和 IAR两款软件同样的代码使用BSL烧写出来的代码不一样的问题:

可能因为编译器的问题,两者编译出来的结果不一样,从而导致生成的txt不同,进而产生下板子验证的错误。

我试了一晚上,依旧没有设置好,解决办法,,,使用IAR(真香!)

这里的流水灯和按键的方式与51单片机的相似

流水灯我这里就直接贴代码:


#include "io430.h"
#define uint unsigned int 
#define uchar unsigned char 

void delay(unsigned int counts)
{
    unsigned int i,j;
  for(j=0;j<10;j++)
  {
  for(i = 0; i < counts; i++);
  }
}
/****************主函数****************/
void main(void)
{
    uchar temp;
    temp=0x01;
    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
    P2DIR = 0xff;                   //设置P2口方向为输出
    P2OUT = 0xff;                   //设置P2口输出高电平
     while(1)
     {
       P2OUT=~temp;//点亮LED
       delay(65000);//延时
       temp<<=1;
       if(temp==0x10)
         temp=0x01;
     }

}

按键同样是进行按键的消抖延时检测按键按下的状态:


#include "io430.h"
#define keyin    (P1IN & 0x03) 
#define uchar unsigned char 
#define uint unsigned int 

void delay(void);
uchar key_can(void);

int main( void )
{
  uchar key_date = 0;
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR &=~( BIT0 + BIT1);
  P2DIR = 0XFF;
  P2OUT = 0XFF;
  while(1)
    {
             key_date=key_can();
             switch(key_date)    //转换键值    
                {
                case 1:P2OUT&=~BIT0;break;
                case 2:P2OUT&=~BIT1;break;
                default:break;
                }
                delay();         
                delay();    
                P2OUT=0xff;
    }
  return 0;
}

uchar key_can(void)
{
uchar keyval,temp;
 if(keyin != 0x03)       //如果有键被按下
        {
            delay();            //延时消抖
            if(keyin != 0x03)   //再次检测按键状态
            {
                temp=keyin;
                while(keyin != 0x03);   //等待按键被放开
                switch(temp)    //转换键值    
                {
                case 0x01:
                            keyval = 1;break;
                case 0x02:
                            keyval = 2;break;
                default:
                            keyval = 0;break;
                }
            }
        }
return keyval;
}

void delay(void)
{
    uint tmp;
    
    for(tmp = 12000;tmp > 0;tmp--);
}

猜你喜欢

转载自blog.csdn.net/weixin_41445387/article/details/89785420