关于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--);
}
上一篇:MSP430 AD模块笔记
下一篇:MSP430-中断的使用
推荐阅读最新更新时间:2024-11-08 15:01