CLRF	CCP1CON	;CCP MODULE IS OFF
	CLRF	TMR2	;CLEAR TIMER2
	MOVLW	0X7F	;
	MOVWF	PR2
	CALL	A2D
	CLRF	INTCON		;DISABLE INTRPTS ANDCLEAR T0IF
	BSF	STATUS,RP0
	BCF	TRISC,2		;MAKE PIN 2 PWM OUTPUT
	CLRF	PIE1		;DISABLE PERIPHERAL INTS
	BCF	STATUS,RP0
	CLRF	PIR1		;CLR PER INT FLAGS
	MOVLW	0X2C		;PWM  MODE, 2LSBs OF DUTY CYCLE=10
	MOVWF	CCP1CON
	BSF	T2CON,TMR2ON	;TIME2 STRTS TO INCREMENT
	;
	 ;CCP1 INT IS DISABLED
	 ;DO POLLING ON THE TMR2 INT FLAG BIT
	;
PWM_PERIOD_MATCH
	BTFSS	PIR1,TMR2IF
	GOTO	PWM_PERIOD_MATCH
	;
	 ;UPDATE THIS PWM PERIOD AND THE FOLLOWING PWM DUTY CYCLE
	;
	BCF	PIR1,TMR2IF
A2D     bsf     STATUS,RP0
        MOVLW   B'00000001'
        MOVWF   TRISA           ;All outputs except RA0.
        CLRF    TRISB		;RA0 is wiper of 50k pot/Vin
        CLRF    TRISC		;PortB is 8 LED output to show 
        MOVLW   B'00001110'     ;Hex value of Vin from pot.
        MOVWF   ADCON1		;left justified, RA0 = input
;/*-----Set up A2D parameters
        MOVLW   B'11010111'     ;prescaler 1:256 tmr0, internal clock
        MOVWF   OPTION_REG
        BCF     STATUS,RP0
        MOVLW   B'01000001'     ;a2d = on, ch0, fosc/8
        MOVWF   ADCON0
;/*-----Delay loop to settle A2D, similar to de-bounce???
mnloop  btfss   INTCON,T0IF     ;50us loop delay @ 4Mhz
        goto    mnloop
;/*-----Stop timer0 interrupt
        BCF     INTCON,T0IF
        BSF     ADCON0,GO_DONE  ;start a2d conversion
WAITA2D NOP                     ;wait 4 finish
        BTFSC   ADCON0,GO_DONE
        GOTO    WAITA2D
;/*-----Put A2D/PWM value in W and send to ports.
        MOVF    ADRESH,W        ;upper 8 bits-ignor lower 3
        MOVWF	CCPR1L		;PWM is output on pin 13 of 16F873
        MOVWF   PORTB		;output Hex value to LEDs
        RETURN			;DUTY CYCLE IS 25% OF PWM PERIOD
        
   END     	


