; Quartz frekvencia = 20,0
	list p=16f628
	#include	<p16f628.inc>

	 __CONFIG  _HS_OSC & _BODEN_ON  & _PWRTE_ON & _WDT_ON  & _LVP_OFF & _MCLRE_OFF    
; _CP_ALL ; _DATA_CP_ON ;

        errorlevel      -302    ;Nem hibaüzenetet bankváltás

;============================================================================================	

banc0	macro
	bcf  STATUS,RP0
	bcf  STATUS,RP1
	endm
banc1	macro
	bsf  STATUS,RP0
	bcf  STATUS,RP1
	endm
banc2	macro
	bsf  STATUS,RP1
	bcf  STATUS,RP0
	endm
banc3	macro
	bsf  STATUS,RP0
	bsf  STATUS,RP1
	endm

;==============================================================================================	
;konstansok
K_TMR0	equ	D'11'		;Állandó időmérő TMR0 = 0,1 ms, 10 kHz-es modulációs
K_SH	equ	D'100'		;Állandó frekvencia vizsgálatok azt mutatják, 10ms
K_SL	equ	D'50'		;Az állandó frekvenciapásztázó gombok 500ms
K_M60	equ	D'0'		;167 állandó alacsony byte számlálókat, idő-kapcsoló A és B fázis
K_S60	equ	D'167'		;Állandó byte számlálók kapcsolási idő-fázisban A és B
K_M90	equ	D'0'		;250; állandó alacsony byte számlálókat, a váltás pillanata szakaszának Marks
K_S90	equ	D'250'		;Állandó byte számlálókat, arra a pillanatra kapcsolási fázis Marks
K_NO	equ	D'5'		;A folyamatos forgalom növekedés üteme

;NYILVÁNTARTÁSOK
ZAD_F	equ	H'20'		;A kívánt frekvenciát a háromfázisú inverter
S_P_MR	equ	H'21'		;regisztrálj lépésekben a frekvenciaváltó LSB
S_P_SR	equ	H'22'		;regisztrálj lépésekben a frekvenciaváltó LSB
TEMP	equ	H'23'		;Ideiglenes nyilvántartás frekvenciaváltó
S_A_MR	equ	H'26'		;A Counter-fázis LSB
S_A_SR	equ	H'27'		;Fázis-számláló MSB
S_B_MR	equ	H'28'		;Phase B-számláló LSB
S_B_SR	equ	H'29'		;Phase B-számláló MSB
S_C_MR	equ	H'2A'		;Fázisú C-Counter LSB
S_C_SR	equ	H'2B'		;Fázisú C-számláló MSB

RA_A	equ	H'2F'		;A amplitúdója nyilvántartás fázis-A
RA_B	equ	H'30'		;A amplitúdója nyilvántartás fázis-B
RA_C	equ	H'31'		;A amplitúdója nyilvántartás fázis-C
RF	equ	H'32'		;reg.Flaga: gombok, 1razr = 0 megnyomjuk a könyv STOP = 1, a könyv megnyomja a START, 2razr = 1 + kn sajtolt, préselt 3razr = 1 kn -
				;Megjelenítéséhez 4razr = 0 legyen indits ml.razr = 1 indits st.razr
				;Fázis, 5-bit = 1 - fázis-A = 0, az inverz fázis-A, 6 bit = 1 - Phase-B = 0, az inverz fázis-B
				;7-bit = 1 - Phase-C = 0, az inverz fázis-C;
RF1	equ	H'33'		;reg.Flaga: Swap cím számlálók szakaszból áll. 0 bit. = 0 fázisában az A +,0-bites számláló. = 1 fázis az A-számláló
				;1 bites. = 0 szakasza a B +, 1 bites számláló. = 1, B-fázisú számláló, 2-bites. = 0 fázisában a C +, 2 bites számláló. = 1 fázis a C-számláló			
UI1 	equ 	H'34'		;legalacsonyabb tizedes meg a kijelzőn
UI2 	equ 	H'35'		;legnagyobb decimális számjeggyel a kijelzőn
UI 	equ 	H'36'		;ideiglenes nyilvántartás jelzi,
D_SH	equ	H'37'		;Szkennelési sebesség érzékeny billentyűk Nagy Bájt
D_SL	equ	H'38'		;Szkennelési sebesség érzékeny gombok Alacsony Bájt
R_NO	equ	H'39'		;esetében a növekedés mértéke forgalom

cnt1	equ 	H'3A'		;ideiglenes regiszter
cnt2	equ 	H'3B'		;ideiglenes regiszter
cnt3	equ 	H'3C'		;ideiglenes regiszter

ADROZU		equ     H'40'	; címe RAM
DTIM		equ     H'41'	; RAM adatok
W_COPY		equ	H'42'	; Egy példányát a W regiszter
STATUS_COPY	equ	H'43'	; Egy példánya STATUS regisztrálj

#define OSCILLATOR	D'20000000'
;==============================================================================================	
        org 0			;Visszaállítás vektor
	goto	START
;==============================================================================================		
	org 4			;Megszakítás vektor				
	movwf	W_COPY		;Mentse stack-W menteni a nyilvántartás W_COPY
	swapf	STATUS,W	;Csere majszol egy, a nyilvánosság, és rögzítse az állapotát W
	movwf	STATUS_COPY	;W tárolni a nyilvántartásban, STATUS_COPY
	btfsc	INTCON,T0IF	;Túlcsordulás megszakítás időzítő TMR0
	goto	INT_TMR0	
END_PRER			;vissza a köteget
	swapf	STATUS_COPY,W	;Csere majszol STATUS és írni W
	movwf	STATUS		;Írja be a w-ben a STATUS
	swapf	W_COPY,F	;csere majszol a nyilvántartásban, s maradjon W_COPY W_COPY
	swapf	W_COPY,W	;csere majszol a nyilvántartásban, és helyreállítsa a nyilvántartás W_COPY W anélkül STATUS
	retfie
