完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
ADC单通道一次采样。
void ADC_Init() { P6SEL |= BIT6; //选择A6采样通道P6.6 REFCTL0 &= ~REFMSTR; //复位REFMSTR控制位ADC12参考电压控制寄存器 ADC12CTL1 = ADC12SHP+ADC12CSTARTADD_6+ADC12CONSEQ_0 ; //MCLK 采样信号的来源是来自采样定时器 转换存储器选择ADC12MEM6 单通道单次转换 ADC12MCTL6 = ADC12INCH_6+ADC12SREF_0;//选择模拟输入通道A6 参考电压源Vr+=AVCC,Vr-=AVSS ADC12CTL0 = ADC12ON+ADC12SHT0_15; //打开ADC12, ADC12IE = ADC12IE6; // 使能ADC12IFG.6中断 ADC12CTL0 |= ADC12ENC; // 使能AD转换 } void ADC_Start() { ADC12CTL0 |= ADC12SC; //启动AD转换 } #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR (void) { switch(__even_in_range(ADC12IV,34)) { case 0: break; // Vector 0: 无中断 case 2: break; // Vector 2: ADC溢出中断 case 4: break; // Vector 4: ADC转换时间溢出中断 case 6: break; // Vector 6: ADC12IFG0 case 8: break; // Vector 8: ADC12IFG1 case 10: break; // Vector 10: ADC12IFG2 case 12: break; // Vector 12: ADC12IFG3 case 14: break; // Vector 14: ADC12IFG4 case 16: break; // Vector 16: ADC12IFG5 case 18: // Vector 18: ADC12IFG6 else if (ADC12MEM6 <=20) m=1; else if (ADC12MEM6 <=20) m=2; else if (ADC12MEM6 <= 30) m=3; else if (ADC12MEM6 <=50 ) m=4; else if (ADC12MEM6 <= 70) m=5; else if (ADC12MEM6 <=80 ) m=6; else if (ADC12MEM6 <= 90) m=7; else m=8; case 20: break; // Vector 20: ADC12IFG7 case 22: break; // Vector 22: ADC12IFG8 case 24: break; // Vector 24: ADC12IFG9 case 26: break; // Vector 26: ADC12IFG10 case 28: break; // Vector 28: ADC12IFG11 case 30: break; // Vector 30: ADC12IFG12 case 32: break; // Vector 32: ADC12IFG13 case 34: break; // Vector 34: ADC12IFG14 default: break; } } 下面这个是采样点灯 while(1) { ADC_Init(); ADC_Start(); __bis_SR_register(GIE); if (m == 1 ) { P1OUT |= (BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7); P1OUT &= ~(BIT0);//LED低电平点亮 } else if (m == 2 ) { P1OUT |= (BIT2+BIT3+BIT4+BIT5+BIT6+BIT7); P1OUT &= ~(BIT0+BIT1);//LED低电平点亮 } else if (m == 3 ) { P1OUT |= (BIT3+BIT4+BIT5+BIT6+BIT7); P1OUT &= ~(BIT0+BIT1+BIT2);//LED低电平点亮 } else if (m == 4 ) { P1OUT |= (BIT4+BIT5+BIT6+BIT7); P1OUT &= ~(BIT0+BIT1+BIT2+BIT3);//LED低电平点亮 } else if (m == 5 ) { P1OUT |= (BIT5+BIT6+BIT7); P1OUT&= ~(BIT0+BIT1+BIT2+BIT3+BIT4); //LED低电平点亮 } else if (m == 6 ) { P1OUT |= (BIT6+BIT7); P1OUT&=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5); //LED低电平点亮 } else if (m == 7 ) { P1OUT |= (BIT7); P1OUT&=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6); //LED低电平点亮 } else if (m == 8 ) { P1OUT &= ~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7);//LED低电平点亮 } } 求助啊各位大神 |
|
相关推荐
2个回答
|
|
给自己顶一下吧。求助求助求助
|
|
|
|
昨晚上解决了这个问题,我在初始化ADC时候,把ADC_Init这个函数放到了while(1)中。 注意,初始化ADC时候只需要初始化一次即可。除非要换ADC采样方式,否则就不用重新初始化 |
|
|
|
只有小组成员才能发言,加入小组>>
3023个成员聚集在这个小组
加入小组2908 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3529 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2333 浏览 1 评论
4792 浏览 1 评论
2565 浏览 1 评论
1305浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3533浏览 2评论
2908浏览 1评论
1486浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 10:37 , Processed in 1.267113 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号