
$MOD51
;**************************************************************
;**************************************************************
;**							     **
;**---------------INTELLIGENT UPS PROJECT--------------------**
;**		  Inverter Module Software		     **
;**************************************************************
;*************ADVISOR: Prof. Dr. Eyup AKPINAR******************
;**							     **  
;**-----------------------DESIGNERS--------------------------**
;**	    	          BATU CURA			     **
;**			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
	RETI
;(((((((((((((((((((MAIN PROGRAM START)))))))))))))))))))))))))
START:  ANL P1,#83H
	MOV IE,#85H
	MOV IP,#01H		;ZERO CROSS INT. PRIORTY HIGH
	MOV TCON,#00H
	MOV R1,#00H		;INT0 FALLING EDGE YAPILDI
	MOV R4,#00H
	ORG 27H
TEKRAR:
	CJNE R4,#01,DRIVE1
	MOV R4,#02H
	AJMP NEGCYCLE
DRIVE1:
	CJNE R4,#02,REPEAT
	MOV R4,#01H
	AJMP POSCYCLE	
REPEAT: NOP
	CJNE R4,#00,TEKRAR
	AJMP REPEAT
;(((((((((((((((((((PWM SIGNAL GENERATORS))))))))))))))))))))))
;<<<<<<<<<<<<<<<<<<<<<<POSITIVE CYCLE>>>>>>>>>>>>>>>>>>>>>>>>>>
POSCYCLE:
	MOV IE,#00H
	MOV IE,#85H
	CLR P1.4
	CLR P1.2
	CALL DELAY
	SETB P1.5
	SETB P1.3
	CALL DELAY2
	CLR P1.2
	CLR P1.4
	CALL DELAY
	MOV R3,#1BH
FWAIT2:	NOP
	DJNZ R3,FWAIT2
CONTROL1:
	JB P1.0,GOON1
	CLR P1.3
	CALL DELAY
	SETB P1.2
	CALL DELAY2
	AJMP CONTROL1
GOON1:
	CLR P1.2
	CALL DELAY
	SETB P1.3
	CALL DELAY2
	AJMP CONTROL1
;<<<<<<<<<<<<<<<<<<<<<<NEGATIVE CYCLE>>>>>>>>>>>>>>>>>>>>>>>>>>>
NEGCYCLE:
	MOV IE,#00H
	MOV IE,#85H	
	CLR P1.5
	CLR P1.3
	CALL DELAY
	SETB P1.4
	SETB P1.2
	NOP
	NOP	
	MOV R3,#1BH
FWAIT1:	NOP
	DJNZ R3,FWAIT1
AGAIN:	JB P1.1,CONTROL2
	CLR P1.2
	CALL DELAY2
	SETB P1.3
	CALL DELAY2
	AJMP AGAIN
CONTROL2:
	SETB P1.2
	NOP
	NOP
	CLR P1.3
	CALL DELAY
	AJMP AGAIN
DELAY:
	MOV B,#0CH
DO:	NOP
	DJNZ B,DO
	RET
DELAY2:
	MOV B,#07H
DO2:	NOP
	DJNZ B,DO2
	RET
;>>>>>>>>>>>>>>>>>>>>>>>>>>>ALARM<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
	ORG 00B9H
	MOV IE,#00H
	MOV R4,#00H
	ACALL REPEAT
;((((((((((((((((((((((((INTERRUPT PROGRAM))))))))))))))))))))))
SPECIFY:
	JNB P1.0,YES1
	JNB P1.1,NO3
	AJMP SPECIFY
YES1:   JNB P1.1,YES2
NO2:	MOV R4,#02H
	MOV R1,#0FFH
	RET
YES2:	JNB P1.0,YES3
NO3:	MOV R4,#01H
	MOV R1,#0FFH
	RET
YES3:	JNB P1.1,YES4
	AJMP NO2
YES4:	AJMP YES2
;<<<<<<<<<<<<<<<<<<<<CYCLE BRANCHING>>>>>>>>>>>>>>>>>>>>>>>>>>>
DECIDE:
	CJNE R1,#00H,SAYKIL
	ACALL SPECIFY
	RET
SAYKIL:	
	MOV 32H,#27H
	MOV 31H,#00H
	POP DPH
	POP DPL
	PUSH 32H
	PUSH 31H
	RET
STOP:
	ANL P1,#43H
	SETB P1.6
	POP DPH
	POP DPL
	MOV 33H,#0B9H
	MOV 34H,#00H
	MOV R4,#01H
	PUSH 33H
	PUSH 34H
	RETI
END