;==============================================================================================		
INT_TMR0
	movlw	K_TMR0
	movwf	TMR0		;Töltse be a konstans a TMR0				
	bcf	INTCON,T0IF	;a számláló megszakítás TMRO zászlót, és újra lehetővé teszi a megszakítás
	clrwdt				
				;Megtaláljuk a növekedés S_P_MR, S_P_SR táblázat alapján a TEMP = tényleges frekvenciaváltó			
	movf	TEMP,w
	call	P_MR		;Válasszon egy mintát a növekmény S_P_MR
      	clrf    PCLATH		;
	movwf	S_P_MR		;w -> S_P_MR
	movf	TEMP,w
	call	P_SR		;Válasszon egy mintát a növekmény S_P_SR
      	clrf    PCLATH		;
	movwf	S_P_SR		;w -> S_P_SR

;----------

				;Állítsa be a címet számláló a fázis-A, majd telepítse újra a zászlók
	btfsc	RF1,0		;Ellenőrizze a zászló a fázis-A
	goto	P2		;Csökkentse a címet számlálót megnöveljük venni az asztalról, és S_P_MR S_P_SR függően a frekvenciaváltó
				;Ellenkező esetben, megnöveljük a cím számlálót megnöveljük
	movf	S_P_MR,W	;S_P_MR -> W
	addwf	S_A_MR,F	;S_A_MR + W -> S_A_MR
	btfss	STATUS,C	;Hasonlítsa túlcsordul
	goto	P1		;nincs
	movlw	D'6'		;Igen, az állandó -> W
	addwf	S_A_MR,F	;Azt, hogy a kiigazítás ellentétes S_A_MR + W -> S_A_MR
P3	incf	S_A_SR,F	;S_A_SR +1 -> S_A_SR
	movf	S_A_SR,w	;Összehasonlítása S_A_SR = K_S90, S_A_SR -> W
	sublw	K_S90		;K_S90 - W->W
	btfsc	STATUS,Z	;S_A_SR=K_S90
	goto	P4		;Igen jól
P5	movf	S_P_SR,W	;Nem, S_P_SR -> W
	addwf	S_A_SR,F	;S_A_SR + W -> S_A_SR
	btfsc	STATUS,C	;Hasonlítsa túlcsordul
	goto	P4		;Igen, volt egy túlfolyó
	movf	S_A_SR,w	;Nem, S_A_SR -> W
	sublw	K_S90		;K_S90 -W->W
	btfss	STATUS,C	;Összehasonlítása S_A_SR> K_S90
	goto	P4		;igen
	btfsc	STATUS,Z	;Nincs összehasonlítás S_A_SR = K_S90
	goto	P4		;igen
	goto	P6		;No Exit
P4	movlw	K_S90		;K_S90 -->W
	movwf	S_A_SR		;W-->S_A_SR
	clrf	S_A_MR		;Visszaállítás S_A_MR
	bsf	RF1,0		;Telepítse a jele, hogy csökkentsék a számláló
	goto	P6		;Kilépés
P1	movf	S_A_MR,w	;Nem, S_A_MR -> W
	sublw	K_S90		;K_S90 -W->W
	btfss	STATUS,C	;Összehasonlítása S_A_MR> K_S90
	goto	P7		;igen
	btfss	STATUS,Z	;Nincs összehasonlítás S_A_MR = K_S90
	goto	P5		;nincs	
	clrf	S_A_MR		;Visszaállítás S_A_MR
	goto	P3		;
P7	movlw	K_S90		;K_S90 -->W
	subwf	S_A_MR,F	;S_A_MR-K_S90 -->S_A_MR
	goto	P3		;
P2				;Csökkentse a címet számláló szeretné növelni
	movf	S_A_SR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_A_SR = 0
	goto	M1		;igen
	movf	S_P_MR,W	;Nem, S_P_MR -> W
	subwf	S_A_MR,F	;S_A_MR-W-->S_A_MR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M2		;nincs
	movlw	D'6'		;Igen, az állandó -> W
	subwf	S_A_MR,F	;Azt, hogy a kiigazítás ellentétes S_A_MR-W -> S_A_MR	
	decf	S_A_SR,F	;S_A_SR-1-->S_A_SR
	movf	S_A_SR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_A_SR = 0
	goto	M3		;igen
M2	movf	S_P_SR,W	;Nem, S_P_SR -> W
	subwf	S_A_SR,F	;S_A_SR-W-->S_A_SR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M4		;nincs
	clrf	S_A_SR		;Visszaállítás S_A_SR
	goto	M5
M3	movf	S_A_MR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_A_MR = 0
	goto	M6		;igen
	goto	M2		;nincs
M4	movf	S_A_SR,F	;Ellenőrizze a zászló-Z
	btfss	STATUS,Z	;Összehasonlítása S_A_SR = 0
	goto	P6		;nincs
	movf	S_A_MR,F	;Igen, ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_A_MR = 0
	goto	M6		;igen
	goto	P6		;nincs
M1	movf	S_P_MR,W	;Igen, S_P_MR -> W
	subwf	S_A_MR,F	;S_A_MR-W-->S_A_MR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M2		;nincs
M5	clrf	S_A_MR		;Visszaállítás S_A_MR	
M6	bcf	RF1,0		;Toggle zászló a növekedés címet számláló
	movlw	K_M60		;Betöltése állandók a nyilvántartásokat számlálók fázisok
	movwf	S_B_MR		;Beállítani a ciklust
	movwf	S_C_MR		;
	movlw	K_S60	   
	movwf	S_B_SR	
	movwf	S_C_SR	
	clrf	RA_A		;Az amplitúdók a nulla fázis ki a nyilvántartás-A
	btfsc	RF,5		;Fordítsa a fázis a zászlók-A direkt vagy inverz
	goto	RES_A		;váltani direct-to-impulzus fázismegfordulás és fordítva
	bsf	RF,5
	goto	P6		;A kimeneti feldolgozásának fázis
