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