Sunteți pe pagina 1din 16

;;THIS PROGRAM ONITORS MESEB SUPPLY AND STARTS GENSET IN CASE OF MSEB

FAILURE
;;GENSET IS MONITORED EVERY 3 MINUTES FOR RANDOM CHECK SO AS TO ENSURE
;;THE FUNCTION OF GENSET.
;;PREPARED BY SIDDHESH,SIDDHATRH AND SHWETA.
;;11:40 AM 6/7/2010

ORG 0000H
SJMP L1

ORG 002BH ;T2 INTERRUPT
L2: LJMP GET_DATA



ORG 30H
L1: CLR P0.0 ;RELAYS OFF
CLR P0.1
CLR P0.2
CLR P0.3 ;RELAYS OFF
SETB P0.4 ;S/W INPUT
SETB P0.5
SETB P0.6
SETB IE.7 ;MASTER INTP ENABLE
SETB IE.5 ;T2 OVERFLOW ENABLE
MOV 31H,#03H ;SHIFT DISPLAY
MOV P2,#0FFH ;CONTROL INPUT
MOV TMOD,#21H ;T0=TIMER,T1=BAUD RATE
MOV TH1,#0FDH
MOV TL1,#0FDH ;9600 BAUD RATE
MOV SCON,#50H ;SERIAL COFIG.
SETB TR1 ;BRG ON
SETB SCON.4 ;RECEIVE ENABLE
MOV 0CDH,#3CH ;T2 FOR 50 MSEC INTP TH2
MOV 0CCH,#0B0H ;T2 FOR 50 MSEC INTP TL2
MOV 0C8H,#00H ;T2 IN OFF CONDITION
MOV 30H,#14H ;COUNTER OF 20 FOR 1 SEC
MOV 0CBH,#3CH ;CAP HIGH OF T2
MOV 0CAH,#0B0H ;CAP LOW OF T2
MOV 35H,#00H ;FLG OF INTERLOCKS
MOV 46H,#00H ;GENSET ON FLAG

;;REGISTER ASSIGNMENT
;;30H FOR 1 SEC INTERRUPT


LOAD BIT P0.0 ;CHANGEOVER TO GENSET
ALARM BIT P0.1 ;FOR OVERRANGE CONDITIONS
CRANK BIT P0.2 ;FOR ENGINE CRANKING
REL BIT P0.3 ;EXTRA
PRESURE BIT P0.4
TEMPR BIT P0.5
FLOAT BIT P0.6
VLHI EQU 47H
VLLO EQU 48H

CTA1 BIT P2.0
CTA2 BIT P2.1
CTA3 BIT P2.2 ;CONTROL INPUTS

;;======================================================================

; LJMP EVAL_VOL ;TEMPPPPPPPPPPPPP

;;=======================================================================

LCALL DELAY1
MOV A,#00H
MOV B,#38H ;LCD INITIALISED
LCALL LCD_OUT
MOV A,#00H
MOV B,#0EH
LCALL LCD_OUT
MOV A,#00H
MOV B,#01H
LCALL LCD_OUT

SHIFT: MOV A,#00H ;TO SHIFT THREE SPACES
MOV B,#14H
LCALL LCD_OUT
DJNZ 31H,SHIFT
MOV 31H,#03H

FIR_MES: MOV DPTR,#STRNG_ONE ;WELCOME DISPLAY
LCALL DIS_PRO

LINET: MOV A,#00H
MOV B,#0C0H
LCALL LCD_OUT ;LINE 2 OF DISPLAY
MOV 31H,#02H

SND_MES: MOV DPTR,#STRNG_TWO ;GENSET CONTROL
LCALL DIS_PRO


INIT_DELAY: MOV 21H,#0FFH ;5 SECONDS
LOP: LCALL DELAY3
DJNZ 21H,LOP
MOV 21H,#0FFH