RES_A	bcf	RF,5		;
P6				;A kimenet feldolgozása a fázis-A
;----------
				;Állítsa be a címet számláló a fázis-B, és újra a zászlók
	btfsc	RF1,1		;Ellenőrizze a zászló a fázis-B
	goto	P12		;Csökkentse a címet számlálót megnöveljük venni az asztalról, és S_P_MR S_P_SR függően a frekvenciaváltó
				;Ellenkező esetben, megnöveljük a cím számlálót megnöveljük
	movf	S_P_MR,W	;S_P_MR -->W
	addwf	S_B_MR,F	;S_B_MR +W-->S_B_MR
	btfss	STATUS,C	;Hasonlítsa túlcsordul
	goto	P11		;nincs
	movlw	D'6'		;Igen, az állandó -> W
	addwf	S_B_MR,F	;Azt, hogy a kiigazítás ellentétes S_B_MR + W -> S_B_MR
P13	incf	S_B_SR,F	;S_B_SR+1-->S_B_SR
	movf	S_B_SR,w	;Összehasonlítása S_B_SR = K_S90, S_B_SR -> W
	sublw	K_S90		;K_S90 - W->W
	btfsc	STATUS,Z	;S_B_SR=K_S90
	goto	P14		;Igen jól
P15	movf	S_P_SR,W	;Nem, S_P_SR -> W
	addwf	S_B_SR,F	;S_B_SR +W-->S_B_SR
	btfsc	STATUS,C	;Hasonlítsa túlcsordul
	goto	P14		;Igen, volt egy túlfolyó
	movf	S_B_SR,w	;Nem, S_B_SR -> W
	sublw	K_S90		;K_S90 -W->W
	btfss	STATUS,C	;Összehasonlítása S_B_SR> K_S90
	goto	P14		;igen
	btfsc	STATUS,Z	;Nincs összehasonlítás S_B_SR = K_S90
	goto	P14		;igen
	goto	P16		;No Exit
P14	movlw	K_S90		;K_S90 -->W
	movwf	S_B_SR		;W-->S_B_SR
	clrf	S_B_MR		;Visszaállítás S_B_MR
	bsf	RF1,1		;Telepítse a jele, hogy csökkentsék a számláló
	goto	P16		;Kilépés
P11	movf	S_B_MR,w	;Nem, S_B_MR -> W
	sublw	K_S90		;K_S90 -W->W
	btfss	STATUS,C	;Összehasonlítása S_B_MR> K_S90
	goto	P17		;igen
	btfss	STATUS,Z	;Nincs összehasonlítás S_B_MR = K_S90
	goto	P15		;nincs	
	clrf	S_B_MR		;Visszaállítás S_B_MR
	goto	P13		;
P17	movlw	K_S90		;K_S90 -->W
	subwf	S_B_MR,F	;S_B_MR-K_S90 -->S_B_MR
	goto	P13		;
P12				;Csökkentse a címet számláló szeretné növelni
	movf	S_B_SR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_B_SR = 0
	goto	M11		;igen
	movf	S_P_MR,W	;Nem, S_P_MR -> W
	subwf	S_B_MR,F	;S_B_MR-W-->S_B_MR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M12		;nincs
	movlw	D'6'		;Igen, az állandó -> W
	subwf	S_B_MR,F	;Azt, hogy a kiigazítás ellentétes S_B_MR-W -> S_B_MR	
	decf	S_B_SR,F	;S_B_SR-1-->S_B_SR
	movf	S_B_SR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_B_SR = 0
	goto	M13		;igen
M12	movf	S_P_SR,W	;Nem, S_P_SR -> W
	subwf	S_B_SR,F	;S_B_SR-W-->S_B_SR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M14		;nincs
	clrf	S_B_SR		;Visszaállítás S_B_SR
	goto	M15
M13	movf	S_B_MR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_B_MR = 0
	goto	M16		;igen
	goto	M12		;nincs
M14	movf	S_B_SR,F	;Ellenőrizze a zászló-Z
	btfss	STATUS,Z	;Összehasonlítása S_B_SR = 0
	goto	P16		;nincs
	movf	S_B_MR,F	;Igen, ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_B_MR = 0
	goto	M16		;igen
	goto	P16		;nincs
M11	movf	S_P_MR,W	;Igen, S_P_MR -> W
	subwf	S_B_MR,F	;S_B_MR-W-->S_B_MR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M12		;nincs
M15	clrf	S_B_MR		;Visszaállítás S_B_MR	
M16	bcf	RF1,1		;Toggle zászló a növekedés címet számláló
	movlw	K_M60		;Betöltése állandók a nyilvántartásokat számlálók fázisok
	movwf	S_A_MR		;Beállítani a ciklust
	movwf	S_C_MR		;
	movlw	K_S60	   
	movwf	S_A_SR	
	movwf	S_C_SR	
	clrf	RA_B		;Az amplitúdók a nulla fázis ki a nyilvántartás-B
	btfsc	RF,6		;Fordítsa a fázis-B zászlók direkt vagy inverz
	goto	RES_B		;váltani direct-to-impulzus fázismegfordulás és fordítva
	bsf	RF,6
	goto	P16		;A kimenet feldolgozása a B fázis
RES_B	bcf	RF,6		;
P16				;A kimenet feldolgozása a B fázis
;----------
				;Állítsa be a címet számláló a fázis-C, majd telepítse újra a zászlók
	btfsc	RF1,2		;Ellenőrizze a zászló a fázis-C
	goto	P22		;Csökkentse a címet számlálót megnöveljük venni az asztalról, és S_P_MR S_P_SR függően a frekvenciaváltó
				;Ellenkező esetben, megnöveljük a cím számlálót megnöveljük
	movf	S_P_MR,W	;S_P_MR -->W
	addwf	S_C_MR,F	;S_C_MR +W-->S_C_MR
	btfss	STATUS,C	;Hasonlítsa túlcsordul
	goto	P21		;nincs
	movlw	D'6'		;Igen, az állandó -> W
	addwf	S_C_MR,F	;Azt, hogy a kiigazítás ellentétes S_C_MR + W -> S_C_MR
