欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    MSP430f149 AD源程序.doc

    • 资源ID:2385692       资源大小:59KB        全文页数:14页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MSP430f149 AD源程序.doc

    #include <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);interruptADC_VECTOR void ADC12(void);interruptUSART1RX_VECTOR void USART1(void);unsigned char savedata1500;unsigned char saveromdata7;unsigned char enddata3;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 = enddatai; while(U1TCTL&0x01)=0); /* if(enddata0=0x11) for(i=0;i<1500;i+) /ldata = savedatai; /low = ldata | 0x00; U1TXBUF = savedatai;/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=(savedata0+savedata1+savedata2+savedata3+savedata4+savedata5+savedata6+savedata7+savedata8+savedata9)/10; vdata2=(savedata10+savedata11+savedata12+savedata13+savedata14+savedata15+savedata16+savedata17+savedata18+savedata19)/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 = saveromdata6; while(U0TCTL&0x01)=0); U0TXBUF = saveromdata5; while(U0TCTL&0x01)=0); U0TXBUF = saveromdata4; while(U0TCTL&0x01)=0); U0TXBUF = saveromdata3; while(U0TCTL&0x01)=0); U0TXBUF = saveromdata2; while(U0TCTL&0x01)=0); U0TXBUF = saveromdata1; while(U0TCTL&0x01)=0); void Filter(void) unsigned int i,j,m,a3,ldata; for(i=0;i<1500;i+) a0=savedatai; a1=savedatai+1; a2=savedatai+2; for(j=0;j<2;j+) for(m=1;m<3;m+) if(am>aj) ldata=aj; aj=am; am=ldata; savedatai=a1; void Averege(void)/取520共15个得到总线电压值 unsigned int i,he; he=0; for(i=20;i<30;i+) he=he+savedatai; ave=he/10; void Analysis(void) int delaytostart,start,error,n,aveadd,time32; enddata0=0; enddata1=0; enddata2=0; aveadd=ave+30; /问题:如果拉电流太小就达不到 200 datai=0; while(1) /= datai=datai+50; delaytostart=0; start=0; error=0; while(1) time32=0; if(savedatadatai>aveadd) time32+; if(savedatadatai+1>aveadd) time32+; if(savedatadatai+2>aveadd) time32+; if(savedatadatai+3>aveadd) time32+; if(savedatadatai+4>aveadd) time32+; if(time32>=4) start=1; break; else if(delaytostart<700) delaytostart+; datai+; else error=1; break; if(error=1) enddata0=0x11;enddata1=0x11;enddata2=0x22;break; if(start=1) datai=datai+7; for(n=1;n<9;n+) switch(n) case 1: datai=datai+16;break; case 2: datai=datai+16;break; case 3: datai=datai+17;break; case 4: datai=datai+16;break; case 5: datai=datai+16;break; case 6: datai=datai+17;break; case 7: datai=datai+16;break; case 8: datai=datai+16;break; time32=0; if(savedatadatai>aveadd) time32+; if(savedatadatai+1>aveadd) time32+; if(savedatadatai+2>aveadd) time32+; if(time32>=2) switch(n) case 1: enddata0 &= 0x01;break; case 2: enddata0 &= 0x02;break; case 3: enddata0 &= 0x04;break; case 4: enddata0 &= 0x08;break; case 5: enddata0 &= 0x10;break; case 6: enddata0 &= 0x20;break; case 7: enddata0 &= 0x40;break; case 8: enddata0 &= 0x80;break; else switch(n) case 1: enddata0 |= 0x01;break; case 2: enddata0 |= 0x02;break; case 3: enddata0 |= 0x04;break; case 4: enddata0 |= 0x08;break; case 5: enddata0 |= 0x10;break; case 6: enddata0 |= 0x20;break; case 7: enddata0 |= 0x40;break; case 8: enddata0 |= 0x80;break; /datai=datai+6; /= datai=datai+50; delaytostart=0; start=0; error=0; while(1) time32=0; if(savedatadatai>aveadd) time32+; if(savedatadatai+1>aveadd) time32+; if(savedatadatai+2>aveadd) time32+; if(savedatadatai+3>aveadd) time32+; if(savedatadatai+4>aveadd) time32+; if(time32>=4) start=1;break; else if(delaytostart<400) delaytostart+; datai+; else error=1;break; if(error=1) enddata1=0x11;enddata2=0x22;break; if(start=1) datai=datai+7; for(n=1;n<9;n+) switch(n) case 1: datai=datai+16;break; case 2: datai=datai+16;break; case 3: datai=datai+17;break; case 4: datai=datai+16;break; case 5: datai=datai+16;break; case 6: datai=datai+17;break; case 7: datai=datai+16;break; case 8: datai=datai+16;break; time32=0; if(savedatadatai>aveadd) time32+; if(savedatadatai+1>aveadd) time32+; if(savedatadatai+2>aveadd) time32+; if(time32>=2) switch(n) case 1: enddata1 &= 0x01;break; case 2: enddata1 &= 0x02;break; case 3: enddata1 &= 0x04;break; case 4: enddata1 &= 0x08;break; case 5: enddata1 &= 0x10;break; case 6: enddata1 &= 0x20;break; case 7: enddata1 &= 0x40;break; case 8: enddata1 &= 0x80;break; else switch(n) case 1: enddata1 |= 0x01;break; case 2: enddata1 |= 0x02;break; case 3: enddata1 |= 0x04;break; case 4: enddata1 |= 0x08;break; case 5: enddata1 |= 0x10;break; case 6: enddata1 |= 0x20;break; case 7: enddata1 |= 0x40;break; case 8: enddata1 |= 0x80;break; /datai=datai+6; /= datai=datai+50; delaytostart=0; start=0; error=0; while(1) time32=0; if(savedatadatai>aveadd) time32+; if(savedatadatai+1>aveadd) time32+; if(savedatadatai+2>aveadd) time32+; if(savedatadatai+3>aveadd) time32+; if(savedatadatai+4>aveadd) time32+; if(time32>=4) start=1;break; else if(delaytostart<400) delaytostart+; datai+; else error=1;break; if(error=1) enddata2=0x22;break; if(start=1) datai=datai+7; for(n=1;n<9;n+) switch(n) case 1: datai=datai+16;break; case 2: datai=datai+16;break; case 3: datai=datai+17;break; case 4: datai=datai+16;break; case 5: datai=datai+16;break; case 6: datai=datai+17;break; case 7: datai=datai+16;break; case 8: datai=datai+16;break; time32=0; if(savedatadatai>aveadd) time32+; if(savedatadatai+1>aveadd) time32+; if(savedatadatai+2>aveadd) time32+; if(time32>=2) switch(n) case 1: enddata2 &= 0x01;break; case 2: enddata2 &= 0x02;break; case 3: enddata2 &= 0x04;break; case 4: enddata2 &= 0x08;break; case 5: enddata2 &= 0x10;break; case 6: enddata2 &= 0x20;break; case 7: enddata2 &= 0x40;break; case 8: enddata2 &= 0x80;break; else switch(n) case 1: enddata2 |= 0x01;break; case 2: enddata2 |= 0x02;break; case 3: enddata2 |= 0x04;break; case 4: enddata2 |= 0x08;break; case 5: enddata2 |= 0x10;brea

    注意事项

    本文(MSP430f149 AD源程序.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开