我正在尝试在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;
}
}
}
答案 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;
}
}
}