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