导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[xiechenlei1985][求助]初学单片机,碰到一个问题,如何将



No.28060
作者:xiechenlei1985
邮件:xiechenlei1985@yahoo.com.cn
ID:97508
登陆:12次
文章数:1篇
最后登陆IP:218.23.101.178
最后登陆:2011/6/23 19:24:18
注册:2007/12/14 13:54:26
财富:110
发帖时间:2008/2/20 9:01:22
发贴者IP:220.178.74.2
标题:xiechenlei1985:[求助]初学单片机,碰到一个问题,如何将ADC12和串口通信相连。请大侠帮忙,小弟不胜感激
摘要:No.28060[求助]初学单片机,碰到一个问题,如何将ADC12和串口通信相连。请大侠帮忙,小弟不胜感激 这是我从书上找得程序,又改了点,但是无法验证通过,不知道什么原因,请大侠指点。

#include   <msp430x14x.h>  

//定义全局变量
//模拟采集变量
int nADC_Flag;
int nADC_Count;
//串口发送变量
int nSend_TX1;
static int nTX1_Len;
static int nTX1_Flag;
//模拟采集缓冲区
int ADC_BUF_Temp0[10];
int ADC_BUF0[10];
//发送缓冲区
char UART1_TX_BUF[50];
//子程序声明
void Init_CLK(void);
void Init_ADC(void);
void Init_TimerA(void);
void Init_UART1(void);


void main(void)
{  int i;
   WDTCTL = WDTPW + WDTHOLD; // 停止WDT

   P1DIR |= 0x01;
   P1OUT |= 0x0f;      //LED设置

   _DINT();     //关闭中断
   //初始化
   Init_CLK();
   Init_ADC();
   Init_TimerA();
   //初始化变量
   nADC_Flag=0;
   nADC_Count=0;
   nSend_TX1=0;
   nTX1_Len=0;
   nTX1_Flag=0;
   _EINT();     //打开中断
   //开始循环
   for(;;)
   {
      //处理模拟量采集并发送
      if(nADC_Flag==1)
      {  
         nADC_Flag=0;
         while(1)    //等待缓冲区里的数据发送完毕
         {
            if(nTX1_Flag==1)   break;
          }
      //将数据由字转换成字节
      for(i=0;i  <10;i++)
      {
        UART1_TX_BUF[2*i]=(char)(ADC_BUF_Temp0[i]&0x00ff);
        UART1_TX_BUF[2*i+1]=(char)((ADC_BUF_Temp0[i]>  >  8)&0x00ff);
       }
      //设置帧结束标记
      UART1_TX_BUF[20]=0xaa;
      UART1_TX_BUF[21]=0xaa;
      nTX1_Len=22;   //发送数据的长度
      IFG2|=UTXIFG1;  //设置中断标志
      }
    }


//时钟初始化
void Init_CLK(void)
{
   unsigned int i;
   BCSCTL1 &= ~XT2OFF;        //启动XT2,
   do
     { IFG1 &= ~OFIFG;         //清OSCFault标志
     for(i=0xFF;i>  0;i--);     //延时等待
     }
   while((IFG1 & OFIFG) != 0); //查OSCFault,为0时转换完成
   BCSCTL2 |= SELS;            //SMCLK为XT2
   return;
}

      
//ADC12初始化
void Init_ADC(void)
{
 //ADC12设置**************************
 P6SEL |= 0x01;                   //使用A/D通道 A0
 ADC12CTL0 &= ~ENC ;               //转换允许(上升沿)
 ADC12CTL0 = ADC12ON+MSC+SHT0_2 ; //开ADC12内核,设SHT0=2 (N=4) 
 ADC12CTL1 = SHP+CONSEQ_2 ;       //SAMPCON信号选为采样定时器输出,单口连发

 //ADC12内部参考电压设置
 ADC12CTL0 |= REF2_5V;            //选用内部参考电压为2.5V
 ADC ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:78531毫秒 查询6次