PROCESSOR 16F819
#include "p16f819.inc"
__config 0x3f14
ORG 0x00
goto Main
ORG 0x04
goto Main
Main banksel CCP1CON
clrf CCP1CON ;everything zero
bsf CCP1CON, CCP1M3 ;set register
bsf CCP1CON, CCP1M2 ;on pwm
banksel PR2
movlw 0xFF
movwf PR2
banksel TRISB
movlw b'00000000'
movwf TRISB
banksel T2CON
clrf T2CON
clrf TMR2
bsf T2CON, T2CKPS1 ;prescaler=16 / freq=3.05 kHz
bsf T2CON, TMR2ON ;timer2 on
movlw 0x00
movwf CCPR1L
clrf TMR0
clrf INTCON
banksel OPTION_REG
movlw b'00000110' ;Set prescaler timer0=32 so it takes 4.1 ms
movwf OPTION_REG
banksel INTCON
bsf INTCON, TMR0IE
bsf INTCON, PEIE
bsf INTCON, GIE
Loop btfss INTCON, TMR0IF ;continue on overflow and
goto Loop
incf CCPR1L,1 ;raise duty cycle
bcf INTCON, TMR0IF ;turn flag off
goto Loop ;return
End