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

[复制链接]
 楼主| dongshan 发表于 2007-8-30 19:06 | 显示全部楼层 |阅读模式
初始化代码如下:(注释已删除,如少了什么,可能是误删了,代码是用DI自动生成的)<br /><br /><br /><br />void&nbsp;MCU_init(void)<br />{<br />SOPT1&nbsp;=&nbsp;0x53;&nbsp;<br />SPMSC1&nbsp;=&nbsp;0x1C;&nbsp;<br />SPMSC2&nbsp;=&nbsp;0x00;&nbsp;<br />SPMSC3&nbsp;&=&nbsp;(unsigned&nbsp;char)~0x30;&nbsp;<br />ICSTRM&nbsp;=&nbsp;*(unsigned&nbsp;char*far)0xFFAF;<br />ICSSC&nbsp;=&nbsp;*(unsigned&nbsp;char*far)0xFFAE;&nbsp;<br />ICSC1&nbsp;=&nbsp;0x04;&nbsp;<br />ICSC2&nbsp;=&nbsp;0x40;<br />PTASE&nbsp;|=&nbsp;(unsigned&nbsp;char)0x1F;&nbsp;<br />PTBSE&nbsp;=&nbsp;0xFF;&nbsp;<br />PTADS&nbsp;=&nbsp;0x03;&nbsp;<br />PTBDS&nbsp;=&nbsp;0x00;&nbsp;<br />PTADD&nbsp;|=&nbsp;(unsigned&nbsp;char)0x03;&nbsp;<br />APCTL1&nbsp;=&nbsp;0x08;&nbsp;<br />ADCCFG&nbsp;=&nbsp;0x38;&nbsp;<br />ADCSC2&nbsp;=&nbsp;0x00;&nbsp;<br />ADCCV&nbsp;=&nbsp;0x00;&nbsp;<br />ADCSC1&nbsp;=&nbsp;0x23;&nbsp;<br />asm&nbsp;CLI;&nbsp;/*&nbsp;Enable&nbsp;interrupts&nbsp;*/<br />}<br /><br />如下是AD转换程序,长延时,连续采样八次,平均滤波,返回平均值。<br /><br />word&nbsp;GetAdAvrResult(void)<br />{<br />byte&nbsp;i=0;<br />word&nbsp;AdResult[8]={&nbsp;0,0,0,0,0,0,0,0};&nbsp;//用于存放8次转换的结果<br />ADCSC1=0x20;&nbsp;//开始AD转换<br /><br />while(i&lt8)<br />{<br />&nbsp;&nbsp;&nbsp;if(ADCSC1_COCO==1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AdResult|=ADCRH&lt&lt8;&nbsp;//取高2位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AdResult|=ADCRL;&nbsp;//取低8位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />ADCSC1=0x3f;&nbsp;//停止AD转换<br />return&nbsp;((AdResult[0]+&nbsp;AdResult[1]+AdResult[2]+AdResult[3]+AdResult[4]+AdResult[5]+AdResult[6]+AdResult[7])/8);&nbsp;//返回平均值<br />}<br /><br />结果在用BDM调试时总是返回零。PTA3脚的电压为1.5V左右。<br /><br />请各位帮看看,还有哪方面没考虑到,hcs08的外围模块太复杂了。<br /><br />
freetech_s 发表于 2007-8-31 09:45 | 显示全部楼层

可能原因如下

ADCSC1=0x20;&nbsp;//开始AD转换&nbsp;<br />我觉得这一句有问题,你在初始化时候:ADCSC1&nbsp;=&nbsp;0x23;&nbsp;<br />选择的是通道3,这里却成了通道0!改成ADCSC1&nbsp;=&nbsp;0x23;&nbsp;试试
 楼主| dongshan 发表于 2007-8-31 10:24 | 显示全部楼层

正是如此

正是这个原因.&nbsp;adcsc1=0x23;即可.本来是写的QD4的程序,用的0通道,而demo板的AD用的是3通道,所以出现了这个错误!<br /><br />感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

1144

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部

79

主题

1144

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部