初级会员 
  
	- 积分
 - 86
 
        - 金钱
 - 86 
 
       - 注册时间
 - 2019-5-10
 
      - 在线时间
 - 31 小时
 
 
 
 | 
 
3金钱 
原因如题,现在的问题是如果使用ADC_Process()这个函数,程序就死机,如果直接写在while中就没有问题。并且这个程序也不能写Uart0_ISR(void) interrupt 4,Adc0等中断服务函数,一写也会死机,求助各位大神!!下面是部分代码: 
void main() 
{ 
         
        PCA0MD&=~0x40;                                                //看门狗禁止         
         
        SysTick_Init();                                                //时钟初始化 
        Port_Init();                                                        //端口初始化 
         
        UART0_Init();                                                        //串口初始化 
        ADC_Init();                                                                //ADC初始化 
  AD0INT = 0;                                                                //中断标志位清0 
  ADC_Proc(ADC_CCONV);      //连续转换 
         
        EA=1;                    //总中断 
        de=1;                                                                                        //TX使能,RX禁止 
         
        ES0=1;                                                                                 
         
        while(1) 
        {                                 
         ADC_Process(); 
         Delay_ms(500); 
        }         
} 
 
 
在adc.c中写的: 
void ADC_Process() 
{ 
         unsigned long mV=0; 
   static LONGDATA rawValue; 
         unsigned char chnl=0; 
         
         while(!AD0INT); 
         AD0INT = 0;                                                                                                //转换标志清0                  
         EIE1   |= 0x00;           
        //记录ADC0输出 
   rawValue.Byte[Byte3] = 0x00;                                         
   rawValue.Byte[Byte2] = (unsigned char)ADC0H;                  //高字节 
   rawValue.Byte[Byte1] = (unsigned char)ADC0M;                        //中字节 
   rawValue.Byte[Byte0] = (unsigned char)ADC0L;                        //低字节         
         mV = rawValue.result/_AVREF;                        //计算结果                 
         printf("Channel %bd Voltage is: %6ld mV\r\n",chnl+1,mV);         
         if(chnl<7) 
                        chnl++;                                                                                                                        //切换通道 
         else 
                  chnl=0;                         
         ADC0MUX = 0x08 + (chnl<<4);        //通道使能                 
         ADC_Proc(ADC_CCONV);                                                                        //连续转换模式          
         EIE1   |= 0x08; 
} 
 
 
 |   
 
 
 
 
 
 |