P23	incf	S_C_SR,F	;S_C_SR+1-->S_C_SR
	movf	S_C_SR,w	;Összehasonlítása S_C_SR = K_S90, S_C_SR -> W
	sublw	K_S90		;K_S90 - W->W
	btfsc	STATUS,Z	;S_C_SR=K_S90
	goto	P24		;Igen jól
P25	movf	S_P_SR,W	;Nem, S_P_SR -> W
	addwf	S_C_SR,F	;S_C_SR +W-->S_C_SR
	btfsc	STATUS,C	;Hasonlítsa túlcsordul
	goto	P24		;Igen, volt egy túlfolyó
	movf	S_C_SR,w	;Nem, S_C_SR -> W
	sublw	K_S90		;K_S90 -W->W
	btfss	STATUS,C	;Összehasonlítása S_C_SR> K_S90
	goto	P24		;igen
	btfsc	STATUS,Z	;Nincs összehasonlítás S_C_SR = K_S90
	goto	P24		;igen
	goto	P26		;No Exit
P24	movlw	K_S90		;K_S90 -->W
	movwf	S_C_SR		;W-->S_C_SR
	clrf	S_C_MR		;Visszaállítás S_C_MR
	bsf	RF1,2		;Telepítse a jele, hogy csökkentsék a számláló
	goto	P26		;Kilépés
P21	movf	S_C_MR,w	;Nem, S_C_MR -> W
	sublw	K_S90		;K_S90 -W->W
	btfss	STATUS,C	;Összehasonlítása S_C_MR> K_S90
	goto	P27		;igen
	btfss	STATUS,Z	;Nincs összehasonlítás S_C_MR = K_S90
	goto	P25		;nincs	
	clrf	S_C_MR		;Visszaállítás S_C_MR
	goto	P23		;
P27	movlw	K_S90		;K_S90 -->W
	subwf	S_C_MR,F	;S_C_MR-K_S90 -->S_C_MR
	goto	P23		;
P22				;Csökkentse a címet számláló szeretné növelni
	movf	S_C_SR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_C_SR = 0
	goto	M21		;igen
	movf	S_P_MR,W	;Nem, S_P_MR -> W
	subwf	S_C_MR,F	;S_C_MR-W-->S_C_MR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M22		;nincs
	movlw	D'6'		;Igen, az állandó -> W
	subwf	S_C_MR,F	;Azt, hogy a kiigazítás ellentétes S_C_MR-W -> S_C_MR	
	decf	S_C_SR,F	;S_C_SR-1-->S_C_SR
	movf	S_C_SR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_C_SR = 0
	goto	M23		;igen
M22	movf	S_P_SR,W	;Nem, S_P_SR -> W
	subwf	S_C_SR,F	;S_C_SR-W-->S_C_SR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M24		;nincs
	clrf	S_C_SR		;Visszaállítás S_C_SR
	goto	M25
M23	movf	S_C_MR,F	;Ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_C_MR = 0
	goto	M26		;igen
	goto	M22		;nincs
M24	movf	S_C_SR,F	;Ellenőrizze a zászló-Z
	btfss	STATUS,Z	;Összehasonlítása S_C_SR = 0
	goto	P26		;nincs
	movf	S_C_MR,F	;Igen, ellenőrizze a zászló-Z
	btfsc	STATUS,Z	;Összehasonlítása S_C_MR = 0
	goto	M26		;igen
	goto	P26		;nincs
M21	movf	S_P_MR,W	;Igen, S_P_MR -> W
	subwf	S_C_MR,F	;S_C_MR-W-->S_C_MR
	btfsc	STATUS,C	;Hasonlítsa össze a kölcsön
	goto	M22		;nincs
M25	clrf	S_C_MR		;Visszaállítás S_C_MR	
M26	bcf	RF1,2		;Toggle zászló a növekedés címet számláló
	movlw	K_M60		;Betöltése állandók a nyilvántartásokat számlálók fázisok
	movwf	S_A_MR		;Beállítani a ciklust
	movwf	S_B_MR		;
	movlw	K_S60	   
	movwf	S_A_SR	
	movwf	S_B_SR	
	clrf	RA_C		;Az amplitúdók a nulla meg a fázis-C regiszter
	btfsc	RF,7		;Fordítsa a fázis-C zászlók direkt vagy inverz
	goto	RES_C		;váltani direct-to-impulzus fázismegfordulás és fordítva
	bsf	RF,7
	goto	P26		;A kimenet feldolgozása a fázis C
RES_C	bcf	RF,7		;
P26				;A kimenet feldolgozása a fázis C


;----------

	btfss	RF,1		;Ellenőrzése a Stop gomb megnyomásával	
	goto 	STOP		;Igen, az átmenet
				;Start gomb megnyomásakor
	btfss	PORTA,5		;Vizsgálati jel volt a védelmi
	goto 	AVAR		;Igen, az átmenet
;----------
				;Indítsa el a motort, sima növekedésével gyakorisága a nulla ZAD_F referencia-frekvencia				

	movf	PORTB,W		
	iorlw	b'00111111'	;Kapcsolja ki a kulcsokat, ha ezeket felvették
	movwf	PORTB
				;Túlcsordulás a regisztráció lendületet adnak az amplitúdó
	btfsc	RF,5		;ellenőrizze a zászló a fázis-A
	call	I_A		;Annak érdekében, hogy lendületet ad a közvetlen fázis-A
	btfss	RF,5		;ellenőrizze a zászló a fázis-A
	call	I_A_		;Annak érdekében, hogy lendületet adjon egy fordított fázis-A
	btfsc	RF,6		;ellenőrizze a zászló a fázis-B
	call	I_B		;Annak érdekében, hogy lendületet ad a közvetlen fázis-B
	btfss	RF,6		;ellenőrizze a zászló a fázis-B
	call	I_B_		;Annak érdekében, hogy lendületet adjon egy fordított fázis-B
	btfsc	RF,7		;ellenőrizze a zászló a fázis-C
	call	I_C		;Annak érdekében, hogy lendületet ad a közvetlen fázis-C
	btfss	RF,7		;ellenőrizze a zászló a fázis-C
	call	I_C_		;Annak érdekében, hogy lendületet adjon egy fordított fázisú C-



