智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2375|回复: 1
打印 上一主题 下一主题

[编程类] AD转换结果寄存器读不出值

[复制链接]

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
143
威望
178
贡献
55
兑换币
0
注册时间
2011-2-21
在线时间
54 小时
跳转到指定楼层
1#
发表于 2011-3-2 00:06:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
unsigned  char AD_MAX;
unsigned char AD_DATA[4];
int i;  
void AD_Init(void)
{
ATD0CTL1=0X00;//外部触发,8位精度
ATD0CTL2=0x43;//禁止外部触发,可以中断
ATD0CTL3=0xa0;//每个转换序列4此转换,自由
ATD0CTL4=0X03;//采样周期=4*ad转换周期,ad=2mhz
ATD0CTL5=0X20;//连续转换,单通道采样,转换
ATD0DIEN=0X00;//静止数字输入

}

void main(void)
{
TIOS=0X01;//0通道输出比较
TC0=0X00ee;//经过这段时间进入中断
TCTL2=0X02;//其他7路断开,0通到输出清零
TSCR2=0X04;//计数器复位禁止,自由计数,16分频
TSCR1=0X80;//使能定时器
TIE=0X01;//0通道中断使能
AD_Init();

DDRA=0XFF;
PORTA=0X00;
EnableInterrupts;
for(;;)
{

}
}

#pragma CODE_SEG NON_BANKED
void interrupt 22 Int_AD0(void)
{

int m;
TFLG1_C0F=1;
m=TCNT;
DisableInterrupts;
TC0=m+10000;// 定时10ms
EnableInterrupts;
while(ATD0STAT2_CCF0==1)
AD_DATA[0]=ATD0DR0;
while(ATD0STAT2_CCF1==1)
AD_DATA[1]= ATD0DR1;
while(ATD0STAT2_CCF2==1)
AD_DATA[2]=ATD0DR2;
while(ATD0STAT2_CCF3==1)
AD_DATA[3]= ATD0DR3;
AD_MAX=AD_DATA[0];
for(i=0;i<=3;i++)
  {
if(AD_DATA[i]>=AD_MAX)

  AD_MAX=AD_DATA[i];
}

PORTA=AD_MAX ;
EnableInterrupts;         
}

附件: 您需要 登录 才可以下载或查看,没有帐号?注册

2

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
威望
242
贡献
234
兑换币
0
注册时间
2010-12-11
在线时间
9 小时
2#
发表于 2011-4-8 07:34:13 | 只看该作者
while(ATD0STAT2_CCF0==1)
这些while语句最后加上;
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-18 01:28 , Processed in 0.057049 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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