LCALL CHECK_CONS
MOV A,35H
JZ MAIN
KKK: SJMP KKK
;;=================================================================
;;INITIALISATION OVER
;;================================================================
MAIN: MOV 21H,#0FFH
LOP_LST: LCALL DELAY3
DJNZ 21H,LOP_LST
MOV 21H,#0FFH
LCALL DI_CLR
MOV VLHI,#06H
MOV VLLO,#0A4H
;;=======================================================================
===
MSEB_VOL: MOV DPTR,#STRNG_SIX ;MSEB CHECKING
LCALL DIS_PRO
LCALL LINE_TWO
TE_LP: LCALL CHONE
LCALL SHOW_VOLTAGE


NO_GENSET: MOV 30H,#14H ;ONE SECOND
MOV 31H,#60 ;FOR ONE MIN
MOV 32H,#01H ;FOR 3 MIN.
MOV 0C8H,#04H ;START T2

STOP: SJMP STOP ;WAIT FOR INTERRUPT


GET_DATA: DJNZ 30H,REP_LOP
SJMP ADD_ONE_MIN

REP_LOP: MOV 0C8H,#04H
RETI

ADD_ONE_MIN: MOV 0C8H,#00H
LCALL CHECK_CONS
MOV A,35H
JZ CONTINUE_TIME
JJJ: SJMP JJJ

CONTINUE_TIME: MOV 30H,#14H
DJNZ 31H,REP_LOP

CHK_MS_VOLTAGE: MOV 0C8H,#00H ;T2 OFF
MOV 30H,#14H
MOV 31H,#60 ;FOR ONE MIN
LCALL CHONE
LCALL LINE_TWO
LCALL SHOW_VOLTAGE
DJNZ 32H,REP_LOP

CHK_GENSETON: MOV A,46H ;IS GENSET ON
JZ EVAL_VOL
LJMP RUN_GENSET

EVAL_VOL: MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H
; JZ RANDOM_CHECK
JC RANDOM_CHECK
LJMP START_GENSET

;;=======================================================================
====
;;RANDOM CHECKING OF GENSET WHEN MSEB IS ON
;;=======================================================================
==

RANDOM_CHECK: LCALL CHONE ;GENSET VOLTAGE

LCALL DI_CLR
MOV DPTR,#STRNG_MSEB
LCALL DIS_PRO
LCALL LINE_TWO
LCALL SHOW_VOLTAGE


MOV 56H,#50H
STB_LOPMS: LCALL DELAY3
DJNZ 56H,STB_LOPMS


MOV 0C8H,#00H ;;T2 OFF
MOV 30H,#14H
MOV 31H,#60 ;FOR ONE MIN
MOV 32H,#01H ; MIN
LCALL CHTWO ;GENSET VOLTAGE

LCALL DI_CLR
MOV DPTR,#CRNKONEDS
LCALL DIS_PRO


CRNK_ONE: SETB CRANK ;CRANKING RELAY ON
LCALL DELAY6
LCALL DELAY3
CLR CRANK ;CRANKING RELAY OFF

MOV 56H,#50H
STB_LOP: LCALL DELAY3
DJNZ 56H,STB_LOP



LCALL LINE_TWO
LCALL SHOW_VOLTAGE

;WT: SJMP WT ;TEMPPPPPPPPP

COMPARE_VTG: MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H
; JZ CRNKONE_OK
JC CRNKONE_OK
SJMP CRANKTWO

CRNKONE_OK: LCALL DELAY6
LCALL DELAY6 ;GENSET STABILISATION
LCALL DI_CLR
MOV DPTR,#STRNG_SVEN ;RANDOM CHECK
LCALL DIS_PRO
LCALL LINE_TWO
LCALL SHOW_VOLTAGE

MOV 56H,#50H
STB_RUN: LCALL DELAY3
DJNZ 56H,STB_RUN

LCALL DI_CLR
MOV DPTR,#STRNG_ETH
LCALL DIS_PRO

RUN_DEL: MOV 56H,#50H
STB_DEL: LCALL DELAY3
DJNZ 56H,STB_DEL

LCALL DI_CLR
MOV DPTR,#STRNG_TEN ;RANDOM CHECK OVER
LCALL DIS_PRO

;WT: SJMP WT ;TEMPPPPPPPPP


MOV 0C8H,#04H
RETI
;;=======================================================================
====
;;RANDOM CHECK SUCCESSFUL AT ABOVE PROCEDURE
;;=======================================================================
=====