;----------
STOP
				;Kimenet megjelenítésére és állítsa be a sorrendben, a kijelző és a funkció gombnyomás
	decfsz	D_SH,f		;késleltetni a kijelző meg egy állandó D_SH
	goto	EX_UI2		;A késedelem nem érte el a végét 
				
 	movlw	K_SH		;Állandók a regiszterek betöltése Scanning Frequency kijelző
	movwf	D_SH		;Töltsön K_SH -> itt D_SH
	btfsc	RF,4		;ellenőrzés volt, 0-4 RF kibocsátás nyilvántartásában
	goto 	EX_UI1		;NO-jelzés UI1 nem származhat
	bcf	PORTB,6		;IGEN, oltsa UI2

				;A szolgáltatás telepítése gombnyomás
	clrf	PORTA
	bsf	PORTA,0		;1->RA0
	nop			;késleltetheti a következetlenségek megszüntetése folyamatban olvasás zap.-port
	nop
	nop
	nop
	btfsc	PORTA,4		;ellenőrizze a Start gomb megnyomásakor
	bsf	RF,1		;Igen, telepítsen egy jel

	clrf	PORTA
	bsf	PORTA,1		;1->RA1
	nop			;késleltetheti a következetlenségek megszüntetése folyamatban olvasás zap.-port
	nop
	nop
	nop
	btfsc	PORTA,4		;ellenőrizze a Stop gomb megnyomásával
	goto	STOP_	
Y_ST

				;Lassan emelje a frekvenciát az inverter 1 ZAD_F
	movf	R_NO,f
        btfss 	STATUS,Z	;Ellenőrizze az eltelt idő meghatározott R_NO
	goto	N_R_NO		;nincs
	movf	TEMP,w		;Igen, a Check TEMP = ZAD_F
	subwf	ZAD_F,w
	btfsc	STATUS,Z
	goto	NO_PM		;Gyakorisága, az inverter és a motor frekvenciája megegyezik TEMP = ZAD_F
        btfss 	STATUS,C        ;ellenőrizze a zászló "Közlekedés"
        goto	EX1		;ZAD_F<TEMP
	incf	TEMP,f		;ZAD_F>TEMP, TEMP+1->TEMP
        goto	EX2
EX1	decf	TEMP,f		;ZAD_F<TEMP, TEMP-1->TEMP
EX2	movlw	K_NO		;
	movwf	R_NO		;Töltse be az állandó ütemű növekedése a sebesség nyilvántartásban
	goto	NO_PM
N_R_NO	decf	R_NO,f		;Nem R_NO-1-> R_NO

NO_PM
		
	decfsz	D_SL,f		;Telepítése + jel - késéssel beállítva, hogy egy állandó D_SL
	goto	NO_P		;A késedelem nem érte el a végét 
				;Betöltése állandók a nyilvántartások frekvencia beolvasógomb 
	movlw	K_SL		;Töltsön K_SL W
	movwf	D_SL		;W terhelés D_SL
	clrf	PORTA
	bsf	PORTA,2		;1->RA2
	nop			;késleltetheti a következetlenségek megszüntetése folyamatban olvasás zap.-port
	nop
	nop
	nop
	btfsc	PORTA,4		;Ellenőrzés gomb megnyomása +
	bsf	RF,2		;Igen, telepítsen egy jel
	clrf	PORTA
	bsf	PORTA,3		;1->RA3
	nop			;késleltetheti a következetlenségek megszüntetése folyamatban olvasás zap.-port
	nop
	nop
	nop
	btfsc	PORTA,4		;Ellenőrzés gomb megnyomása -
	bsf	RF,3		;Igen, telepítsen egy jel


NO_P
	movf	UI1,0		;kiszámításának regisztrálj UI1 -> W
	movwf	PORTA		;Nyomtatási adatok portolni egy a kijelzőn
	bsf	PORTB,7		;Kindle UI1
	bsf	RF,4		;telepíteni utaló jelzésnek 2 kibocsátás
	goto 	EX_UI2		;jelzése UI2 nem származhat
EX_UI1	bcf	PORTB,7		;IGEN, oltsa UI1
	movf	UI2,0		;betölteni regisztrálj UI2-> W
	movwf	PORTA		;Nyomtatási adatok portolni egy a kijelzőn
	bsf	PORTB,6		;Kindle UI2
	bcf	RF,4		;telepíteni egy jel jelzi mentesíti
EX_UI2
		
	goto	END_PRER	;Kilépés a megszakítás

;==============================================================================================	
STOP_
	movlw	b'00111111'	;Kapcsolja ki a kulcsokat
	iorwf	PORTB,f	
				;Fordítsa az üzemmódválasztó gátlás

	bcf	RF,1		;Igen, telepítsen egy jel
ST	movlw	D'1'		;Betöltése kezdeti gyakorisága az inverter
	movwf	TEMP
	bsf 	PORTB,6		;Kapcsolja be a reosztát, a rendelkezés az energia disszipáció a reosztát 
	bsf 	PORTB,7		;mint Állítsa le a motort futtatása után a regeneratív módban
;-------------			Sub-2 másodperces késleltetés
 		movlw D'255' 	;MLS
                movwf cnt2 
		movlw D'255' 	;házasodik	
                movwf cnt1   
    		movlw D'60' 	;CT
                movwf cnt3      
dloop2		clrwdt
       	    	decfsz cnt2,f 
                goto $+2 
                decfsz cnt1,f 
                goto dloop2 
                decfsz cnt3,f 
                goto dloop2 
	bcf 	PORTB,6		;Kapcsolja ki a reosztát
	bcf 	PORTB,7		
				;Kapcsolja ki a fékező üzemmódban

		goto	Y_ST
;-------------


AVAR	bcf	RF,1		;Ír egy stop üzemmódban
	movlw	b'00111111'	
	iorwf	PORTB,f		;Kapcsolja ki a kulcsokat, hogy állítsa vissza a Honvédelmi
	goto	STOP
