;	gpasm -a inhx8m pwm1.asm
;	Port 2 ON/OFF with PWM using interrupt
;	DB Henrik Kressner

;	RTM page 101 and forward


processor	10F322
include		p10f322.inc

	__CONFIG _WDTE_OFF & _FOSC_INTOSC

	org	H'00'  	; Reset vector
	goto	setup

        org     0x04    ; Interrupt vector
        goto    intr

	org	H'05'

;        clrf    CLC1CON
;        clrf    CWG1CON0
;	clrf    PWM2CON
;	clrf    T2CON

setup	clrf    ANSELA          ; All ports are digital I/O
	movlw	B'11111111'
	movwf	TRISA		; Disable all ports
	clrf	PWM1CON
	movlw	0xff
	movwf	PR2		; Set PWM period
	clrf	PWM1DCH
	clrf	PWM1DCL

	; Config timer2
	bcf	PIR1, TMR2IF	; Clear timer2 interrupt flag
	bcf	T2CON, T2CKPS0	; Prescaler
	bcf     T2CON, T2CKPS1	; Prescaler
	bsf	T2CON, TMR2ON	; Enable timer2

	; Enable PWM output pin and wait  ?????????
wait    btfss   PIR1, TMR2IF
        goto    wait

        movlw   B'11111110'
        movwf   TRISA
;	bsf 	PWM1CON, PWM1OE	; Overflødig ???
	movlw	B'11000000'
	movwf	PWM1CON
	movlw	0x80
	movwf	PWM1DCH
        movlw   B'11000000'
        movwf   PWM1DCL

        ; Enable interrupt
        movlw   B'11000000'     ; GEI and PEIE
        movwf   INTCON
        bsf     PIE1, TMR2IE
        bcf     PIR1, TMR2IF

run	goto	run

intr    bcf     PIR1, TMR2IF    ; Enable timer2
        RETFIE



	end