CRANKTWO: LCALL DI_CLR
MOV DPTR,#CRNKTWODS
LCALL DIS_PRO


SETB CRANK ;CRANKING RELAY ON
LCALL DELAY6
CLR CRANK ;CRANKING RELAY OFF

MOV 56H,#15H
STB_CRTWO: LCALL DELAY3
DJNZ 56H,STB_CRTWO


LCALL LINE_TWO
LCALL SHOW_VOLTAGE

;KWT: SJMP KWT ;TEMPPPPPPPPP


MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H

JC CRNKONE_OK_INM
SJMP CRANKTHR

CRNKONE_OK_INM: LJMP CRNKONE_OK
;;=======================================================================
===

CRANKTHR: LCALL DI_CLR
MOV DPTR,#CRNKTHRDS
LCALL DIS_PRO

SETB CRANK ;CRANKING RELAY ON
LCALL DELAY6
CLR CRANK ;CRANKING RELAY OFF

MOV 56H,#45H
STB_CRTWOK: LCALL DELAY3
DJNZ 56H,STB_CRTWOK


LCALL LINE_TWO
LCALL SHOW_VOLTAGE
MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H
JC CRNKONE_OK_INM_TW
SJMP CRANK_FAIL
CRNKONE_OK_INM_TW: LJMP CRNKONE_OK

CRANK_FAIL: LCALL DI_CLR
MOV DPTR,#STRNG_NINE
LCALL DIS_PRO
CRAN: SJMP CRAN ;PROCESS STOP

;;=======================================================================
==
START_GENSET: MOV 0C8H,#00H ;;T2 OFF
MOV 30H,#14H
MOV 31H,#60 ;FOR ONE MIN
MOV 32H,#01H ; MIN


LCALL DI_CLR
MOV DPTR,#CRNKONEDS
LCALL DIS_PRO


SETB CRANK ;CRANKING RELAY ON
LCALL DELAY6
CLR CRANK ;CRANKING RELAY OFF

MOV 56H,#45H
STB_LOP_GE: LCALL DELAY3
DJNZ 56H,STB_LOP_GE

;SETB CTA1 ;MUX COCNTROL INPUT
LCALL LINE_TWO
LCALL SHOW_VOLTAGE
LCALL LINE_TWO
LCALL SHOW_VOLTAGE
MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H
JZ CRNKONE_OK_GE
JC CRNKONE_OK_GE
SJMP CRANKTWO_GE

CRNKONE_OK_GE: LCALL DELAY6
LCALL DELAY6 ;GENSET STABILISATION
LCALL DI_CLR
MOV DPTR,#STRNG_SVEN ;RANDOM CHECK
LCALL SHOW_VOLTAGE

RUN_GENSET_GE: MOV 56H,#45H
STB_RUN_GE: LCALL DELAY3
DJNZ 56H,STB_RUN_GE

LCALL DI_CLR
MOV DPTR,#STRNG_ETH
LCALL DIS_PRO

RUN_DEL_GE: MOV 56H,#45H
STB_DEL_GE: LCALL DELAY3
DJNZ 56H,STB_DEL_GE

MOV 0C8H,#04H
MOV 46H,#0FFH ;GENSET ON
RETI
;;=======================================================================
===
;;GENERATOR SWITCHED ON SUCCESSFULLY AT ABOVE PROCEDURE
;;=======================================================================
==

CRANKTWO_GE: LCALL DI_CLR
MOV DPTR,#CRNKTWODS
LCALL DIS_PRO


SETB CRANK ;CRANKING RELAY ON
LCALL DELAY6
CLR CRANK ;CRANKING RELAY OFF

MOV 56H,#45H
STB_CRTWO_GE: LCALL DELAY3
DJNZ 56H,STB_CRTWO_GE

;SETB CTA1 ;MUX COCNTROL INPUT
LCALL LINE_TWO
LCALL SHOW_VOLTAGE
MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H
JZ CRNKONE_OK_INM_GE
JC CRNKONE_OK_INM_GE
SJMP CRANKTHR_GE

CRNKONE_OK_INM_GE: LJMP CRNKONE_OK_GE

