;**********************************************************************
;   This file is a basic code template for object module code         *
;   generation on the PIC16F57. This file contains the                *
;   basic code building blocks to build upon.  As a project minimum   *
;   the 16F57.lkr file will also be required for this file to         *
;   correctly build. The .lkr files are located in the MPLAB          *  
;   directory.                                                        *
;                                                                     *
;   Refer to the MPASM User's Guide for additional information on     *
;   features of the assembler and linker.                             *
;                                                                     *
;   Refer to the respective PIC data sheet for additional             *
;   information on the instruction set.                               *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Filename:	    xxx.asm                                           *
;    Date:          2007.03.23.                                       *
;    File Version:  V4.0                                              *
;                                                                     *
;    Author:        Czifra Tibor                                      *
;    Company:       Home                                              *
;                                                                     * 
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files required:                                                  *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:   fejlesztés alatt  , rasec gyártmányú kapuvezérlő        * 
;reprodukciója                                      				  *
;                                                                     *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************

	list      p=16F57             ; list directive to define processor
	#include <p16F5x.inc>         ; processor specific variable definitions

	__CONFIG   _CP_OFF & _WDT_OFF & _XT_OSC

; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file. 
; See respective data sheet for additional information on configuration word.

;**************regiszterek***************

	CBLOCK 0X00C			; SAJÁT REGISZTEREK DEKLARÁLÁSA
	ALLAP				; LD. HOZZÁRENDELÉSEK
	
	REG1				; A PORT MENTÉSE
	REG2				; B PORT MENTÉSE
	REG3				; C PORT MENTÉSE
	REG4				; 
	REG5				; 
	REG6				; 
	REG7				; 
	REG8				;


	SYNREG1


	MOTREG				; MOTOR ÜZEMMÓD REGISZTER, FELSŐ BIT A MOT1-ÁLLAPOTA, AZ ALSÓ A MOT3-É
						; 0X0: KIMENET NULLA, 0X1: KIMENET FOLYTONOSAN 1; 0X2: KIMENET PWM MEGHAJTÁS
	
						; PRESCALER 256-TAL OSZT -> KIMENET 15 625 HZ
	TMR1				; IDŐZÍTÉS

	TEMP				; ÁTMENETI TÁR (TEMPORARY)
	
	ENDC

;**************kivezetések elnevezése***********************

#define	MOT3 	PORTA, 0	; motor vezérlés, MOT3-at hajtja meg																Mot 3
#define	ME 		PORTA, 1	; Master slave; Master: kimenet, 1: vezérel, 0 nem; Slave: bemenet, 1: vezérelve, 0: nem; 			M/E 
#define	SINUS	PORTA, 3	; tirisztor indításához 50 hz-es szinusz bemenet a hálózatról (0-5V)								-
; portA 2-es bitje nincs használva

#define	SYREN 	PORTB, 0	; hangszóró																							-
#define	LANTER 	PORTB, 1	; lámpa vezérlés, Lantern-t hajtja meg																Lantern
#define	CAPT1 	PORTB, 2	; 1. szenzor, ha nem lát rá az optó, avagy nyitni kell 1-es, különben 0								CAPT1
#define	CAPT2 	PORTB, 3	; 2. szenzor, mint feljebb																			CAPT2
#define	CAPO 	PORTB, 4	; zárt pozíció jelző szenzor, 1 ha nyitva															Ca.Po.
#define	TEMPO 	PORTB, 5	; astabil működést biztosít, időzítő funkció, időzítés külső potival								-
#define	CLEF1 	PORTB, 6	; 3 állapotú kulcsos kapcsoló egyik kimenete, ha aktív, mindíg nyit állapot							Clef 1
#define	CLEF3	PORTB, 7	; 3 állapotú kulcsos kapcsoló egyik kimenete, ha aktív, alarm állapot								Clef 3
; clef1, és clef 3 kizáró állapotok, kapcsoló 3. állása normál állapotpt eredményez	


