坛子里很少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)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
leofoolish
1楼-- · 2020-02-09 06:57
回复【6楼】eagle_avr  
怪了,为什么捏!
-----------------------------------------------------------------------

我也很想知道,看汇编也是对的....BTFSC
eagle_avr
2楼-- · 2020-02-09 08:37
哦,谢谢5楼的兄弟!
eagle_avr
3楼-- · 2020-02-09 14:35
我搞错了,应该是 while(ADCON0&0x04);或者while(GODONE != 0)。而非while(!(ADCON0&0x04))。
      逻辑错误!
      ╮(╯▽╰)╭!!!

一周热门 更多>