0

我试图在我的 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;
        }
    }
}
4

1 回答 1

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;
        }
    }
}
于 2014-10-31T18:02:09.930 回答