2014-04-08 5 views
0

포트 P의 두 핀을 PIC18F4620에 사용하려고합니다. 하나는 출력으로, 다른 하나는 입력으로 사용하려고합니다. 나는 이것을해야만하는 간단한 프로그램을 작성했다. 그러나 보드에서 프로그램을 디버깅 할 때 출력은 입력에 따라 변경되지 않습니다.입력 및 출력용 PIC 포트 구성

나는 하나의 핀만 사용하는 경우마다 핀 구성을 변경해야하는 이유를 이해하지만, 두 개의 다른 핀 (A0 및 A1)을 사용한다는 사실은 나 혼란 스럽다. 또한 두 개의 다른 포트 (예 : A0 및 D1)를 사용하면 출력이 변경됩니다.

뭔가가 누락 되었습니까, 아니면 제 디자인에서 해결해야하는 제한 사항입니까? 여기

는 코드 다음 PIC18F4620에

#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

포트 A 아날로그/디지털 컨버터를 다중화, 그래서 당신은 디지털 I/O로 포트 A를 사용할 수있게되기 전에 일부 설정을 구성해야합니다. 데이터 시트의 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; 
     } 
    } 
}