3472|9

17

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

ad采集的数据怎么不能再串口输出到串口哭助手呢? [复制链接]

#include

#define CPU_F ((double)8000000)   //外部高频晶振8MHZ
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define uchar unsigned char
#define uint unsigned int

uchar caltmp[4]={0,0,0,0};  
uchar shuzi[] = {"0123456789.V"};
uchar AA[6];    //用来存放转换结果的数组

/*时钟*/
void Clock_Init()
{
  uchar i;
  BCSCTL1&=~XT2OFF;                 //打开XT2振荡器
  BCSCTL2|=SELM1+SELS;              //MCLK为8MHZ,SMCLK为8MHZ
  do{
    IFG1&=~OFIFG;                   //清楚振荡器错误标志
    for(i=0;i<100;i++)
       _NOP();
  }
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待
  IFG1&=~OFIFG;
}

/*ADC12初始化*/
void ADC_port()
{
  P6SEL = 0x0F;     //P6.0~P6.3为AD输入口
  ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_2;
  ADC12CTL1 = CONSEQ_1 + ADC12SSEL_0 + SHP;
  ADC12MCTL0 = SREF_1 + INCH_0;
  ADC12MCTL1 = SREF_1 + INCH_1;
  ADC12MCTL2 = SREF_1 + INCH_2;
  ADC12MCTL3 = SREF_1 + INCH_3 + EOS;
  ADC12IE = 0x01;
  ADC12CTL0 = ENC + ADC12SC;
}
/*USART 串口初始化*/
void USART_Inti()
{
  U0CTL |= SWRST + CHAR;   //8位长度
  U0TCTL |= SSEL0;        //选择MCLK时钟
  U0BR0 = 0X41;          //8M晶振,9600波特率
  U0BR1 = 0X03;
  U0MCTL = 0X00;
  ME1 = UTXE0 + URXE0;   //接收发送使能允许
  U0CTL &= ~SWRST;
  IE1 |= UTXIE0;          //发送中断允许
  P3SEL |= BIT4 + BIT5;   //P3.5,P3.5串口引脚
  P3DIR |= BIT4;          //P3.4串口输出(发送)
}

/*串口发送函数*/
void USART_Send(uchar data)
{
  while(!(IFG1&UTXIFG0));
  U0TXBUF = data;
}

#pragma vector=ADC_VECTOR                  //AD12中断
__interrupt void ADC12ISR(void)
{
  caltmp[0] = ADC12MEM0;
  caltmp[1] = ADC12MEM1;
  caltmp[2] = ADC12MEM2;
  caltmp[3] = ADC12MEM3;
}

/*ADC12转换*/
void ADC12Tran()
{
  uint i;
  uchar temp,tempz;
  tempz = caltmp[0];
  temp = tempz*2500/4095;
  AA[0] = temp/1000;
  AA[1] = temp%1000/100;
  AA[2] = 10;
  AA[3] = temp%100/10;
  AA[4] = temp%10;
  AA[5] = 11;
  for(i=0;i<6;i++)
  {
    USART_Send(AA[i]+0x30);
  }

  /*
  tempz = caltmp[1];
  temp = tempz*2500/4095;
  AA[0] = temp/1000;
  AA[1] = temp%1000/100;
  AA[2] = 10;
  AA[3] = temp%100/10;
  AA[4] = temp%10;
  AA[5] = 11;

  tempz = caltmp[2];
  temp = tempz*2500/4095;
  AA[0] = temp/1000;
  AA[1] = temp%1000/100;
  AA[2] = 10;
  AA[3] = temp%100/10;
  AA[4] = temp%10;
  AA[5] = 11;


  tempz = caltmp[3];
  temp = tempz*2500/4095;
  AA[0] = temp/1000;
  AA[1] = temp%1000/100;
  AA[2] = 10;
  AA[3] = temp%100/10;
  AA[4] = temp%10;
  AA[5] = 11;*/
}


void main()
{                        
  WDTCTL = WDTPW + WDTHOLD;    //关闭看门狗
  USART_Inti();                //串口初始化
  Clock_Init();               
  ADC_port();                 //AD初始化
  _EINT();
  while(1)
  {
  }
}
  这个程序为什么不能把采集到的数据发送到串口助手上呢???

最新回复

我以前也遇到这样的情况,还没有初始化系统时钟就来设置外设。还有你程序加上while(1)吧,没有了看起来怪怪的  详情 回复 发表于 2015-7-27 20:03
 
点赞 关注

回复
举报

1800

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
ADC12Tran,你这个函数并没有实际被调用,当然没有数据被传出去了
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

板凳
 
楼主,好像就算ADC有中断的话也没见里边发数据了呀。我是手机上看的,可能看的不全。
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

4
 
sint27 发表于 2015-7-23 08:13
ADC12Tran,你这个函数并没有实际被调用,当然没有数据被传出去了

  之前我在ADC12中断里面调用发送函数也不行呀。。。。。。。。。  我试过了好几种情况呢

点评

中断服务程序里不能执行太多内容,放在主循环里试试  详情 回复 发表于 2015-7-23 10:50
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

5
 
lonerzf 发表于 2015-7-23 08:15
楼主,好像就算ADC有中断的话也没见里边发数据了呀。我是手机上看的,可能看的不全。

  之前我有种中断里面发数据但是也不行.........
 
 
 

回复

1800

帖子

0

TA的资源

五彩晶圆(初级)

6
 
heor小孩 发表于 2015-7-23 10:19
之前我在ADC12中断里面调用发送函数也不行呀。。。。。。。。。  我试过了好几种情况呢

中断服务程序里不能执行太多内容,放在主循环里试试

点评

关键是他主循环while(1)里边没了啊。中断也没,那我就不明白了。  详情 回复 发表于 2015-7-24 20:58
 
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

7
 
sint27 发表于 2015-7-23 10:50
中断服务程序里不能执行太多内容,放在主循环里试试

关键是他主循环while(1)里边没了啊。中断也没,那我就不明白了。
 
个人签名这孩子,成熟的象征,理智的典范。
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

8
 
lonerzf 发表于 2015-7-24 20:58
关键是他主循环while(1)里边没了啊。中断也没,那我就不明白了。

  后面我放到while里面还是一样的没有呢《,,               我真的伤透脑筋了
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

9
 
  在老师的帮助下终于解救了:原来是我的串口初始化USART_Inti()和时钟Clock_Init()的位置放错了,  先初始胡时钟再初始化串...........   
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

10
 
我以前也遇到这样的情况,还没有初始化系统时钟就来设置外设。还有你程序加上while(1)吧,没有了看起来怪怪的
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表