;==============================================================================================	
I_A	movf	S_A_SR,w	;Töltse be a címet táblázatok Sines
	sublw	D'240'		;Ha a cím> 240
        btfss 	STATUS,C
	goto	L1		;Igen, fordítsa el a kulcsot
	movf	S_A_SR,w	;Töltse be a címet táblázatok Sines
	call	sinus		;A mintát az amplitúdó
      	clrf    PCLATH		;Nullázza az idősebb a lakcímnyilvántartás	
	addwf	RA_A,f		;Hajtsd az amplitúdó a minta
	btfss	STATUS,C	;Túlcsordulás az amplitúdó
	goto	VI5
L1	bcf	PORTB,0		;Igen, fordítsa el a kulcsot fázis-A	
	return
VI5	bsf	PORTB,0		;Ellenkező esetben a legfontosabb szakasza az off-A
	return
;==============================================================================================	
I_A_	movf	S_A_SR,w	;Töltse be a címet táblázatok Sines
	sublw	D'240'		;Ha a cím> 240 
        btfss 	STATUS,C
	goto	L2		;Igen, fordítsa el a kulcsot
	movf	S_A_SR,w	;Töltse be a címet táblázatok Sines
	call	sinus		;A mintát az amplitúdó
      	clrf    PCLATH		;Nullázza az idősebb a lakcímnyilvántartás	
	addwf	RA_A,f		;Hajtsd az amplitúdó a minta
	btfss	STATUS,C	;Túlcsordulás az amplitúdó
	goto	VI6
L2	bcf	PORTB,1		;Igen, fordítsa el a kulcsot fázis-A-invertált	
	return
VI6	bsf	PORTB,1		;Ellenkező esetben a legfontosabb szakasza az off-A-invertált
	return
;==============================================================================================
I_B	movf	S_B_SR,w	;Töltse be a címet táblázatok Sines
	sublw	D'240'		;Ha a cím> 240
        btfss 	STATUS,C
	goto	L3		;Igen, fordítsa el a kulcsot
	movf	S_B_SR,w	;Töltse be a címet táblázatok Sines
	call	sinus		;A mintát az amplitúdó
      	clrf    PCLATH		;Nullázza az idősebb a lakcímnyilvántartás	
	addwf	RA_B,f		;Hajtsd az amplitúdó a minta
	btfss	STATUS,C	;Túlcsordulás az amplitúdó
	goto	VI3
L3	bcf	PORTB,2		;Igen, fordítsa el a kulcsot fázis-B	
	return
VI3	bsf	PORTB,2		;Ellenkező esetben a legfontosabb szakasza az off-B
	return
;==============================================================================================	
I_B_	movf	S_B_SR,w	;Töltse be a címet táblázatok Sines
	sublw	D'240'		;Ha a cím> 240
        btfss 	STATUS,C
	goto	L4		;Igen, fordítsa el a kulcsot
	movf	S_B_SR,w	;Töltse be a címet táblázatok Sines
	call	sinus		;A mintát az amplitúdó
      	clrf    PCLATH		;Nullázza az idősebb a lakcímnyilvántartás	
	addwf	RA_B,f		;Hajtsd az amplitúdó a minta
	btfss	STATUS,C	;Túlcsordulás az amplitúdó
	goto	VI4
L4	bcf	PORTB,3		;Igen, kapcsolja ki a fő fázisa fordított-B-	
	return
VI4	bsf	PORTB,3		;Ellenkező esetben a legfontosabb szakasza az off-B-fordított
	return
;==============================================================================================	
I_C	movf	S_C_SR,w	;Töltse be a címet táblázatok Sines
	sublw	D'240'		;Ha a cím> 240
        btfss 	STATUS,C
	goto	L5		;Igen, fordítsa el a kulcsot
	movf	S_C_SR,w	;Töltse be a címet táblázatok Sines
	call	sinus		;A mintát az amplitúdó
      	clrf    PCLATH		;Nullázza az idősebb a lakcímnyilvántartás	
	addwf	RA_C,f		;Hajtsd az amplitúdó a minta
	btfss	STATUS,C	;Túlcsordulás az amplitúdó
	goto	VI1
L5	bcf	PORTB,4		;Igen, kapcsolja ki a fő fázisait C	
	return
VI1	bsf	PORTB,4		;Ellenkező esetben hamis fázisa a C
	return
;==============================================================================================	
I_C_	movf	S_C_SR,w	;Töltse be a címet táblázatok Sines
	sublw	D'240'		;Ha a cím> 240
        btfss 	STATUS,C
	goto	L6		;Igen, fordítsa el a kulcsot
	movf	S_C_SR,w	;Töltse be a címet táblázatok Sines
	call	sinus		;A mintát az amplitúdó
      	clrf    PCLATH		;Nullázza az idősebb a lakcímnyilvántartás	
	addwf	RA_C,f		;Hajtsd az amplitúdó a minta
	btfss	STATUS,C	;Túlcsordulás az amplitúdó
	goto	VI2
L6	bcf	PORTB,5		;Igen, kapcsolja ki a fő fázisa fordított-C-	
	return
VI2	bsf	PORTB,5		;Ellenkező esetben, a fázis-off kapcsoló inverz
	return
;==============================================================================================			
START 				;Inicializálása CPU regiszterek
	banc0			;Csere. a bank0
	clrf	PORTA		;nullára out PORTA
	movlw	B'00000111'	;Kapcsolja ki a komparátor
        movwf 	CMCON		;PORTA digitális bemenetek és kimenetek
	movlw	B'00111111'	;Gasim mutatók
        movwf   PORTB		;kapcsolja ki a kulcsokat
	movlw	K_TMR0
	movwf	TMR0		;Töltse be a konstans a TMR0	
        banc1		 	;Csere. a BANK1
	bcf	VRCON,VREN	;Kapcsolja ki a feszültség referencia
	movlw   B'10000000'  	;Nagruz.rez.porta B off, Clock Input gener.na TMR0, predd. TMR0, koef.del = 01:02
        movwf   OPTION_REG 
        movlw   B'00110000'  	;Portok RA0-RA3, végezetül, RA4-RA5-bemenet
        movwf   TRISA 
        movlw   B'00000000'  	;Portok Rb0-RB7 a kimenetre
        movwf   TRISB 
        movlw   B'10100000'  	;Összes prérik és prérin. A TMR0-képes
        movwf   INTCON	
	banc0

 	movlw	0x20	;a 20h kezdőcím bevitele a munkaregiszterbe
 	movwf	FSR 	;a kezdőcím bevitele a címregiszterbe
