坛子里很少PIC的例子,刚验证的16F877A模数转换eepromuartpwm

2020-02-08 12:20发布

用查询方式读取AD转换的结果,根据手册里说的“A/D Acquisition Requirements ”,__delay_ms(100);100毫秒的等待应该足够了。
     但是只能单步执行才能读到结果,全速运行和烧写到片子里就读不到结果。
     代码如下:
     short int ADC_Smpl(unsigned char Chl)
      {
          ADRESH = 0;//清结果寄存器
          ADRESL = 0;
       
          ADCON0 |= Chl<<3;//选择通道
       
          ADCON0 |= 0x01;//开采样
       
          __delay_ms(100);//等待采样
       
          ADCON0 |= 0x04;//开转换
       
          while(!(ADCON0&0x04));//等待转换
       
          H_BYTE=ADRESH;
       
          L_BYTE=ADRESL;//返回结果
       
          ADCON0 &= 0xFE;//关采样
      }
     
      后来用中断方式,才恢复正常。源文件如下:
      PIC16F877A_AD/UART/EEPROM例程ourdev_670648UMTOBW.rar(文件大小:4K) (原文件名:main.rar)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。