#define	MODE1 	PORTC, 0	; 2bites mikrokapcsoló, 1. része, 1-es esetén master a kártya										Mode 1
#define	MODE2 	PORTC, 1	; 2bites mikrokapcsoló, 2. része, 1-es esetén jobbos a kapu a kapu									Mode 2
#define	LLAMP 	PORTC, 2	; LED-es kimenet, sárga																				Lampe
#define	LALARM	PORTC, 3	; LED-es kimenet, piros, risztás esetén aktív														Alarme
#define	LVERROU	PORTC, 4	; LED-es kimenet, sárga, fék jelenséget mutatná (panelen van, fék nincs bekötve a kapuban)			Verrou
#define	LALIM	PORTC, 5	; LED-es kimenet, zöld, normál működést mutatja														Alim							
#define	VE 		PORTC, 6	; Fék vezérlés, kimenet																				V/E
#define	MOT1 	PORTC, 7	; motor vezérlés, MOT1-at hajtja meg


RESET_VECTOR   CODE   0x7FF       	; processor reset vector
	goto    MAIN

; ******* INICIALIZÁLÁS **********
MAIN
	org 0X000
	MOVLW B'00000111'
	OPTION							; PRESCALER, TIMER BEÁLLÍTÁSA

			
	movlw B'11111110'				; A port I/O irány beállítása 	(csak az utolsó 4 lehet nem 1!! na,na,na,na,RA3,RA2,RA1,RA0)
	TRIS PORTA
	
	movlw B'11111100'				; B port I/O irány beállítása  	(RB7,RB6,RB5,RB4,RB3,RB2,RB1,RB0)
	TRIS PORTB
	
	movlw B'00000011'				; C port I/O irány beállítása	(1: input; 0: output)
	TRIS PORTC

	CLRF REG1
	CLRF REG2
	CLRF REG3
	CLRF REG4
	CLRF REG5
	CLRF REG6
	CLRF REG7
	CLRF REG8

	CLRF SYNREG1
	CLRF MOTREG
	CLRF TMR1

	CLRF ALLAP						; ALLAPOT REGISZTER NULLAZASA, 00-ZÁRÓDIK ÁLLAPOTBÓL INDUL

	BCF LVERROU						; PANELEN A FÉKLED NINCS HASZNÁLVA, LEGYEN MINDÍG KIKAPCSOLVA
	
	BCF MOT1						; A TÖBBI OUTPUT LEGYEN 0
	BCF MOT3
	BCF VE
	BCF LANTER

	BSF LALIM						; ZÖLS LED, ÜZEMKÉSZ, BEKAPCSOLÁSA

START

	MOVF PORTA, 0					; PORTOK LEMENTVE
	MOVWF REG1	
	MOVF PORTB, 0
	MOVWF REG2
	MOVF PORTC, 0
	MOVWF REG3
	
	RLF REG4, 1						; BALRA SHIFT REG4-ET, EREDMÉNY REG4-BEN
	RLF TMR0, 0						; BALRA SHIFT TMR0-ÁT, EREDMÉNY W-BEN
	BTFSC STATUS ,0					; HA VAN CARRY (UTOLSÓ 7.BIT 1 VOLT)
		INCF REG4 ,1				; REG 4-ET 1-GYEL NÖVELJE (MOST ILYEN: ..., RÉGI, RÉGI, RÉGI, ÚJ)

	BTFSC REG4, 1					; HA LEFUTÓ ÉL VAN :XXXXXX10
	BTFSC REG4, 0
		GOTO T1
	INCF TMR1, 1

;************** IDŐZÍTŐ REGISZTEREK, TEMPOMATOK ****************

T1
	INCF REG5 ,1					; REG6      REG5
	MOVLW 0XFF						; 00000100 11111111 HA ENNYI, AKKOR INTTRIGG-BE MENJEN
	SUBWF REG5, 0
	BTFSC STATUS, 2					; HA FF VOLT A REG 5, NÖBELJE REG6-OT
		INCF REG6, 1
	MOVLW B'11111011'
	MOVWF TEMP
	MOVF REG5, 0
	SUBWF REG6, 0
	SUBWF TEMP, 0
	BTFSS STATUS, 2					; KIVONÁSOK EREDMÉNYE 0
		GOTO T2	
	CLRF REG5
	CLRF REG6
	GOTO INTTRIGG
	
	
