打印

MSP430F149 AD源程序(转)

[复制链接]
803|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
foreverly|  楼主 | 2010-12-10 15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
i nclude <MSP430x14x.h>
#define ADCMEM ((int *) 0x0140)
//ADC12MEMx
定义


void InitSYS(void);

void InitUST0(void);
//
初始化系统及ADC寄存器

void InitUST1(void);
void InitADC(void);

void SetZero(void);
int
GetBusData(void);

void SetBusData(int busvdata);
void SendRomCode(void);
void Averege(void);
void Filter(void);
void Analysis(void);
void Delay(int delaydata);
interrupt[ADC_VECTOR] void ADC12(void);
interrupt[USART1RX_VECTOR] void USART1(void);

unsigned char savEDAta[1500];
unsigned char saveromdata[7];
unsigned char enddata[3];
unsigned int adtime;
unsigned int recromok;
unsigned int ave;

unsigned int datai;
unsigned int vdata;

unsigned int time;

               
void main(void)

//
使用中断方式

{

unsigned int i,busvdata,low,hi,ldata;


InitSYS();


InitUST0();


InitUST1();


InitADC();


P1DIR |= 0x20;


P1DIR |= 0x1c;
//p1.4 p1.3 p1.2


P1OUT |= BIT4;


SetZero();
//
设置x9015到零


for(i=0;i<30000;i++)


{
_NOP(); }
//wait to sample


busvdata=GetBusData();
//


while(1)


{


SetBusData(busvdata);


busvdata=GetBusData();


if(busvdata<150)


{
break; }


}


IE2 |=URXIE1;


while(1)


{


// for(time=0;time<256;time++)


// {


//IE2 |=URXIE1;


//low=time;


recromok=0;


while(recromok!=1);


SendRomCode();


for(i=0;i<6500;i++)


{
_NOP(); }
//wait to sample


ADC12CTL0 |= 0x02;


ADC12CTL0 |= 0x01; //start AD


adtime=0;


while(1)


{


if(adtime>1500)


{


ADC12CTL0 &= ~0x02;


Filter();


Averege();


Analysis();


for(i=0;i<3;i++)



{


U1TXBUF = enddata;


while((U1TCTL&0x01)==0);


}


/* if(enddata[0]==0x11)


{


for(i=0;i<1500;i++)


{


//ldata = sav
EDAta;


//low = ldata | 0x00;

                  

U1TXBUF = sav
EDAta;//low;



while((U1TCTL&0x01)==0);


U1TXBUF = 0x00;;//low;


while((U1TCTL&0x01)==0);

            

//ldata = ldata>>8;


//hi = ldata | 0x00;


//U1TXBUF = hi;


// while((U1TCTL&0x01)==0);


}


} */


break;


}


//}


}


}

}

void SetZero(void)
{

int i;


P1OUT &= ~BIT4;
//cs


P1OUT &= ~BIT3;
//u/d


for(i=0;i<64;i++)


{


P1OUT ^= BIT2;
//inc


}


P1OUT |= BIT4;
//cs

}
      
int GetBusData(void)
{

unsigned char vdata1,vdata2;//,vdata;


adtime=0;


ADC12CTL0 |= 0x02;


ADC12CTL0 |= 0x01; //start AD


while(1)


{


if(adtime>20)


{


ADC12CTL0 &= ~0x02;


break;


}


}


//
计算


vdata1=(savedata[0]+savedata[1]+savedata[2]+savedata[3]+savedata[4]+savedata[5]+savedata[6]+savedata[7]+savedata[8]+sav
EDAta[9])/10;


vdata2=(savedata[10]+savedata[11]+savedata[12]+savedata[13]+savedata[14]+savedata[15]+savedata[16]+savedata[17]+savedata[18]+sav
EDAta[19])/10;


vdata=(vdata1+vdata2)/2;


return(vdata);

}

void SetBusData(int busvdata)
{


int i;


unsigned int temp;


unsigned int movetime;


if(busvdata>150)


{


temp=busvdata-150;


movetime=(temp*20*3)/256/3;


P1OUT &= ~BIT4;
//cs


P1OUT |= BIT3;
//u/d


for(i=0;i<movetime+1;i++)


{


P1OUT ^= BIT2;
//inc


}


P1OUT |= BIT4;
//cs


}

}

相关帖子

沙发
-自己人| | 2010-12-11 16:19 | 只看该作者
楼主的奉献精神深深打动我啊!

使用特权

评论回复
板凳
ty新气象| | 2010-12-12 21:08 | 只看该作者
呵呵,也打动了我。

使用特权

评论回复
地板
明天我还来| | 2010-12-13 14:20 | 只看该作者
楼主要是能把字调大点,就更好了,看得我累死了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

486

帖子

1

粉丝