Io 为输入和输出配置PIC端口

Io 为输入和输出配置PIC端口,io,port,pic18,Io,Port,Pic18,我试图在我的PIC18F4620上使用端口A的两个引脚,一个作为输出,另一个作为输入。我已经写了一个简单的程序来实现这一点。但是,当我在主板上调试程序时,输出不会随输入而改变 我理解如果我只使用一个管脚,为什么每次都需要更改管脚配置,但我使用两个不同的管脚(A0和A1)这一事实让我感到困惑。此外,当我使用两个不同的端口(例如A0和D1)时,输出也会发生变化 我是否遗漏了什么,或者这是我在设计中必须克服的限制 代码如下: #include <xc.h> #include "config

我试图在我的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;
        }
    }
}
#包括
#包括“config.h”
真空总管(真空){
TRISAbits.RA0=1;
TRISAbits.RA1=0;
而(1){
if(PORTAbits.RA0==1){
LATAbits.LA1=0;
}
否则{
LATAbits.LA1=1;
}
}
}

PIC18F4620上的端口A与模拟/数字转换器多路复用,因此在将端口A用作数字I/O之前,您必须配置一些设置。请参阅数据表第91页:

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

#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;
        }
    }
}
#包括
#包括“config.h”
真空总管(真空){
ADCON1=0x0F;//为所有引脚上的数字输入/输出配置A/D
CMCON=0x07;//为数字输入/输出配置比较器
TRISAbits.RA0=1;
TRISAbits.RA1=0;
而(1){
if(PORTAbits.RA0==1){
LATAbits.LA1=0;
}
否则{
LATAbits.LA1=1;
}
}
}