Clr	clrf	INDF	;a közvetve kijelölt memóriahely törlése
 	incf	FSR,F	;a címregiszter növelése 1-gyel
 	btfss	FSR,4	;a címregiszter vizsgálata
 	goto	Clr 	;ugrás, ha a cím < 2Fh


	movlw	K_NO
	movwf	R_NO		;Töltse be az állandó ütemű növekedése a sebesség nyilvántartásban
	movlw	D'1'		;???????? ????????? ??????? ?????????
	movwf	TEMP

 	movlw	B'00100000'	;Állítsa be a jel a pozitív félhullámú fázis-A, B, C-negatív
	movwf	RF		
 	movlw	B'00000010'	;Kezdeti telepítés a jele a fázis mérő B-, A, C +
	movwf	RF1	

 	movlw	K_M60		;Betöltése állandók a nyilvántartásokat számlálók fázisok
	movwf	S_A_MR		;A megfelelő a ciklus kezdetén
	movwf	S_B_MR		;Fázis C-nullázódik
 	movlw	K_S60	   
	movwf	S_A_SR	
	movwf	S_B_SR	
				;Betöltése állandók a nyilvántartások frekvencia beolvasógomb
 	movlw	K_SH		;Töltsön K_SH W
	movwf	D_SH		;W terhelés D_SH
	movlw	K_SL		;Töltsön K_SL W
	movwf	D_SL		;W terhelés D_SL

				;olvasd el a RAM-ból az adott frekvenciaváltó
	movlw	D'0'		;Töltse be a címét a RAM W
	call	SCHIT		;Olvassa ZAD_F RAM
	movwf	ZAD_F		;Írjuk be az adatokat a RAM-ból regisztrálni ZAD_F

	call	B_D		;Bináris BCD


;==============================================================================================	
CIKL
 	clrwdt			;WDT Reset

	btfsc	RF,2		;check 0 volt a 2-bites regiszter RF
	call    Y_KN_P		;Nem, ez azt jelenti, a gomb megnyomásakor 1
	btfsc	RF,3		;ellenőrzés volt, 3-0-bites regiszter RF
	call    Y_KN_M		;Nem, ez azt jelenti, a gomb megnyomásakor -1


	goto	CIKL		;a ciklus programot

;==============================================================================================		 				
Y_KN_P				;korrekciója egy adott frekvenciaváltó egy gombot
	movlw	D'99'		;VIZSGÁLATOK
	subwf	ZAD_F,W		;Ha ZAD_F = 99
        btfss 	STATUS,Z        ;Igen ZAD_F = 99 ellenőrizni a zászló Z = 0, akkor átugorjuk lépés "
        incf 	ZAD_F,f         ;azt jelenti, ZAD_F = 1 ZAD_F

	call	B_D		;Bináris BCD
	bcf	RF,2		;Reset gomb megnyomását jele
	goto	L9
Y_KN_M				;korrekciója egy adott frekvenciaváltó egy gomb -1
	movlw	D'01'		;VIZSGÁLATOK
	subwf	ZAD_F,W		;Ha ZAD_F = 01
        btfss 	STATUS,Z        ;Igen ZAD_F = 01 ellenőrizni a zászló Z = 0, akkor átugorjuk lépés "
        decf 	ZAD_F,f         ;azt jelenti, ZAD_F = ZAD_F-1
	call	B_D		;Bináris BCD
	bcf	RF,3		;Reset gomb megnyomását jele -1
L9	movf	ZAD_F,0		;Töltsön ZAD_F W
	movwf	DTIM		;ZAD_F->DTIM
	movlw	D'0'		;Töltse be a címét a RAM W
	call	ZAPIS		;Írjon ZAD_F
	clrwdt			;WDT Reset
	return		
;==============================================================================================	
B_D				;Preobrazovvyvaem bin tól ZAD_F a december és tedd a UI1 és UI2
	movf	ZAD_F,w		;Töltsön ZAD_F -> W
	bcf	INTCON,GIE	;Minden megszakítás tiltása
	call	bin_dec		;Dekódolása a bin-> december-table módszerrel
      	clrf    PCLATH		;Nullázza az idősebb a lakcímnyilvántartás
	bsf	INTCON,GIE	;hogy minden megszakítás
	movwf	UI		;W -> UI
	andlw	b'00001111'	;Maszk UI1
	movwf	UI1		;W -> UI1
	swapf	UI,w		;swap a senior és junior 4bit -> W
	andlw	b'00001111'	;Maszk UI2
	movwf	UI2		;W -> UI2
	return	
;==============================================================================================		
				;Sub-felvétel adatai a RAM-ban
ZAPIS	
	bcf	INTCON,GIE	;Minden megszakítás tiltása
	banc1
	movwf	EEADR		;Írja be a címet a RAM lakcímnyilvántartás
	banc0
	movf	DTIM,0		;DTIM tárolt W
	banc1
	movwf	EEDATA		;Írjuk be az adatokat a RAM-adatok nyilvántartása
	bsf	EECON1,WREN	;behatolhatnak
	movlw	H'55'		;Szükséges műtét
	movwf	EECON2		;meg kell akadályozni
	movlw	H'AA'		;véletlenszerű írás
	movwf	EECON2		;Flash memória
	bsf	EECON1,WR	;A parancs a felvétel elindításához
	banc0
	bsf	INTCON,GIE	;hogy minden megszakítás
	return
