发 帖  
原厂入驻New
张飞60小时讲透半桥串联谐振软开关电源设计,立即学习!
[问答] 请问我该如何停止这一点,并获得准确的阅读?
33 LED 电压
分享
用PIC16F676我尝试读取AN3引脚上的电压。条件是如果AN3>=3伏特的电压读数,RC4上的LED将点亮。但是在达到规定电压之前大约0.3伏的LED开始闪烁,当达到3.2伏时,LED点亮。我如何停止这一点,并获得准确的阅读…?

以上来自于百度翻译


      以下为原文

    With the PIC16F676 I am trying to read voltage on the AN3 pin.
The condition is IF the voltage reading on AN3 >= 3 Volt, the LED on RC4 will light up.
But around 0.3v prior reaching the defined voltage the LED starts to flicker and when 3.2V is reached the LED lights up. HOW DO I STOP THIS AND GET PRECISE with the reading..?

#include <htc.h>
#include <pic16f676.h>

#define _XTAL_FREQ 4000000
__CONFIG(FOSC_INTRCCLK&WDTE_OFF&PWRTE_OFF&MCLRE_OFF&CPD_OFF&CP_OFF&BOREN_OFF);


unsigned int reading;

void main(){


    ADCON0=0b00001101;
    ADCON1=0b00000000;
    ANSEL=0b00001000;
    CMCON=0x07;
    VRCON=0x00;

    OPTION_REGbits.PSA=1;
    OPTION_REGbits.PS2=0;
    OPTION_REGbits.PS1=0;
    OPTION_REGbits.PS0=0;
    OPTION_REGbits.T0CS=0;
    OPTION_REGbits.T0SE=0;


    TRISC4=0; // LED PIN
    TRISA4=1; // Analog pin

    RC4=0; // SET OUTPUTS TO 0 initially


    while(1){

        GO_DONE=1;
        while (GO_DONE);
        reading = ADRESH; // CALCULATION
              // 5V = 255 Divisions
              // 1V = 51 Divisions
        if(reading>=153){ // 3V = 51*3 = 153 Divisions
           RC1=1;
           RC4=1;
       }

       else RC4=0;

}
}
0
2019-6-13 09:07:46   评论 分享淘帖 邀请回答
1个回答
另外,看一下数据表中的表7-1。看起来您正在运行内部4MHz振荡器,并且您已经将零写入ADCON1,ADCON1选择Tad=2Tosc,所以您的Tad时间太短。

以上来自于百度翻译


      以下为原文

    Also, have a look at table 7-1 in the datasheet.
It appears you are running off the internal 4MHz oscillator, and you have written zero to ADCON1, which selects Tad=2 Tosc, so your Tad time is too short.
 
2019-6-13 09:38:03 评论

举报

只有小组成员才能发言,加入小组>>

43个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表