打印

[求助]针对QG8的小demo板,写了一个AD转换程序,但总是返回为

[复制链接]
2397|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dongshan|  楼主 | 2007-8-30 19:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初始化代码如下:(注释已删除,如少了什么,可能是误删了,代码是用DI自动生成的)



void MCU_init(void)
{
SOPT1 = 0x53; 
SPMSC1 = 0x1C; 
SPMSC2 = 0x00; 
SPMSC3 &= (unsigned char)~0x30; 
ICSTRM = *(unsigned char*far)0xFFAF;
ICSSC = *(unsigned char*far)0xFFAE; 
ICSC1 = 0x04; 
ICSC2 = 0x40;
PTASE |= (unsigned char)0x1F; 
PTBSE = 0xFF; 
PTADS = 0x03; 
PTBDS = 0x00; 
PTADD |= (unsigned char)0x03; 
APCTL1 = 0x08; 
ADCCFG = 0x38; 
ADCSC2 = 0x00; 
ADCCV = 0x00; 
ADCSC1 = 0x23; 
asm CLI; /* Enable interrupts */
}

如下是AD转换程序,长延时,连续采样八次,平均滤波,返回平均值。

word GetAdAvrResult(void)
{
byte i=0;
word AdResult[8]={ 0,0,0,0,0,0,0,0}; //用于存放8次转换的结果
ADCSC1=0x20; //开始AD转换

while(i<8)
{
   if(ADCSC1_COCO==1) {
       AdResult|=ADCRH<<8; //取高2位
       AdResult|=ADCRL; //取低8位
       i++;
    }
}
ADCSC1=0x3f; //停止AD转换
return ((AdResult[0]+ AdResult[1]+AdResult[2]+AdResult[3]+AdResult[4]+AdResult[5]+AdResult[6]+AdResult[7])/8); //返回平均值
}

结果在用BDM调试时总是返回零。PTA3脚的电压为1.5V左右。

请各位帮看看,还有哪方面没考虑到,hcs08的外围模块太复杂了。

相关帖子

沙发
freetech_s| | 2007-8-31 09:45 | 只看该作者

可能原因如下

ADCSC1=0x20; //开始AD转换 
我觉得这一句有问题,你在初始化时候:ADCSC1 = 0x23; 
选择的是通道3,这里却成了通道0!改成ADCSC1 = 0x23; 试试

使用特权

评论回复
板凳
dongshan|  楼主 | 2007-8-31 10:24 | 只看该作者

正是如此

正是这个原因. adcsc1=0x23;即可.本来是写的QD4的程序,用的0通道,而demo板的AD用的是3通道,所以出现了这个错误!

感谢!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

1143

帖子

7

粉丝