我在使用21334的ad模块时遇到了很奇怪的问题,ADC10_1_iCal(0x14d, ADC10_1_CAL_VBG);和ADC10_1_StartADC();不执行。程序代码如下,将程序烧写到片子上之后,程序执行到上面的函数时便停止了,觉得很奇怪。我用的是3v电压(提高电压到5v似乎也不行),改用8位的ad也是同样的问题。检测时是通过点亮P1口的LED。每次都是led全亮后就执行不下去了,如果将ADC10_1_iCal(0x14d, ADC10_1_CAL_VBG);函数去掉,就停顿在只有7个led亮。搞了几天都搞不定,不知道是不是哪里设错了。还是在焊芯片时焊坏了。向各位高手请教。
#include <m8c.h> // part specific constants and macros #include "PSoCAPI.h" // PSoC API definitions for all User Modules
const unsigned char m[][15]={........};
void delay(unsigned int x) { unsigned int i,j; for(i=0;i<=x;i++) { for(j=0;j<=150;j++); } }
void main() { unsigned char i=0,a=0,j=0; unsigned int b=0; M8C_EnableGInt;
ADC10_1_Start(3);
PRT1DR=0xff;//
ADC10_1_iCal(0x14d, ADC10_1_CAL_VBG);
PRT1DR=0xfe;//
ADC10_1_StartADC();
delay(50);
PRT1DR=0x0f;
while(ADC10_1_fIsDataAvailable==0); b=ADC10_1_iGetDataClearFlag(); j=b/4; a=j%6; for(a=0;a<6;a++) for(i=0;i<15;i++) { PRT1DR=m[a]; delay(150); } /*PRT1DR=0x00; PRT0DR&=~0x80;
PRT0DM2|=0x80; PRT0DM0&=~0x80; PRT0DM1|=0x80; PRT1DM2=0xff; PRT1DM0=0x00; PRT1DM1=0xff; ADC8_1_StopADC(); ADC8_1_Stop(); M8C_Sleep;*/ // Insert your main routine code here. while(1) { ; } // Insert your main routine code here. } |