读取模拟PIC端口

时间:2014-05-06 14:35:04

标签: embedded pic

我试图读取PIC16F690上的许多模拟端口。我可以阅读2但我无法阅读第3篇。即下面,AN1,AN2起作用,但AN3不起作用。我对TRISA,ANSEL,ADCON1或ADCON0做错了吗?

TRISA   = 0b00010111;         // all port A:0,1,2,4 as inputs
ANSEL   = 0b11111111;         // RA0->RA1 are Analog
ADCON1  = 0b01010000;         // select ADC clock (500 Khz)

ADCON0  = 0b10000101;         //peripheral 1 - PORT A:1 - AN1
__delay_us(250);
unsigned short nRet;
ADCON0 |= 0x02;             // Start conversion
while(ADCON0 & 0x02)        // wait for conversion
 {
 }
 nRet = ADRESH;
 nRet <<=8;
 nRet += ADRESL;


ADCON0  = 0b10001001;         //peripheral 2 - PORT A:2 - AN2
__delay_us(250);
unsigned short nRet;
ADCON0 |= 0x02;             // Start conversion
while(ADCON0 & 0x02)        // wait for conversion
{
 }
 nRet = ADRESH;
 nRet <<=8;
 nRet += ADRESL;

    ADCON0  = 0b10001101;         //peripheral 2 - PORT A:4 - AN3
    __delay_us(250);
    unsigned short nRet;
    ADCON0 |= 0x02;             // Start conversion

    while(ADCON0 & 0x02)        // wait for conversion
    {
    }
    nRet = ADRESH;
    nRet <<=8;
    nRet += ADRESL;

   return (nRet & 0x3FF);

1 个答案:

答案 0 :(得分:0)

你的时钟模式是什么?

查看数据表,时钟模式部分或p176,配置位,在CONFIG寄存器中,您可以选择不同的时钟模式。

http://ww1.microchip.com/downloads/en/DeviceDoc/41262A.pdf

您可能正在使用INTOSC模式(CONFIG.FOSC2-0 = 101)。

 "CLKOUT function on RA4/AN3/T1G/OSC2/CLKOUT pin, I/O function on RA5/T1CKI/OSC1/CLKIN". 

您可以使用INTOSCIO(CONFIG.FOSC2-0 = 100)

   "I/O function on RA4/AN3/T1G/OSC2/CLKOUT pin, I/O function on RA5/T1CKI/OSC1/CLKIN"

RC同样的事情 - &gt; RCIO模式(CONFIG.FOSC2-0 = 111 - &gt; CONFIG.FOSC2-0 = 110)。

CLKOUT模式很可能超越A / D模式。尝试更改时钟模式!

再见,