PIC18 마이크로컨트롤러 C 프로그래밍 입문: MikroC로 첫 펌웨어 작성하기
PIC18 마이크로컨트롤러 C 프로그래밍: MikroC IDE로 단계별 실습
마이크로컨트롤러 프로그래밍이란?
특수 목적용 펌웨어를 C/어셈블리어로 작성해 컴파일러로 헥스(HEX) 파일 생성 → 프로그래머(하드웨어)로 마이컴 플래시 메모리에 기록하는 전 과정.
마이크로칩 테크놀로지(Microchip)는 세계 2대 IC 제조사로, 6핀(PIC10F)부터 144핀(PIC32)까지 폭넓은 라인업 보유.
PIC 시리즈 분류
- 8비트: PIC10, PIC12, PIC16, PIC18
- 16비트: PIC24, dsPIC30, dsPIC33
- 32비트: PIC32
대상 칩: PIC18F452 (대표적 8비트 PIC18)
- 40핀, 32KB 프로그램 메모리, 최대 40MHz 크리스탈
- 핀당 25mA 싱크/소스 → 트랜지스터 없이 LED 직접 구동 가능
- 외부 인터럽트 3개, 16비트 타이머 2개, 8비트 타이머 1개
- 캡처/비교 모듈, 비교기 모듈, 내장 ADC (외부 ADC 불필요)
- 통신 모듈: USART(RS232), I2C, 1-Wire, 병렬 슬레이브 포트
- 초보자~전문가까지 아우르는 가성비 칩
개발 환경: MikroC for PIC
- 풍부한 내장 라이브러리 (딜레이, LCD, USART, I2C 등)
- 직관적 문법, MPLAB X 대비 학습 곡선 완만
- 헥스/바이너리/10진수 변환 계산기 등 유틸 내장
- 유료 소프트웨어 (무료 대안: Microchip MPLAB X IDE + XC8 컴파일러)
MikroC 새 프로젝트 생성 4단계
- 바탕화면 MikroC 아이콘 더블클릭 실행
- 메뉴 Project → New Project 클릭
- 대상 MCU(PIC18F452), 클럭 속도, 프로젝트명/저장 경로 설정 후 Next 연타
- 코드 작성 에디터 화면 진입
PIC18 C 코드 작성 핵심 포인트
포트 입출력 설정: TRIS 레지스터
각 포트별 TRISx 레지스터로 핀 방향 제어 (x = A,B,C,D,E...)
- 출력: TRISx = 0x00 (전 핀 출력)
- 입력: TRISx = 0xFF (전 핀 입력)
- 핀별 개별 설정: 예: TRISB = 0x09 → RB0, RB3 입력, 나머지 출력
딜레이 함수
라이브러리 포함 시 Delay_ms(ms) 사용. 예: Delay_ms(500) = 500ms 지연.
첫 예제: PORTB 전체 토글 (LED 8개 점멸)
void main() {
TRISB = 0x00; // PORTB 전 핀 출력 설정
while(1) { // 무한 루프
PORTB = 0x00; // 전 핀 LOW (0V)
Delay_ms(500); // 0.5초 대기
PORTB = 0xFF; // 전 핀 HIGH (5V)
Delay_ms(500);
}
}
빌드 및 헥스 파일 생성
툴바 Build All 버튼 클릭 → 저장 폴더에 .hex 파일 생성.
타깃 보드에 기록(버닝)
- PICKit 등 전용 프로그래머로 USB 연결 후 헥스 파일 기록
- 또는 Proteus 시뮬레이션으로 가상 검증 가능
다음 단계 학습 로드맵
- 인터럽트 기반 이벤트 처리
- 타이머/카운터 활용 (PWM 생성, 정확한 시간 측정)
- ADC 활용 아날로그 센서 읽기
- USART/I2C/SPI 통신 구현
- 저전력 모드(Sleep/Idle) 활용
- MPLAB X + XC8 무료 툴체인 전환
참고 자료
- 마이크로프로세서 vs 마이크로컨트롤러 차이
- 8085 vs 8086 마이크로프로세서 비교
- MAX232 구조·동작·응용
- RS232 시리얼 통신 프로토콜 동작 원리
- 555 타이머 박수 스위치 프로젝트
- 온라인 회로 설계·시뮬레이션 툴 10+
- SMD 저항 코드 읽는 법