智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1183|回复: 2
打印 上一主题 下一主题

请高手指导XS128 ATD 连续转换的问题

[复制链接]

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
50
威望
30
贡献
16
兑换币
15
注册时间
2013-9-1
在线时间
2 小时
跳转到指定楼层
1#
发表于 2013-9-1 16:50:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

void ATD0_Init(void);
void SCI_init(void);
void SCISendChar(char c1);
void SCISendString(char *pc1);
void SCISendHex(char c1);
unsigned char dtoa(char c1);
void Delay_ms(unsigned int n_ms);


void main(void)
{
    unsigned char AD_result;                        //定义变量,存储A/D转换结果
    ATD0_Init();
    SCI_init();
    DDRB = 0xFF;                                                        //定义PORTB端口为输出口
    PORTB = 0xFF;                                                //关闭所有LED灯

    for(;;)
    {
      
  
       while(!ATD0STAT2_CCF0);
      SCISendString("AN0=");
      SCISendHex(ATD0DR0L);
      SCISendString("\r\n");
      Delay_ms(2000);         

    }
}
//功    能:完成ATD模块初始化

void ATD0_Init(void)
{
    ATD0DIEN = 0x00;                //禁止数字输入功能
    ATD0CTL1 = 0x0F;                // A/D分辨率选择8位,且采样前不放电
    ATD0CTL2 = 0x40;                // A/D模块快速清零,禁止外部触发,禁止中断
    ATD0CTL3 = 0x90;                // A/D转换结果右对齐,每个序列2个通道,非FIFO模式
    ATD0CTL4 = 0x03;                //采样时间24个周期
    ATD0CTL5 = 0x20;                //对通道0单通道连续采样,同时启动A/D转换序列
}

void SCI_init(void)
{

     SCI0BD = 52;
     SCI0CR1 =0X00;
     SCI0CR2 =0X0C;
}

void SCISendChar(char c1){
     
     while(SCI0SR1_TC==0);
     SCI0DRL =c1;
}

void SCISendString(char *pc1){
     
     while((*pc1) !=0){
      
     SCISendChar(*pc1);
     pc1++;
     }
     
}

void SCISendHex(char c1){

     SCISendChar(dtoa((c1&0XF0)>>4));
     SCISendChar(dtoa((c1&0x0f)));
}

unsigned char dtoa(char c1){

     return (c1>=10)?(c1+0x37)c1+0x30);
}
void Delay_ms(unsigned int n_ms)
{
   unsigned int i,j;
   for(i=0;i<n_ms;i++)
   {
     for(j=0;j<667;j++)      //总线时钟8MHZ时,667*12个机器周期约1ms
     {
         ;
     }
   }
}

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
50
威望
30
贡献
16
兑换币
15
注册时间
2013-9-1
在线时间
2 小时
2#
 楼主| 发表于 2013-9-1 16:52:38 | 只看该作者
连续转换时,这个程序,通过串口发出来的值,始终为0,学习了半天,一直没有解决出来为什么。但是单次转换就会发出正确的转换结果
回复 支持 反对

使用道具 举报

8

主题

324

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1209

活跃会员奖章优秀会员奖章

威望
528
贡献
373
兑换币
291
注册时间
2013-7-24
在线时间
154 小时
3#
发表于 2013-9-1 17:45:05 | 只看该作者
连续转换不是有个寄存器控制吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 18:32 , Processed in 0.088230 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表