; ----------------------------------------------------------------
; ------------------------- VU metter ----------------------------

; Na analogni vhod (RA1, pin 18) je pripeljan avdio signal
; Glede na njegovo amplitudo se po vrsti prižiga 12 LED-ic.

; S potenciometrom (vezan kot napetostni delilnik) se nastavlja 
; napetost na sponki RA3 -> Vref+ (zgornja meja logične 1) ADC-ja.


; Grega Morano
; Ljubljana, 4.10.2018
; ----------------------------------------------------------------

; Zacetek programa -----------------------------------------------
	LIST P=16F88
	
	ORG 	0	
	BSF 	3,5	; Na banko 1
	
	MOVLW 	0				
	MOVWF 	6	; TRISB - oooo oooo
	
	MOVLW	6A
	MOVWF	5	; TRISA - oiio ioio

	MOVLW 	72		
	MOVWF 	0F	; OSCON0 - 8MHz clk
	
	MOVLW	20	
	MOVWF	1F	; ADCON1 - Lshift, Vref+ = RA3
	
	BCF 	3,5	; Nazaj na banko 0
		
; Glavna zanka ----------------------------------------------------		
ZANKA	MOVLW 	0xCD		
	MOVWF	1F	; ADCON0 - 8MHz, CH1->RA1, GO, ON
	
CAKEJ	BTFSC	1F,2	; Pocakaj na rezultat
	GOTO	CAKEJ
	
	BTFSC	1E,7
	GOTO	B7
	
	BTFSC	1E,6
	GOTO	B6
	
	BTFSC	1E,5
	GOTO	B5
	
	BTFSC	1E,4
	GOTO	B4
	
	GOTO 	VOL0	; --> GOTO    ZANKA
; Konec glavne zanke -----------------------------------------------
		
; --- Nivoji glasnosti ---------------------------------------------
;12: 1024 - 992
;11:  992 - 912
;10:  912 - 832
;9 :  832 - 736
;8 :  736 - 640
;7 :  640 - 576
;6 :  576 - 512
;5 :  512 - 448
;4 :  448 - 352
;3 :  352 - 256
;2 :  256 - 192
;1 :  192 - 96

;1xxx xxxx		
B7	BTFSC	1E,6	
	GOTO	B76	;11xx xxxx
	GOTO	B75	;10xx xxxx
;11xx xxxx		
B76	BTFSC	1E,5	
	GOTO	B765	;111x xxxx	
	GOTO	B764	;110x xxxx	
;111x xxxx			
B765	BTFSC	1E,4	
	GOTO 	B7654	;1111 xxxx
	GOTO	B7653	;1110 xxxx
;1111 xxxx			
B7654	BTFSC	1E,3	
	GOTO	VOL12	;1111 1xxx = >992
	GOTO	VOL11	;1111 0xxx = >960	
;1110 xxxx			
B7653	BTFSC	1E,3	
	GOTO	VOL11	;1110 1xxx = >928	
	GOTO 	B7652	;1110 0xxx 
;1110 0xxx		
B7652	BTFSC	1E,2	
	GOTO	VOL11	;1110 01xx = >912
	GOTO	VOL10	;1110 00xx = >896		
;110x xxxx	
B764	BTFSC	1E,4	
	GOTO	VOL10	;1101 xxxx = >832
	GOTO	VOL9	;1100 xxxx = >768
;10xx xxxx	
B75	BTFSC	1E,5
	GOTO	B754	;101x xxxx 
	GOTO	B74	;100x xxxx 
;101x xxxx			
B754	BTFSC	1E,4
	GOTO	B7543	;1011 xxxx
	GOTO	VOL8	;1010 xxxx = >640	
;1011 xxxx
B7543	BTFSC	1E,3
	GOTO 	VOL9	;1011 1xxx = >736
	GOTO	VOL8	;1011 0xxx = >720		
;100x xxxx			
B74	BTFSC	1E,4
	GOTO	VOL7	;1001 xxxx = >576
	GOTO	VOL6	;1000 xxxx = >512
		
;01xx xxxx		
B6	BTFSC	1E,5
	GOTO	B65	;011x xxxx
	GOTO	B64	;010x xxxx
;011x xxxx		
B65	BTFSC	1E,4
	GOTO	VOL5	;0111 xxxx = >448
	GOTO	VOL4	;0110 xxxx = >384
;010x xxxx
B64	BTFSC	1E,4
	GOTO	B643	;0101 xxxx
	GOTO	VOL3	;0100 xxxx = >256
;0101 xxxx		
B643	BTFSC	1E,3
	GOTO	VOL4	;0101 1xxx = >352
	GOTO	VOL3	;0101 0xxx = >320
			
;001x xxxx
B5	BTFSC	1E,4
	GOTO	VOL2	;0011 xxxx = >192
	GOTO	VOL1	;0010 xxxx
		
;0001 xxxx
B4	BTFSC 	1E,3	
	GOTO	VOL1	;0001 1xxx = >96
	GOTO 	VOL0	;0001 0xxx
		
;--- Volumen ------------------------------------------------
;LED 12 - RA2
;LED 11 - RA4
;LED 10 - RA0
;LED 9  - RA7
;LED 8  - RB7
;LED 7  - RB6
;LED 6  - RB5
;LED 5  - RB4
;LED 4  - RB0
;LED 3  - RB1
;LED 2  - RB2
;LED 1  - RB3
		
VOL12	MOVLW	0xFF
	MOVWF 	6
	MOVLW	95
	MOVWF 	5
	GOTO	ZANKA
		
VOL11	MOVLW	0xFF
	MOVWF 	6
	MOVLW	91
	MOVWF 	5
	GOTO	ZANKA
		
VOL10	MOVLW	0xFF
	MOVWF 	6
	MOVLW	81
	MOVWF 	5
	GOTO	ZANKA
		
VOL9	MOVLW	0xFF
	MOVWF 	6
	MOVLW	80
	MOVWF 	5
	GOTO	ZANKA
		
VOL8	MOVLW	0xFF
	MOVWF 	6
	MOVLW	0
	MOVWF 	5
	GOTO	ZANKA
		
VOL7	MOVLW	7F
	MOVWF 	6
	MOVLW	0
	MOVWF 	5
	GOTO	ZANKA
		
VOL6	MOVLW	3F
	MOVWF 	6
	MOVLW	0
	MOVWF 	5
	GOTO	ZANKA
		
VOL5	MOVLW	1F
	MOVWF 	6
	MOVLW	0
	MOVWF 	5
	GOTO	ZANKA

VOL4	MOVLW	0x0F
	MOVWF 	6
	MOVLW	0
	MOVWF 	5
	GOTO	ZANKA
		
VOL3	MOVLW	0x0E
	MOVWF 	6
	MOVLW	0
	MOVWF 	5
	GOTO	ZANKA
	
VOL2	MOVLW	0x0C
	MOVWF 	6
	MOVLW	0
	MOVWF 	5
	GOTO	ZANKA
		
VOL1	MOVLW	8
	MOVWF 	6
	MOVLW	0
	MOVWF 	5
	GOTO	ZANKA

VOL0	MOVLW	0
	MOVWF 	6
	MOVLW	0
	MOVWF	5
	GOTO	ZANKA
			
	ORG 	2007
	DW 	2950
		
	END
; Konec programa ------------------------------------------------