;************** SZINUSZ LEFUTÓ ÉL-E, HA IGEN LEHET A MOTORT VEZÉRELNI ****************

T2
	RLF REG7, 1						; BALRA SHIFT REG4-ET, EREDMÉNY REG4-BEN
	MOVLW B'00000100'
	ANDWF REG1, 0					; MASKOLVA VAN, HOGY CSAK A 3. BIT ÉLJEN
	BCF REG7, 0
	BTFSS STATUS, 2					; HA AZ EREDMÉNY NULLA, UGORJON
		BSF REG7, 0					; HA EGY, AKKOR 1 LESZ AZ UTOLSÓ, (MOST ILYEN: ..., RÉGI, RÉGI, RÉGI, ÚJ)
	
	BSF	REG7, 7						; UTOLSÓ 2 BITRE ÉRZÉKETLENÍTÜNK
	BSF REG7, 6
	MOVLW B'11111110'	
	SUBWF REG7, 0					; W-BŐL KIVONJA AZ 1111 1110-T, HA 0 EZZEL EGYEZIK REG7
	BTFSS STATUS, 2					; HA ILYEN LEFUTÓ ÉL VAN :XX11 1110
		GOTO TX						; HA NEM LEFUTÓ, UGORJON TX-RE, HA AZ, MOTOR VEZÉRLÉS

;*************** MOTOR VEZÉRLÉS *********************
		
	INCF REG8, 1
	BTFSC ALLAP, 1					; NYILÁS IRÁNYÚ AZ ÁLLAPOT? (1: NYÍLIK, 0: ZÁR)
		GOTO NY	
	GOTO ZA

NY	;1X
	BTFSS REG3, 1					; BALOS A KAPU (0 IGEN, 1 NEM)
		GOTO NY1
	GOTO NY2

NY1									; BALOS
	BSF	MOT1
	BCF MOT3
	GOTO TX
NY2									; JOBBOS
	BCF MOT1
	BSF MOT3
	GOTO TX

ZA	; 00
	BTFSC ALLAP, 0					; 0 HA ZARODIK, 1 HA ZARVA VAN
		GOTO ZARV
	BTFSS REG3, 1					; JOBBOS, BALOS
		GOTO Z1
	GOTO Z2

Z2									; JOBBOS
	BSF	MOT1
	BCF MOT3
	GOTO TX
Z1									; BALOS
	BCF MOT1
	BSF MOT3
	GOTO TX

ZARV ; 01		
	BTFSS REG3, 1					; JOBBOS, BALOS
		GOTO Z3
	GOTO Z4

Z4									; JOBBOS
	BCF	MOT1
	BCF MOT3
	BTFSS REG8, 0					; MINDEN PÁRATLAN SZINUSZ CIKLUSBAN KAPCSOLJA BE MOT 1-ET
		BSF MOT1
	GOTO TX
Z3									; BALOS
	BCF MOT1
	BCF MOT3
	BTFSS REG8, 0					; MINDEN PÁRATLAN SZINUSZ CIKLUSBAN KAPCSOLJA BE MOT 3-AT
		BSF MOT3
	GOTO TX


TX									; ITT ÉR VÉGET A MOTOR VEZÉRLÉS

	BTFSC REG2, 6					; CLEF1 MEGFELELÓJE, 1 HA MINDÍG NYITVA ÁLLAPOT
		GOTO NYILIK
	BTFSC REG2, 7					; CLEF 3 MEGFELELŐJE, 1 HA MINDÍG ZÁRVA ÁLLAPOT
		GOTO ZAR
	BTFSC REG3, 0					; MASTER-E (0 HA IGEN, 1 HA NEM)
		GOTO SLAVE
	BTFSC REG2, 2					; SZENZOR 1, 1, HA NYITNI KELL
		GOTO NYILIK
	BTFSC REG2, 3					; SZENZOR 2, 1, HA NYITNI KELL
		GOTO NYILIK
	GOTO START

