Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "p16F870.inc"
- ; CONFIG
- ; __config 0xFFBA
- __CONFIG _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _CP_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_ALL
- cblock 0x20
- d1
- d2
- endc
- RES_VECT CODE 0x0000 ; processor reset vector
- GOTO INIT ; go to beginning of program
- ; TODO ADD INTERRUPTS HERE IF USED
- MAIN_PROG CODE ; let linker place main program
- INIT
- BANKSEL PR2 ;Define PWM frequency
- movlw b'11111001'
- movwf PR2
- BANKSEL CCP1CON ;Enable PWM
- movlw b'00001100'
- movwf CCP1CON
- BANKSEL TRISC ;Define PC2 as Output
- clrf TRISC
- BANKSEL T2CON ;enable TMR2
- movlw b'00000100'
- movwf T2CON
- BANKSEL ADCON1
- BCF ADCON1, 7 ;left justified
- BANKSEL ADCON0
- BSF ADCON0, 0 ;A/D is on
- BCF ADCON0, 5 ;Select Channel0 / RA0
- BCF ADCON0, 4
- BCF ADCON0, 3
- BSF ADCON0, 7 ;Set Conversion Clock
- BCF ADCON0, 6
- Main
- BSF ADCON0, 2 ;start ADC
- loop
- BTFSC ADCON0, 2 ;ADC Ready?
- GOTO loop ;check again
- movfw ADRESH ;get upper 8 bit
- movwf CCPR1L ;output as PWM
- call _delay_15ms ;wait 15 ms
- goto Main
- _delay_15ms
- ;37493 cycles
- movlw 0x4A
- movwf d1
- movlw 0x1E
- movwf d2
- _delay_15ms_0
- decfsz d1, f
- goto $+2
- decfsz d2, f
- goto _delay_15ms_0
- ;3 cycles
- goto $+1
- nop
- ;4 cycles (including call)
- return
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement