	PROCESSOR 16F690
	#INCLUDE "P16F690.INC"
	__CONFIG _WDT_OFF & _INTOSCIO & _PWRTE_ON 	
	CBLOCK 0x70

		Valto
		Hangszam
		Ccpr
		
		ENDC
		
		org		0

;=================================================================

Main
		
; PWM period

		banksel		PR2				; bank1
		movlw		0x3f
		movwf		PR2
		bsf			PIE1,0		

; ECCP config

		banksel		CCP1CON			; bank0
		movlw		B'00001100'
		movwf		CCP1CON
		
; Timer1 config

		movlw		B'00110000'
		movwf		T1CON
		clrf		TMR1L
		clrf		TMR1H
		
		movlw		B'00010010'
		movwf		Hangszam
	
;=================================================================		

Start
		decf		Hangszam,1
		movf		Hangszam,0
		movwf		Valto
		decfsz		Valto,1
		goto		$+2
		goto		Main		; Vege = csak egyszer játsza le a zenét
		decfsz		Valto,1			
		goto		$+2
		goto		Hang16
		decfsz		Valto,1
		goto		$+2
		goto		Hang15
		decfsz		Valto,1
		goto		$+2
		goto		Hang14
		decfsz		Valto,1
		goto		$+2
		goto		Hang13
		decfsz		Valto,1
		goto		$+2
		goto		Hang12
		decfsz		Valto,1
		goto		$+2
		goto		Hang11
		decfsz		Valto,1
		goto		$+2
		goto		Hang10
		decfsz		Valto,1
		goto		$+2
		goto		Hang09
		decfsz		Valto,1
		goto		$+2
		goto		Hang08
		decfsz		Valto,1
		goto		$+2
		goto		Hang07
		decfsz		Valto,1
		goto		$+2
		goto		Hang06
		decfsz		Valto,1
		goto		$+2
		goto		Hang05		
		decfsz		Valto,1
		goto		$+2
		goto		Hang04
		decfsz		Valto,1
		goto		$+2
		goto		Hang03
		decfsz		Valto,1
		goto		Hang01
		goto		Hang02

;==========================================================
		
Hang01
		bcf			PIR1,0
		bsf			T1CON,0
		

; PWM duty cycle
		
Start1	
		movlw		B'01100100'		; 1. hang
		movwf		CCPR1L
		call		Hang
		goto		Start1
		
;==========================================================

Hang02
		bcf			PIR1,0
		bsf			T1CON,0
	
; PWM duty cycle

Start2	
		movlw		B'01100100'		; 2. hang
		movwf		CCPR1L
		call		Hang
		goto		Start2		
		
;=================================================================

Hang03
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle
		
Start3	
		movlw		B'00010010'		; 3. hang
		movwf		CCPR1L
		call		Hang
		goto		Start3
		
;==========================================================

Hang04
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle

Start4	
		movlw		B'00010010'		; 4. hang
		movwf		CCPR1L
		call		Hang
		goto		Start4
		
;==========================================================
		
Hang05
		bcf			PIR1,0
		bsf			T1CON,0
		
; PWM duty cycle
		
Start5	
		movlw		B'00010000'		; 5. hang
		movwf		CCPR1L
		call		Hang
		goto		Start5
		
;==========================================================

Hang06
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle

Start6	
		movlw		B'00010000'		; 6. hang
		movwf		CCPR1L
		call		Hang
		goto		Start6		
		
;=================================================================

Hang07
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle
		
Start7	
		movlw		B'00010010'		; 7. hang
		movwf		CCPR1L
		call		Hang
		goto		Start7
		
;==========================================================

Hang08
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle

Start8	
		movlw		B'00010010'		; 8. hang
		movwf		CCPR1L
		call		Hang
		goto		Start8		
				
;==========================================================		
		
Hang09
		bcf			PIR1,0
		bsf			T1CON,0
		
; PWM duty cycle
		
Start9	
		movlw		B'00010100'		; 9. hang
		movwf		CCPR1L
		call		Hang
		goto		Start9
		
;==========================================================

Hang10
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle

Start10	
		movlw		B'00010100'		; 10. hang
		movwf		CCPR1L
		call		Hang
		goto		Start10		
		
;=================================================================

Hang11
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle
		
Start11	
		movlw		B'00010101'		; 11. hang
		movwf		CCPR1L
		call		Hang
		goto		Start11
		
;==========================================================

Hang12
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle

Start12	
		movlw		B'00010101'		; 12. hang
		movwf		CCPR1L
		call		Hang
		goto		Start12
		
;==========================================================
		
Hang13
		bcf			PIR1,0
		bsf			T1CON,0
		
; PWM duty cycle
		
Start13	
		movlw		B'00101110'		; 13. hang
		movwf		CCPR1L
		call		Hang
		goto		Start13
		
;==========================================================

Hang14
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle

Start14	
		movlw		B'00101110'		; 14. hang
		movwf		CCPR1L
		call		Hang
		goto		Start14		
		
;=================================================================

Hang15
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle
		
Start15	
		movlw		B'01100100'		; 15. hang
		movwf		CCPR1L
		call		Hang
		goto		Start15
		
;==========================================================

Hang16
		bcf			PIR1,0
		bsf			T1CON,0

; PWM duty cycle

Start16	
		movlw		B'01100100'		; 16. hang
		movwf		CCPR1L
		call		Hang
		goto		Start16		
				
				
;=================================================================

Hang
		
; Timer2 config
		
		bsf			T2CON,2
		movf		CCPR1L,0
		movwf		Ccpr		

; Háromszög

Decr
		btfss		PIR1,0
		goto		$+4
		bcf			T2CON,2
		bcf			PIR1,1
		goto		Start
		decfsz		CCPR1L,1
		goto		$+2
		goto		Incr
		call		Outen
		goto		Decr
		
Incr
		decfsz		Ccpr,1
		goto		$+2
		return
		incf		CCPR1L,1
		call		Outen
		goto		Incr
		
;===========================================================

; PWM output enable
		
Outen		
		btfss		PIR1,1		
		goto		$-1
		banksel		TRISC			; bank1
		bcf			TRISC,5
		banksel		ECCPAS			; bank0
		bcf			ECCPAS,7
		return

;==============================================================

Vege
		goto		Vege
		
		
		end						