본문 바로가기

PIC/XC8

[XC8]18F452에서 PWM 사용하기

18F452 에서 XC8 컴파일러를 이용하여 CCP1에서 38kHz의 듀티비 50%의 신호를 출력하는 소스입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* 
 * File:   main.c
 * Author: JangSeongJin
 *
 * Created on 2014년 1월 2일 (목), 오후 5:49
 */
 
#include <xc.h> //XC 기본으로 추가
#include <pic18F452.h>
 
#pragma config OSCS = OFF
#pragma config OSC = HS
#pragma config WDT = OFF
#pragma config LVP = ON
 
typedef unsigned char BYTE;
typedef unsigned int  WORD;
 
void Initial_PWM(void) {
    CCP1CONbits.CCP1M = 0b1100; //CCPx Mode Select bits
 
    CCPR1L = 0x42; //20e6/CCPR1L:CCP1CONbits.DC1B = 75.76kHz 50% Duty Cycle
    CCP1CONbits.DC1B = 0b00;
}
 
void Initial_TIMER(void) {
    T2CONbits.TMR2ON = 1; //Timer2 On bit
    T2CONbits.T2CKPS = 0b00; //Timer2 Clock Prescale Select bits
    PR2 = 131; //20e6/4/1/(PR2+1) = 37.88kHz
}
 
void Initial_PORT(void) {
    TRISD = 0x00; //LED OUTPUT으로 설정
    PORTD = 0x00; //LED 전부 0 출력
 
    TRISCbits.RC2 = 0; //PWM OUTPUT으로 설정
}
 
void main(void) {
 
    Initial_PORT();
    Initial_PWM();
    Initial_TIMER();
 
    while (1) {
   }
}


'PIC > XC8' 카테고리의 다른 글

[XC8]18F452에서 IR 리모콘 구현  (0) 2014.01.03
[XC8]18F452 UART 시리얼 통신  (0) 2014.01.02
[XC8]18F452 PORT Control  (0) 2014.01.02