CRANKTHR_GE: LCALL DI_CLR
MOV DPTR,#CRNKTHRDS
LCALL DIS_PRO


SETB CRANK ;CRANKING RELAY ON
LCALL DELAY6
CLR CRANK ;CRANKING RELAY OFF

MOV 56H,#45H
STB_CRTWO_GE_KK: LCALL DELAY3
DJNZ 56H,STB_CRTWO_GE_KK

SETB CTA1 ;MUX COCNTROL INPUT
LCALL LINE_TWO
LCALL SHOW_VOLTAGE
LCALL LINE_TWO
LCALL SHOW_VOLTAGE
MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H
;JZ CRNKONE_OK_INM_TW_GE_SS
JC CRNKONE_OK_INM_TW_GE_SS
SJMP CRANK_FAIL_GE

CRNKONE_OK_INM_TW_GE_SS: LJMP CRNKONE_OK_GE

CRANK_FAIL_GE: LCALL DI_CLR
MOV DPTR,#STRNG_NINE
LCALL DIS_PRO
CRANGE: SJMP CRANGE ;PROCESS STOP
;;=======================================================================
RUN_GENSET: LCALL CHECK_CONS
MOV 0C8H,#00H ;;T2 OFF
MOV 30H,#14H
MOV 31H,#60 ;FOR ONE MIN
MOV 32H,#01H ; MIN

CHECK_MSEB: LCALL CHONE
LCALL LINE_TWO
LCALL SHOW_VOLTAGE

MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H
; JZ MSEB_VALID
JC MSEB_VALID
SJMP MONITOR_GENSET

MSEB_VALID: MOV 56H,#45H
LCALL DI_CLR
MOV DPTR,#STRNG_MSEB
LCALL DIS_PRO



STB_MSEB_ON: LCALL DELAY3
DJNZ 56H,STB_MSEB_ON
CLR LOAD ;CHANGEOVER TO MSEB
MOV 46H,#00H ;FLAG CLEARED
MOV 0C8H,#04H
RETI

MONITOR_GENSET: LCALL CHTWO

LCALL LINE_TWO
LCALL SHOW_VOLTAGE

MOV A,VLLO
CLR C
SUBB A,21H
MOV A,VLHI
SUBB A,20H
JC CONTINUE_GENSET
SJMP STOP_GENSET


CONTINUE_GENSET: MOV 0C8H,#04H
RETI

STOP_GENSET: LCALL DI_CLR
MOV DPTR,#STRNG_GOF
LCALL DIS_PRO
GGG: SJMP GGG

;;=======================================================================
======
;;PROGRAM COMPLETE


;;=======================================================================
====
CHECK_CONS: MOV 35H,#00H ;INTERLOCK FLAG
JNB PRESURE,CHK_PRES
SJMP CHK_TEMP
CHK_PRES: LCALL DELAY3
JNB PRESURE,CONF_PRESURE
SJMP CHK_TEMP
CONF_PRESURE: LCALL DELAY3
LCALL DI_CLR
MOV DPTR,#STRNG_THREE
LCALL DIS_PRO
HERE: MOV 35H,#0FFH
LJMP FINAL_RETURN
;;==================================================================
CHK_TEMP: JB TEMPR,CHK_TEMPR
SJMP CHK_FLOAT
CHK_TEMPR: LCALL DELAY3
JB TEMPR,CONF_TEMPR
SJMP CHK_FLOAT
CONF_TEMPR: LCALL DI_CLR
MOV DPTR,#STRNG_FOUR
LCALL DIS_PRO
TEMP: MOV 35H,#0FFH
LJMP FINAL_RETURN
;;================================================================
CHK_FLOAT: JB FLOAT,GET_FLOAT
SJMP FINAL_RETURN
GET_FLOAT: LCALL DELAY3
JB FLOAT,CONF_FLOAT
SJMP FINAL_RETURN
CONF_FLOAT: LCALL DI_CLR
MOV DPTR,#STRNG_FIVE
LCALL DIS_PRO
MOV 35H,#0FFH

FINAL_RETURN: RET ;OUT FROM PROCEDURE
;;=======================================================================
=

