C30 컴파일러에서는 I/O포트의 이름을 이용하여 포트 전체를 엑세스 할 수 있으며, 구조체를 이용하여 I/O 포트의 특정 비트도 엑세스할 수 있다. 이들 I/O 포트 변수들은 헤더 파일에서 각각 정의되어 있으며, 링커가 각각의 메모리 영역을 맵핑해 주고 있다. 디바이스 헤더파일 중 P24FJ128GA010.h 파일을 열어서 보면 PORTD의 각 비트들에 대해 구조체로 선언한 것을 볼 수 있다.


 링커스크립트 파일인 P24FJ128GA010.gld 파일을 열어 보면 다음과 같이 I/O포트 변수들의 어드레스를 선언한 것을 볼 수 있다. 이들 어드레스는 데이터 시트의 PORTD 어드레스와 동일한 값을 가지고 있다. 따라서 이들 I/O포트 변수를 이용하여 실제 I/O포트의 입출력을 제어 할 수 있다.



소스코드

#include <p24fj128ga010.h> 
#include <stdio.h>

int main(void) 

    TRISD = 0x0000; 
    PORTDbits.RD0 = 1; 
    
    while(1); 
}


결과

+ Recent posts