关于CCS 和 IAR两款软件同样的代码使用BSL烧写出来的代码不一样的问题:
可能因为编译器的问题,两者编译出来的结果不一样,从而导致生成的txt不同,进而产生下板子验证的错误。
我试了一晚上,依旧没有设置好,解决办法,,,使用IAR(真香!)
这里的流水灯和按键的方式与51单片机的相似
流水灯我这里就直接贴代码:
#include "io430.h"#define uint unsigned int #define uchar unsigned char voiddelay(unsignedintcounts) { unsignedinti,j; for(j=0;j<10;j++) { for(i=0; i<counts; i++); } } /****************主函数****************/voidmain(void) { uchartemp; temp=0x01; WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P2DIR=0xff; //设置P2口方向为输出P2OUT=0xff; //设置P2口输出高电平while(1) { P2OUT=~temp;//点亮LEDdelay(65000);//延时temp<<=1; if(temp==0x10) temp=0x01; } }
按键同样是进行按键的消抖延时检测按键按下的状态:
#include "io430.h"#define keyin (P1IN & 0x03) #define uchar unsigned char #define uint unsigned int voiddelay(void); ucharkey_can(void); intmain( void ) { ucharkey_date=0; //StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD; P1DIR&=~( BIT0+BIT1); P2DIR=0XFF; P2OUT=0XFF; while(1) { key_date=key_can(); switch(key_date) //转换键值 { case1:P2OUT&=~BIT0;break; case2:P2OUT&=~BIT1;break; default:break; } delay(); delay(); P2OUT=0xff; } return0; } ucharkey_can(void) { ucharkeyval,temp; if(keyin!=0x03) //如果有键被按下 { delay(); //延时消抖if(keyin!=0x03) //再次检测按键状态 { temp=keyin; while(keyin!=0x03); //等待按键被放开switch(temp) //转换键值 { case0x01: keyval=1;break; case0x02: keyval=2;break; default: keyval=0;break; } } } returnkeyval; } voiddelay(void) { uinttmp; for(tmp=12000;tmp>0;tmp--); }