SHOW_VOLTAGE: MOV 20H,#00H ;cLK;EQU;P2.2
MOV 21H,#00H
CLR A
SETB P2.3 ;CLOCK HIGH
SETB P2.4 ;DATA
SETB P2.5 ;CS
GET_DA: MOV R2,#0FH ;COUNTER OF 15

NEXT_BT: CLR P2.3 ;CLK LOW
CLR P2.5 ;CS LOW
LCALL DELAY1 ;DELAY
SETB P2.3 ;CLK HIGH
LCALL DELAY1 ;DELAY
MOV C,P2.4 ;DATA IN C FLAG
RLC A
XCH A,20H
RLC A
XCH A,20H
DJNZ R2,NEXT_BT
MOV 21H,A
ANL 20H,#0FH
SETB P2.5 ;CS HIGH,END OF CON.



TEM_JMP: MOV R1,#10H ;TEMP
MOV R5,#00H
MOV R6,#00H ;COUNT TAKEN IN B
MOV R7,#00H
MOV 35H,#00H
MOV R2,21H ;LOWER BYTE USED FOR COMPARISON

MOV R3,20H
BCD_LP: MOV A,R2
ADD A,R2
MOV R2,A

MOV A,R3
ADDC A,R3
MOV R3,A
;===============================
MOV A,R5
ADDC A,R5
DA A
MOV R5,A

MOV A,R6
ADDC A,R6
DA A
MOV R6,A

;;MOV A,35H
;ADDC A,35H
;DA A
;MOV 35H,A

DJNZ R1,BCD_LP
;===================================
MOV A,R6
SWAP A
ANL A,#0FH
MOV R7,A
MOV A,R6
ANL A,#0FH
MOV R6,A

MOV A,R5
SWAP A
ANL A,#0FH
XCH A,R5
ANL A,#0FH
MOV R4,A
;===========================================
MOV 42H,R4
MOV 41H,R5
MOV 40H,R6
MOV 3FH,R7

PACK_NO: MOV 43H,41H
MOV 44H,42H

MOV A,43H
ANL A,#0FH
SWAP A
MOV 43H,A

MOV A,44H
ANL A,#0FH
MOV 44H,A

MOV A,43H
ADD A,44H
MOV 43H,A ;FOR COMPARISON TWO DIGITS


ASC_CON: MOV A,42H
ORL A,#30H
MOV 42H,A

MOV A,41H
ORL A,#30H
MOV 41H,A

MOV A,40H
ORL A,#30H
MOV 40H,A

MOV A,3FH
ORL A,#30H
MOV 3FH,A


DIS_VOLTS: MOV A,#01H
MOV B,3FH
LCALL LCD_OUT

MOV A,#01H
MOV B,40H
LCALL LCD_OUT

MOV A,#01H
MOV B,41H
LCALL LCD_OUT

MOV A,#01H
MOV B,#2EH
LCALL LCD_OUT

MOV A,#01H
MOV B,42H
LCALL LCD_OUT

MOV A,#01H
MOV B,#'V'
LCALL LCD_OUT
MOV A,#01H
MOV B,#'O'
LCALL LCD_OUT
MOV A,#01H
MOV B,#'L'
LCALL LCD_OUT
MOV A,#01H
MOV B,#'T'
LCALL LCD_OUT
MOV A,#01H
MOV B,#'S'
LCALL LCD_OUT

RET


;;==============================================================

LCD_OUT: SETB P1.7 ;BUSY LINE OF LCD
CLR P3.2 ;RS=0
SETB P3.3 ;R/W = 1
ATUL: JNB P3.0,ATUL
BUSY: CLR P3.4 ;E = 0
NOP
NOP
SETB P3.4 ;E = 1
JB P1.7,BUSY ;FOR SIMULATION JNB
JZ KOMAND
SETB P3.2 ;RS = 1 FOR DATA
RAKESH: JNB P3.1,RAKESH
CLR P3.1
RET
KOMAND: MOV P1,B ;B REG COPIED TO P1
CLR P3.3 ;R/W =0
CLR P3.4 ;E = 0
SETB P3.4 ;E = 1
RET
;;====================================================================

DIS_PRO: MOV R2,#00H

