;Vasútmodell terepasztal fénysorompó
;és jelző vezérlés
;Szitkovits Gábor
;2010 04 

	LIST	P=16F84A			;Proci választás
	#INCLUDE	"P16F84A.inc"	;Szimbólumok használata

	__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF	;Konfig beállítása

;---------Gombok definiálása----------------------------------

		#DEFINE	G1	PORTA,2		;Gomb 1 PIC 1-es láb
		#DEFINE	G2	PORTA,3		;Gomb 2 PIC 2-es láb
		#DEFINE	SF1	PORTB,0		;Sorompó fehér led
		#DEFINE	SP1	PORTB,1		;Sorompó piros led 1
		#DEFINE	SP2	PORTB,2		;Sorompó piros led 2
		#DEFINE	JP	PORTB,4		;Jelző piros
		#DEFINE	JS	PORTB,5		;Jelző sárga

;---------idők beállítása-------------------------------------

		CBLOCK	0x0C
			v1
			v2
			v3
			v4
		ENDC

;--------------------------------------------------------------

			ORG	0				;0h címen kezdődik a progi
			GOTO START			;Ugrás a Főprogiba
			ORG	4				;Megszakításoknak lefoglalt cím
;--------------------------------------------------------------
START
	
	BANKSEL	TRISA		;Váltsunk a TRISA-t tartalmazó BANK-be
	MOVLW	b'00011111'	;Első 2 Ki többi be
	MOVWF	TRISA		;PORTA input lesz
	MOVLW	b'00000000'	;PORTB összes kimenet
	MOVWF	TRISB		;PORTB output lesz
	BANKSEL	PORTB		;Váltsuk a PORTB-t tartalmazó BANK-be
	CLRF	PORTB		;Töröljük a port b-t.
;---------------------------------------------------------------
SF						;Sorompó fehér villogó
	BTFSS	G1			;Gomb 1 ?
	GOTO	SP			;Ha gomb 1 nyom akkor piros kapcs
	BCF		JS			;Jelző sárga ki
	BSF		SF1			;Fehér led villog
	CALL	SPV
	BCF		SF1
	CALL	SPV
	BTFSS	PORTB,4		;Jelző állapot figyelés, 5mp időzítés
	CALL	JEP			;Jelző rutin
	GOTO	SF			;Visszatérés addig míg nincs gomb
JELP
	BSF		JP			;Jelző piros led bekapcs ha fehér a sorompó
	GOTO	SF
JELS
	BSF		JS
	GOTO	SP
SP						;Sorompó piros bekapcs
	BTFSS	G1			;Gomb 1
	GOTO	SF			;Ha gomb 1 nyom még 1x akkor vissza fehér
	BCF		JP			;Jelző piros ki
	BCF		SP2
	BSF		SP1			;Sorompó piros LED 1
	CALL	SPV
	BCF		SP1			;Sorompó piros LED 2
	BSF		SP2
	CALL	SPV			;Sorompó piros LED villogó rutin
	BTFSS	PORTB,5
	CALL	JES
	GOTO	SP

;----------Szubrutinok------------------------------------------
SPV						;Sorompó piros villogó szubrutin
		MOVLW	.2
		MOVWF	v1
VILL1
		MOVLW	.5
		MOVWF	v2
VILL2
		CLRWDT
		NOP
		NOP
		NOP
		NOP
		DECFSZ	v2,F	;v2 Csökkentése
		GOTO	VILL2
		DECFSZ	v1,F
		GOTO	VILL1
	RETURN				;Szubrutinból kiszáll
JEP
		MOVLW	.2
		MOVWF	v3
J1
		MOVLW	.5
		MOVWF	v4
J2
		NOP
		NOP
		NOP
		NOP
		NOP
		DECFSZ	v4,F
		GOTO	J2
		DECFSZ	v3,F
		GOTO	JELP
	RETURN
JES
		MOVLW	.2
		MOVWF	v3
JS1
		MOVLW	.5
		MOVWF	v4
JS2
		NOP
		NOP
		NOP
		NOP
		DECFSZ	v4,F
		GOTO	JS2
		DECFSZ	v3,F
		GOTO	JELS
	RETURN
END						;Progi vége	