;---------------------------				;Szubrutin olvasni adatokat a RAM memóriából
SCHIT	bcf	INTCON,GIE	;Minden megszakítás tiltása
	banc1
	movwf	EEADR		;Írja be a címet a RAM lakcímnyilvántartás
	bsf	EECON1,RD	;az olvasási parancs
	movf	EEDATA,W	;Az adatokat a RAM van a W regiszter
	banc0
	bsf	INTCON,GIE	;hogy minden megszakítás
	return
;============================================================================================	
			; Átváltási táblázat BIN -> 2 december mentesítési
			; Ellenőrizze, hogy a szám nagyobb, mint 63, akkor a táblázat nem megy
	org	H'300'
bin_dec bsf     PCLATH,0
	bsf     PCLATH,1
        addwf   PCL,F
	dt	00, 01, 02, 03, 04, 05, 06, 07, 08, 09
	dt	10, 11, 12, 13, 14, 15, 16, 17, 18, 19
	dt	20, 21, 22, 23, 24, 25, 26, 27, 28, 29
	dt	30, 31, 32, 33, 34, 35, 36, 37, 38, 39
	dt	40, 41, 42, 43, 44, 45, 46, 47, 48, 49
	dt	50, 51, 52, 53, 54, 55, 56, 57, 58, 59
	dt	60, 61, 62, 63, 64, 65, 66, 67, 68, 69
	dt	70, 71, 72, 73, 74, 75, 76, 77, 78, 79
	dt	80, 81, 82, 83, 84, 85, 86, 87, 88, 89
	dt	90, 91, 92, 93, 94, 95, 96, 97, 98, 99
;==============================================================================================	
	; Táblázat Sines *** mielőtt ellenőrizheti, hogy egy táblázat számot 240-250 is
			; túlcsordulás bit be "C" az egység, és nem megy az asztalhoz
	org	H'400'
sinus   bsf    PCLATH,2	
 	addwf  PCL,F 
	dt	00,  02,  03,  05,  06,  08,  0A,  0B,  0D,  0E,  10,  12,  13,  15,  16,  18  
	dt	1A,  1B,  1D,  1E,  20,  22,  23,  25,  26,  28,  2A,  2B,  2D,  2E,  30,  32  
	dt	33,  35,  36,  38,  39,  3B,  3D,  3E,  40,  41,  43,  44,  46,  47,  49,  4B  
	dt	4C,  4E,  4F,  51,  52,  54,  55,  57,  58,  5A,  5B,  5D,  5E,  60,  61,  63 
	dt	64,  66,  67,  69,  6A,  6C,  6D,  6E,  70,  71,  73,  74,  76,  77,  79,  7A  
	dt	7B,  7D,  7E,  80,  81,  82,  84,  85,  86,  88,  89,  8B,  8C,  8D,  8F,  90  
	dt	91,  93,  94,  95,  96,  98,  99,  9A,  9C,  9D,  9E,  9F,  0A1, 0A2, 0A3, 0A4
	dt	0A6, 0A7, 0A8, 0A9, 0AA, 0AC, 0AD, 0AE, 0AF, 0B0, 0B2, 0B3, 0B4, 0B5, 0B6, 0B7  
	dt	0B8, 0BA, 0BB, 0BC, 0BD, 0BE, 0BF, 0C0, 0C1, 0C2, 0C3, 0C4, 0C5, 0C6, 0C7, 0C8  
	dt	0C9, 0CA, 0CB, 0CC, 0CD, 0CE, 0CF, 0D0, 0D1, 0D2, 0D3, 0D4, 0D5, 0D6, 0D6, 0D7  
	dt	0D8, 0D9, 0DA, 0DB, 0DC, 0DC, 0DD, 0DE, 0DF, 0E0, 0E0, 0E1, 0E2, 0E3, 0E3, 0E4  
	dt	0E5, 0E6, 0E6, 0E7, 0E8, 0E8, 0E9, 0EA, 0EA, 0EB, 0EC, 0EC, 0ED, 0ED, 0EE, 0EF  
	dt	0EF, 0F0, 0F0, 0F1, 0F1, 0F2, 0F2, 0F3, 0F3, 0F4, 0F4, 0F5, 0F5, 0F6, 0F6, 0F7  
	dt	0F7, 0F8, 0F8, 0F8, 0F9, 0F9, 0F9, 0FA, 0FA, 0FB, 0FB, 0FB, 0FB, 0FC, 0FC, 0FC  
	dt	0FD, 0FD, 0FD, 0FD, 0FE, 0FE, 0FE, 0FE, 0FE, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF, 0FF  
	dt	0FF  
;==============================================================================================		
			;Táblázat növekmény frekvenciaváltó LSB
	org	H'500'
P_MR	bsf     PCLATH,0
	bsf     PCLATH,2
        addwf   PCL,F
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
	dt	00, 19, 32, 4B, 64, 7D, 96, 0AF, 0C8, 0E1
;==============================================================================================	
			;Táblázat növekmény frekvenciaváltó MSB
	org	H'600'
P_SR	bsf     PCLATH,1
	bsf     PCLATH,2
        addwf   PCL,F
	dt	00, 00, 00, 00, 00, 00, 00, 00, 00, 00
	dt	01, 01, 01, 01, 01, 01, 01, 01, 01, 01
	dt	02, 02, 02, 02, 02, 02, 02, 02, 02, 02
	dt	03, 03, 03, 03, 03, 03, 03, 03, 03, 03
	dt	04, 04, 04, 04, 04, 04, 04, 04, 04, 04
	dt	05, 05, 05, 05, 05, 05, 05, 05, 05, 05
	dt	06, 06, 06, 06, 06, 06, 06, 06, 06, 06
	dt	07, 07, 07, 07, 07, 07, 07, 07, 07, 07
	dt	08, 08, 08, 08, 08, 08, 08, 08, 08, 08
	dt	09, 09, 09, 09, 09, 09, 09, 09, 09, 09
;==============================================================================================	

	end