NYILIK
	BSF ALLAP, 0					; 11-ES ÁLLAPOTBA MEGYÜNK
	BSF ALLAP, 0
	GOTO START

ZAR
	BTFSS REG2, 4					;ZÁRVA VAN-E AZ AJTÓ, 1 HA IGEN
		GOTO ZARODIK
;ZARVA
	BCF ALLAP, 1
	BSF ALLAP, 0					; 10 ALLAPOT
	GOTO START
	
ZARODIK
	BCF ALLAP, 1					; 00 ÁLLAPOT	
	BCF ALLAP, 0
	GOTO START

;**************** HA LEJÁRT AZ IDŐ... ***********************

INTTRIGG
	BTFSC ALLAP, 1					; HA 00
	BTFSS ALLAP, 0
		GOTO I1
; ZARODIK ÉS LEJÁRT AZ IDŐ
	MOVLW 0X01
	BTFSS REG2, 4					; ZARVA VAN-E AZ AJTÓ, 1 HA IGEN
		MOVWF ALLAP
	; AZ ÁLLAPOT MARAD 00

	; ** RIASZTÁS **
	BTFSS TMR1, 3					; 2HZ-ES JEL, VILLOGÁSHOZ, SZIRÉNÁHOZ
		GOTO A1

	BSF LALARM						; ALARM SYRENA KIKAPCSOLVA
	BCF SYREN					
	BCF LLAMP
	BCF LANTER
	BSF LVERROU
	GOTO START
A1
	BCF LALARM						; ALARM SYRENA KIKAPCSOLVA
	BSF SYREN					
	BSF LLAMP
	BSF LANTER
	BCF LVERROU	
	GOTO START

I1
	BTFSC ALLAP, 1					; HA 01
	BTFSC ALLAP, 0
		GOTO I2

; ZARVA AZ AJTÓ, ÉS LEJÁRT AZ IDŐ
	MOVLW 0X00
	BTFSC REG2, 4					; ZARVA VAN-E AZ AJTÓ, 1 HA IGEN
		MOVWF ALLAP
	; AZ ÁLLAPOT MARAD 01	

	; ** RIASZTÁS **
	BTFSS TMR1, 3					; 2HZ-ES JEL, VILLOGÁSHOZ, SZIRÉNÁHOZ
		GOTO A2

	BSF LALARM						; ALARM SYRENA KIKAPCSOLVA
	BCF SYREN					
	BCF LLAMP
	BCF LANTER
	BSF LVERROU
	GOTO START
A2
	BCF LALARM						; ALARM SYRENA BEKAPCSOLVA
	BSF SYREN					
	BSF LLAMP
	BSF LANTER
	BCF LVERROU	
	GOTO START

I2
	BTFSS ALLAP, 1					; HA 10
	BTFSS ALLAP, 0
		GOTO I3
; NYITVA AZ AJTÓ, ÉS LEJÁRT AZ IDŐ	
	BCF ALLAP, 0

	BCF LALARM						
	BCF SYREN					
	BCF LLAMP
	BCF LANTER
	BCF LVERROU	
	GOTO START

I3
	BTFSS ALLAP, 1					; HA 11
	BTFSC ALLAP, 0
		GOTO START
; NYÍLIK ÁLLAPOT, ÉS LEJÁRT AZ IDŐ	
	BSF ALLAP, 0
	BTFSS REG2, 6					; 1, HA MINDÍG NYILIK ÜZEMMÓDBÓL JÖTTÜNK
		BCF ALLAP, 0

	BCF LALARM						
	BCF SYREN					
	BCF LLAMP
	BCF LANTER
	BCF LVERROU	
	GOTO START	

SLAVE
	MOVLW b'11111110'				; MASTER ÁLLAPOTBAN BEMENENT AZ M/E
	TRIS PORTA
	MOVLW 0X03	
	BTFSC REG1, 1						; HA SLAVE ÁLLAPOTBAN VEZÉRLÉST KAP. NYISSON
		MOVWF ALLAP 	
	GOTO START


	END

	
	
