初始化代码如下:(注释已删除,如少了什么,可能是误删了,代码是用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的外围模块太复杂了。
|