;$XREF
;$DEBUG
$NOMOD51

;********************************************************
;*		K K M F  Automatika Intzet		*
;*		  Elektronika Szakcsoport		*
;********************************************************
;*  Program:	Digitlis Technika Beadand		*
;*  Vltozat:		V1.0				*
;*  Dtum:	xxxx.xx.xx.				*
;*  Ksztette:	         				*
;********************************************************
;*  A modul lersa:					*
;********************************************************

	; xxxxxxx Forditsi parancsok xxxxxxx

; Az albbi direktvkat az XE251 parancssorbl aktvlja,
; ezrt van betve eljuk a komment jel

	; xxxxxxx Deklarcik xxxxxxx

$NOLIST
$INCLUDE(C:\XE251\SEGEDLET\GYAK552.INC)
$LIST




	; xxxxxxx Szegmensek deklarlsa xxxxxx

PROG	SEGMENT	CODE			; program		
VALTB1	SEGMENT	DATA BITADDRESSABLE	; bjtos vltozk a BIT cmezhet terleten
?STACK	SEGMENT	IDATA			; stack memria



	; xxxxxx XDATA memriba gyazott I/O xxxxxx

	XSEG	AT 0C000H

NGSOR:	DS	1	; Nyomgomb sor cme	X:0C000H
LEDSOR:	DS	1	; LED-sor cme		X:0C001H

		

	; xxxxxx Bjtos vltozk a BIT cmezhet terleten xxxxxxx
	RSEG	VALTB1
	DS 1			;1 res bjt lefoglalsa
	BEM:	 DS 1		;a bemeneti vltozknak 1 bjt lefoglalsa
	KIM:	 DS 1		; a kimenetnek 1 bjt lefoglalsa
	ATM:	 DS 1		; az tmeneti vltoznak 1 bjt lefoglals

	H_V	BIT BEM.0	;     Bemeneti,
	I_V	BIT BEM.1	;    tmeneti s
	J_V	BIT BEM.2	;     kimeneti
	K_V	BIT BEM.3	;     vltozk
	F_B	BIT KIM.0	;    deklarlsa,
	F_T	BIT KIM.7	;        s
	AT_1	BIT ATM.0	;  helyirtk adsa
	

	; xxxxxx STACK szegmens xxxxxxx

	RSEG    ?STACK		; STACK kezdete
	DS      10H		; 32 bjtos STACK

	; xxxxxx Program szegmens xxxxx

	RSEG	PROG
	USING	0		; 0-s regiszterbank

START:	LJMP	INIT		; ugrs az inicializlsra


	; ****** Inicializls ******

INIT:	MOV	SP,#?STACK-1
	MOV	BEM,#0		;a bemenet 0-zsa
	MOV	KIM,#0		;a kimenet 0-zsa
	MOV	ATM,#0		;az tmeneti trol 0-zsa
	MOV	DPTR,#LEDSOR	;\     a ledsor
	MOV	A,#0		;  alaphelyzetbe
	MOVX 	@DPTR,A		;/  val lltsa

	; ****** F programhurok ******

FOPR:	CALL	BEIR		;a ber szubrutin meghvsa

	;Bitmvelet
	MOV	C,H_V		;a C be betltjk h vltozt
	ORL	C,/I_V		;a h vltozt neglt i vltozval vagy kapcsolatba hozzuk
	ORL	C,/J_V		;az elz rtket ami c ben jelent meg neglt J vel vagy kapcsolatba hozzuk
	MOV	AT_1,C		;a c rtkt egy tmeneti trolba tltjk
	MOV	C,H_V		;a c be kldjk h vltozt
	ORL	C,/K_V		;h vltoz vagy kapcs. k negltal
	ANL	C,AT_1		;az tmeneti trol tartalmt s kapcsolatba hozzuk a c ben lv vagy kapcsolatokkal
	MOV	AT_1,C		;tmenetibe tltjk c tartalmt
	MOV	C,J_V		;c be kldjk J vltozt
	ORL	C,I_V		;vagy kapcsolata J vltoznak I vltozval
	ORL	C,/H_V		;elz kifejezs vagy kapcsolata h negltal
	ANL	C,AT_1		;s kapcsolat tmeneti s c tartalma kzt	
	MOV	F_B,C		;bitmveletes feladatrszbe kldjk a c rtkt
	
	;Tblzat
	MOV	R7,#7		;7 es regiszterbe decimlis 7 rtk kerl
	MOV	DPTR,#IG_T	; a data pointer-t feltlti az igazsgtblzat rtkeivel
	MOV	R6,#0		;6 os regiszterbe 0 rtk kerl
TORZS:
	MOV	A,R6		;akkuba R6 rtke
	MOVC	A,@A+DPTR	;programtrbl visz egy bjtot az akkuba
	CJNE	A,BEM,VEG1	;sszehasonltja a kt adatot akku tartalma s bemneti vltok ha nem egyforma a VEG re ugrik
	SETB	F_T		;az igazsgtblzatos rtket 1 be lltja
	JMP	VEG		;a VEG re ugrik
VEG1:
	INC	R6		;inkrementlja R6 regiszter rtkt
	DJNZ	R7,TORZS	;elszr dekrementlja R7 rtkt majd ellenrzi hogy az rtk 0-e ha nem ugrik a megadott feladatra itt TORZS
	CLR	F_T		;0-ba lltja tblzatos megolds rtkt
VEG:
	CALL	KIIR		;meghvja a kiirat szubrutint
	SJMP	FOPR		;a fprogram cimkre ugrik

	; ****** Konstans tblzatok ******

IG_T:	DB	0,2,4,5,11,13,15		;a konstans tblzatot feltltjk az igaz rtkekkel

	; ****** Szubrutim ******

	USING	1		; Register BANK 1

BEIR:	MOV	DPTR,#NGSOR		;felttlti a megadott llandval a data pointert
	MOVX	A,@DPTR			;az akkuba tlti az rtket
	ORL	A,#0F0H			;vagy kapcsolatba kerl 0F0H-val
	CPL	A			;neglja Akku tartalmt
	MOV	BEM,A			;a BEM re kldi akku rtkt
	RET				;return

KIIR:	MOV	DPTR,#LEDSOR		;feltlti a ledsor rtkvel datapointert
	MOV	A,KIM			;akkuba kldi KIM-et
	ANL	A,81H			;s kapcsolatba hozza 81H-val
	CPL	A			;neglja akku tartalmt
	MOVX	@DPTR,A			;az adatpointerbe kldi akku rtkt
	RET				;return

	
	RETI
	END			; Fjl vge direktva