WRT_ONE: MOV A,R2
MOVC A,@A+DPTR
JZ BACK_PRO
MOV B,A
MOV A,#01H
LCALL LCD_OUT
INC R2
SJMP WRT_ONE
BACK_PRO: RET
;;===================================================================
DI_CLR: MOV A,#00H
MOV B,#01H
LCALL LCD_OUT
RET
;;===================================================================
LINE_TWO: MOV A,#00H
MOV B,#0C0H
LCALL LCD_OUT
RET
;;===================================================================


STRNG_ONE: DW 'WE'
DW 'LC'
DW 'OM'
DB 'E'
DB 20H
DW 'TO',0


STRNG_TWO: DW 'GE'
DW 'NS'
DW 'ET'
DB 20H
DW 'CO'
DW 'NT'
DW 'RO'
DB 'L',0


STRNG_THREE: DW 'PR'
DW 'ES'
DW 'SU'
DW 'RE'
DB 20H
DW 'HI'
DW 'GH',0



STRNG_FOUR: DW 'TE'
DW 'MP'
DW 'ER'
DW 'AT'
DW 'UR'
DB 'E'
DB 20H
DW 'HI'
DW 'GH',0

STRNG_FIVE: DW 'FU'
DW 'EL'
DB 20H
DW 'LE'
DW 'VE'
DB 'L'
DB 20H
DW 'LO'
DB 'W',0

STRNG_SIX: DW 'CH'
DW 'EC'
DW 'KI'
DW 'NG'
DB 20H
DW 'MS'
DW 'EB',0

STRNG_SVEN: DW 'RA'
DW 'ND'
DW 'OM'
DB 20H
DW 'CH'
DW 'EC'
DB 'K',0

STRNG_ETH: DW 'GE'
DW 'NS'
DW 'ET'
DB 20H
DW 'ON',0




STRNG_NINE: DW 'CR'
DW 'AN'
DW 'KI'
DW 'NG'
DB 20H
DW 'FA'
DW 'IL',0

STRNG_TEN: DW 'RA'
DW 'ND'
DW 'OM'
DB 20H
DW 'CH'
DB 'K'
DB 20H
DW 'OV'
DW 'ER',0

CRNKONEDS: DW 'CR'
DW 'AN'
DB 'K'
DB 20H
DW 'ON'
DB 'E',0

CRNKTWODS: DW 'CR'
DW 'AN'
DB 'K'
DB 20H
DW 'TW'
DB 'O',0

CRNKTHRDS: DW 'CR'
DW 'AN'
DB 'K'
DB 20H
DW 'TH'
DB 'R',0

STRNG_GOF: DW 'GE'
DW 'NS'
DW 'ET'
DB 20H
DB 'O'
DW 'FF',0

STRNG_MSEB: DW 'MS'
DW 'EB'
DB 20H
DW 'ON',0
;;==================================================================

DELAY1: MOV 56H,#0FFH ;0.5 MSEC
DJNZ 56H,$
MOV 56H,#0FFH
DJNZ 56H,$
RET

DELAY2: MOV 58H,#28H ;7 MSEC
COUNT_FO: MOV 56H,#0FFH
DJNZ 56H,$
DJNZ 58H,COUNT_FO
RET

DELAY3: MOV 59H,#4CH ;20 MSEC
TIME_CNT: MOV 5AH,#0FFH
DJNZ 5AH,$
DJNZ 59H,TIME_CNT
RET

DELAY4: MOV 56H,#07H ;7 MISEC
DJNZ 56H,$
RET

DELAY5: MOV 58H,60H ;224 MISEC*VALUE OF 60H
AD_CNT: MOV 56H,#0E0H
DJNZ 56H,$
DJNZ 58H,AD_CNT
RET

DELAY6: MOV 58H,#25 ;ADJUST SECONDS HERE
REP_SE: LCALL DELAY3
DJNZ 58H,REP_SE
RET



;;=================================================================
CHONE: CLR CTA1
CLR CTA2
CLR CTA3
RET
;;=================================================================
CHTWO: SETB CTA1
CLR CTA2
CLR CTA3
RET
;;=================================================================




END

S-ar putea să vă placă și