哪位能帮我改写一个MSP430的AD转换的程序

2019-03-24 14:26发布

在AD转换之后能用RS232串口将信号发送到电脑,.以下是我的AD程序,可以参考,需要采用单通道多次采样 /********************************************************* 程序功能:MCU的片内ADC对P6.0端口的电压进行转换 将模拟电压值显示在1602液晶上。 *********************************************************/ #include <msp430x14x.h> #include "cry1602.h" #define uchar unsigned char #define uint unsigned int #define Num_of_Results 32 uchar shuzi[] = {"0123456789."}; uchar tishi[] = {"The volt is:"}; static uint results[Num_of_Results]; //保存ADC转换结果的数组 // is not used for anything. void Trans_val(uint Hex_Val); /************************主函数****************************/ void main(void) { WDTCTL = WDTPW+WDTHOLD; //关闭看门狗 LcdReset(); //复位1602液晶 DispNChar(2,0,12,tishi); //显示提示信息 Disp1Char(11,1,'V'); //显示电压单位 P6SEL |= 0x01; // 使能ADC通道 ADC12CTL0 = ADC12ON+SHT0_8+MSC; // 打开ADC,设置采样时间 ADC12CTL1 = SHP+CONSEQ_2; // 使用采样定时器 ADC12IE = 0x01; // 使能ADC中断 ADC12CTL0 |= ENC; // 使能转换 ADC12CTL0 |= ADC12SC; // 开始转换 _EINT(); LPM0; } /******************************************* 函数名称:ADC12ISR 功 能:ADC中断服务函数,在这里用多次平均的 计算P6.0口的模拟电压数值 参 数:无 返回值 :无 ********************************************/ #pragma vector=ADC_VECTOR __interrupt void ADC12ISR (void) { static uint index = 0; results[index++] = ADC12MEM0; // Move results if(index == Num_of_Results) { uchar i; unsigned long sum = 0; index = 0; for(i = 0; i < Num_of_Results; i++) { sum += results; } sum >>= 5; //除以32 Trans_val(sum); } } 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
znli8102310
2019-03-25 02:47
谢谢啊 ,不过我还是不很懂啊我 是第一次接触430,就是我印象中好像要将数据的高低位分别处理,怎么改写啊。

一周热门 更多>

相关问题

    相关文章