![]() |
|
||||||||||||||
| | 网站首页 | 综合电子 | 51单片机 | AVR单片机 | ARM专栏 | MSP430 | 网上商城 | PSOC | 下载中心 | 公司事项 | DSP专栏 | | ||
|
||
|
|||||
| MSP430F149 AD源程序 | |||||
| MSP430F149 AD源程序 | |||||
作者:佚名 MSP430来源:不详 点击数: 更新时间:2007-8-4 ![]() |
|||||
|
#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[i]; while((U1TCTL&0x01)==0); } /* if(enddata[0]==0x11) { for(i=0;i<1500;i++) { //ldata = savEDAta[i]; //low = ldata | 0x00;
U1TXBUF = savEDAta[i];//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]+savEDAta[9])/10; vdata2=(savedata[10]+savedata[11]+savedata[12]+savedata[13]+savedata[14]+savedata[15]+savedata[16]+savedata[17]+savedata[18]+savEDAta[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 } }
void SendRomCode(void) { U0TXBUF = saveromdata[6]; while((U0TCTL&0x01)==0); U0TXBUF = saveromdata[5]; while((U0TCTL&0x01)==0); U0TXBUF = saveromdata[4]; while((U0TCTL&0x01)==0); U0TXBUF = saveromdata[3]; while((U0TCTL&0x01)==0); U0TXBUF = saveromdata[2]; while((U0TCTL&0x01)==0); U0TXBUF = saveromdata[1]; while((U0TCTL&0x01)==0); }
void Filter(void) { unsigned int i,j,m,a[3],ldata; for(i=0;i<1500;i++) { a[0]=savEDAta[i]; a[1]=savEDAta[i+1]; a[2]=savEDAta[i+2]; for(j=0;j<2;j++) { for(m=1;m<3;m++) { if(a[m]>a[j]) { ldata=a[j]; a[j]=a[m]; a[m]=ldata; }
} } savEDAta[i]=a[1]; } }
void Averege(void)//取5-20共15个得到总线电压值 { unsigned int i,he; he=0; for(i=20;i<30;i++) { he=he+savEDAta[i]; } ave=he/10; } |
|||||
| MSP430录入:dycxin 责任编辑:dycxin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 高性价比的MSP430应用系统结… MSP430的程序框架 MSP430与PCF8576驱动程序 MSP430F149实现读单路单次A7… MSP430F149中ADC12应用举例 基于MSP430的零序直流小电流… 基于MSP430的网络化视频监控… 基于单片机和DSP的被动声目标… ISP技术与Internet结合的应用… 基于GPS和GPRS的小型追踪器 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | | 设为首页 | 购买方法 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 联系我们 | 网络答疑| | | |||
|