
$MOD51
;**************************************************************
;**************************************************************
;**							     **
;**---------------INTELLIGENT UPS PROJECT--------------------**
;**		  Inverter Module Software		     **
;**************************************************************
;*************ADVISOR: Prof. Dr. Eyup AKPINAR******************
;**							     **  
;**-----------------------DESIGNERS--------------------------**
;**	    	        BATUHAN CELIK			     **
;**			FUAD SOLTANOV			     **
;**			 HASIM TURGUT			     **
;**************************************************************
;**							     **
;**------------MicroController Family:ATMEL80C51-------------**
;**							     **
;**************************************************************
;**************************************************************
;(((((((((((((((((((((((MAIN PROGRAM)))))))))))))))))))))))))))
	ORG 00H
	AJMP START
;(((((((((((((((((INTERRUPT SUB-PROGRAM))))))))))))))))))))))))
	ORG 03H
	ACALL DECIDE
	RETI
	ORG 13H
	LCALL STOP
;(((((((((((((((((((MAIN PROGRAM START)))))))))))))))))))))))))
START:  ANL P1,#83H
	MOV IE,#85H
	MOV IP,#01H		;ZERO CROSS INT. PRIORTY HIGH
	MOV TCON,#01H		;INT0-> MADE FALLING EDGE
	MOV R1,#00H		
	MOV R2,#00H
REPEAT: NOP
	AJMP REPEAT
;(((((((((((((((((((PWM SIGNAL GENERATORS))))))))))))))))))))))
;<<<<<<<<<<<<<<<<<<<<<<POSITIVE CYCLE>>>>>>>>>>>>>>>>>>>>>>>>>>
	ORG 33H
	CLR P1.4
	CLR P1.2
	NOP
	NOP
	NOP
	NOP
	NOP			;THESE NOP COMMANDS USED FOR OUR IPM MODULE RISING/FALLING TIME DELAYS
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	SETB P1.5
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR P1.2
	CLR P1.4
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV R3,#1BH
FWAIT2:	NOP
	DJNZ R3,FWAIT2
CONTROL1:
	JB P1.0,GOON1
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	SETB P1.2
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	AJMP CONTROL1
GOON1:
	CLR P1.2
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	AJMP CONTROL1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>ALARM<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ORG 94H
	MOV IE,#00H
	ACALL REPEAT
;<<<<<<<<<<<<<<<<<<<<<<NEGATIVE CYCLE>>>>>>>>>>>>>>>>>>>>>>>>>>>
	ORG 100H
	CLR P1.5
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	SETB P1.4
	SETB P1.2
	NOP
	NOP	
	MOV R3,#1BH
FWAIT1:	NOP
	DJNZ R3,FWAIT1
AGAIN:	JB P1.1,CONTROL2
	CLR P1.2
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	SETB P1.3
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	AJMP AGAIN
CONTROL2:
	SETB P1.2
	NOP
	NOP
	CLR P1.3
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	AJMP AGAIN
;((((((((((((((((((((((((INTERRUPT PROGRAM))))))))))))))))))))))
SPECIFY:
	JNB P1.0,YES1
	JNB P1.1,NO3
	AJMP SPECIFY
YES1:   JNB P1.1,YES2
NO2:	MOV R2,#0FH
	MOV R1,#0FFH
	RET
YES2:	JNB P1.0,YES3		;HERE +VE OR -VE CYCLE OF 50HZ SIN IS BEING SPECIFIED
NO3:	MOV R2,#0FFH
	MOV R1,#0FFH
	RET
YES3:	JNB P1.1,YES4
	AJMP NO2
YES4:	AJMP YES2
;<<<<<<<<<<<<<<<<<<<<CYCLE BRANCHING>>>>>>>>>>>>>>>>>>>>>>>>>>>
CYCLE:	
	CJNE R2,#0FH,NEG	;R2 0F DEN FARKLI OLMASI DEMEK ONCEKÝ SAYKILLIN POZITIF OLMASI ANLAMINDADIR.BU NEDENLE NEGATÝF SAYKILA GIDILIR
	MOV 30H,#33H
	MOV 31H,#00H
	POP DPH
	POP DPL
	PUSH 30H	
	PUSH 31H
	MOV R2,#0FFH
	RET			;HERE I'm MANUPULATING THE STACK POINTER TO BRACH THE MICROCNTROLLER +VE OR -VE CYCLE PWM GENERATIG PROGRAM 
NEG:	MOV 32H,#01H
	MOV 31H,#00H
	POP DPH
	POP DPL
	PUSH 32H
	PUSH 31H
	MOV R2,#0FH
	RET
DECIDE:
	CJNE R1,#00H,SAYKIL
	ACALL SPECIFY
	RET
SAYKIL:	ACALL CYCLE
	RET
STOP:
	ANL P1,#43H
	SETB P1.6
	POP DPH
	POP DPL
	MOV 33H,#94H
	MOV 34H,#00H
	PUSH 33H
	PUSH 34H
	RETI
END
