配置PIC端口用于输入和输出

时间:2014-04-08 21:36:26

标签: io port pic18

我正在尝试在PIC18F4620上使用端口A的两个引脚,一个作为输出,另一个作为输入。我写了一个应该这样做的简单程序。但是,当我在电路板上调试程序时,输出不会根据输入而改变。

我理解为什么每次如果我只使用一个引脚就需要更改引脚配置,但是我使用两个不同引脚(A0和A1)这一事实让我感到困惑。此外,当我使用两个不同的端口(例如A0和D1)时,输出确实会改变。

我错过了什么,或者这是我在设计中需要解决的限制?

以下是代码:

#include <xc.h>
#include "config.h"

void main(void){
    TRISAbits.RA0 = 1;
    TRISAbits.RA1 = 0;

    while(1){
        if(PORTAbits.RA0 == 1){
            LATAbits.LA1 = 0;
        }
        else{
            LATAbits.LA1 = 1;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

PIC18F4620上的端口A与模拟/数字转换器复用,因此您必须先配置一些设置,然后才能将端口A用作数字I / O.请查看数据表的第91页:

http://ww1.microchip.com/downloads/en/DeviceDoc/39626e.pdf

并将您的代码更改为以下内容:

#include <xc.h>
#include "config.h"

void main(void){

    ADCON1 = 0x0F;  // Configure A/D for digital input/output on all pins
    CMCON = 0x07;   // Configure comparator for digital input/output

    TRISAbits.RA0 = 1;
    TRISAbits.RA1 = 0;

    while(1){
        if(PORTAbits.RA0 == 1){
            LATAbits.LA1 = 0;
        }
        else{
            LATAbits.LA1 = 1;
        }
    }
}