Ravi Dutt
Newbie level 2
Code:
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' G R T I
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' Fire Panel 4 Zone
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$large
$baud = 19200
$crystal = 12000000
'***************************************************************************
' Trip all output ports to zeros
'***************************************************************************
Reset P2.0
Reset P2.1
Reset P2.2
Reset P2.3
'Reset P3.0
'Reset P3.1
Reset P3.7
'***************************************************************************
'***************************************************************************
' Configure input & output ports
'***************************************************************************
'***************************************************************************
Chootr Alias P3.2 ' Common hooter
Cfire Alias P3.3 ' Common Fire Output
Cfault Alias P3.4 ' Common fault Output
Trsil Alias P3.5 ' Trouble Silence Input
Alsil Alias P3.6 ' Alarm Silence Input
Buz Alias P3.7 ' Buzzer Output
'***************************************************************************
' Inputs for Zones 1, 2 & 3
'***************************************************************************
F1 Alias P0.0 ' Zone-1 fire
O2 Alias P0.1 ' Zone-2 open
S1 Alias P0.2 ' Zone-1 short
S2 Alias P0.3 ' Zone-2 short
O1 Alias P0.4 ' Zone-1 open
F2 Alias P0.5 ' Zone-2 fire
F3 Alias P0.6 ' Zone-3 fire
S3 Alias P0.7 ' Zone-3 short
'***************************************************************************
' Outputs for hooters in Z1-4
'***************************************************************************
H1 Alias P2.0 ' Zone-1 hooter
H2 Alias P2.1 ' Zone-2 hooter
H3 Alias P2.2 ' Zone-3 hooter
H4 Alias P2.3 ' Zone-4 hooter
H5 Alias P1.6
H6 Alias P1.7
'***************************************************************************
' Inputs for Zones 3 & 4
'***************************************************************************
O4 Alias P2.4 ' Zone-4 open
F4 Alias P2.5 ' Zone-4 fire
O3 Alias P2.6 ' Zone-3 open
S4 Alias P2.7 ' Zone-4 short
'***************************************************************************
' Inputs for Zones 5 & 6
'***************************************************************************
F5 Alias P1.0
S5 Alias P1.1
O5 Alias P1.2
F6 Alias P1.3
S6 Alias P1.4
O6 Alias P1.5
'Open "com3.1:9600" For Output As #1
'***************************************************************************
'***************************************************************************
' System variable declaration
'***************************************************************************
'***************************************************************************
Dim Errorno As Byte
Dim I As Byte , Pnladdr As Byte , Msgstr As String * 4
Dim Fire1 As Bit , Fire2 As Bit , Fire3 As Bit , Fire4 As Bit , Fire5 As Bit , Fire6 As Bit
Dim Fault1 As Bit , Fault2 As Bit , Fault3 As Bit , Fault4 As Bit , Fault5 As Bit , Fault6 As Bit
Dim Firesil As Bit , Faultsil As Bit
Dim Sfault1 As Bit , Ofault1 As Bit , Sfault2 As Bit , Ofault2 As Bit
Dim Sfault3 As Bit , Ofault3 As Bit , Sfault4 As Bit , Ofault4 As Bit
Dim Sfault5 As Bit , Ofault5 As Bit , Sfault6 As Bit , Ofault6 As Bit
Dim Firesil1 As Bit , Firesil2 As Bit , Firesil3 As Bit , Firesil4 As Bit
Dim Firesil5 As Bit , Firesil6 As Bit
Dim Znstr As String * 2 , Temp As Byte
'***************************************************************************
'***************************************************************************
' System subroutine declarations
'***************************************************************************
'***************************************************************************
Declare Sub Fire_alarm()
Declare Sub Chck_port()
Declare Sub Z1()
Declare Sub Z2()
Declare Sub Z3()
Declare Sub Z4()
Declare Sub Z5()
Declare Sub Z6()
Declare Sub Disp()
Declare Sub Trsil()
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' All variable initilization
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pnladdr = 0
Fire1 = 1
Fire2 = 1
Fire3 = 1
Fire4 = 1
Fire5 = 1
Fire6 = 1
Fault1 = 1
Fault2 = 1
Fault3 = 1
Fault4 = 1
Fault5 = 1
Fault6 = 1
Firesil1 = 0
Firesil2 = 0
Firesil3 = 0
Firesil4 = 0
Firesil5 = 0
Firesil6 = 0
'***************************************************************************
'***************************************************************************
' System main program
'***************************************************************************
'***************************************************************************
Do
Call Chck_port
Loop
End
'***************************************************************************
'***************************************************************************
' System subroutines
'***************************************************************************
'***************************************************************************
'###########################################################################
' Zone 1 - 6 scanner
'###########################################################################
Sub Chck_port()
Call Z1
Waitms 200
Call Z2
Waitms 200
Call Z3
Waitms 200
Call Z4
Waitms 200
Call Z5
Waitms 200
Call Z6
Waitms 200
End Sub
'###########################################################################
' Alarm for Fire Z 1-6
'###########################################################################
Sub Fire_alarm()
For I = 1 To 3
Set Buz
Waitms 100
Reset Buz
Waitms 100
Next
End Sub
Sub Trsil()
Waitms 200
If Fire1 = 0 Or Fire2 = 0 Or Fire3 = 0 Or Fire3 = 0 Or Fire4 = 0 Or Fire5 = 0 Or Fire6 = 0 Then
Else
If Trsil = 0 Then
Reset Trsil
Reset Buz
Else
Set Buz
End If
End If
End Sub
'###########################################################################
' System LCD display routine
'###########################################################################
Sub Disp()
If Fire1 = 0 Or Fire2 = 0 Or Fire3 = 0 Or Fire3 = 0 Or Fire4 = 0 Or Fire5 = 0 Or Fire6 = 0 Then
Set Cfire
Else
Reset Cfire
Set Alsil
Firesil1 = 0
Firesil2 = 0
Firesil3 = 0
Firesil4 = 0
Firesil5 = 0
Firesil6 = 0
Reset H1
Reset H2
Reset H3
Reset H4
Reset H5
Reset H6
Reset Chootr
If Fault1 = 0 Or Fault2 = 0 Or Fault3 = 0 Or Fault4 = 0 Or Fault5 = 0 Or Fault6 = 0 Then
Set Cfault
Else
Reset Cfault
Set Trsil
Reset Buz
End If
End If
End Sub
'###########################################################################
' System check I/O & act
'###########################################################################
'***********************************************************************
' Zone-1 status monitor
'***********************************************************************
Sub Z1()
Errorno = 1
If F1 = 0 Then
If Alsil = 0 And Fire1 <> 0 Then
Set Alsil
End If
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "F" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Fire1 = 1 Then
If Alsil = 1 And Firesil1 = 0 Then
Fire1 = 0
Set H1
Set Chootr
Call Fire_alarm
End If
Else
If Alsil = 0 And Firesil1 = 0 Then
Reset Alsil
Reset H1
Reset Chootr
Firesil1 = 1
End If
If Firesil1 = 0 Then
Fire1 = 0
Set H1
Set Chootr
Call Fire_alarm
End If
End If
Else
Fire1 = 1
Firesil1 = 0
Reset H1
If S1 = 0 Then
If Trsil = 0 And Sfault1 <> 0 Then
Set Trsil
End If
Fault1 = 0
Sfault1 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "S" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Sfault1 = 0 Then
Call Trsil
End If
Else
Fault1 = 1
Sfault1 = 1
If O1 = 0 Then
If Trsil = 0 And Ofault1 <> 0 Then
Set Trsil
End If
Fault1 = 0
Ofault1 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "O" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Ofault1 = 0 Then
Call Trsil
End If
Call Disp
Else
Fault1 = 1
Ofault1 = 1
End If
End If
End If
Call Disp
End Sub
'***********************************************************************
' Zone-2 status monitor
'***********************************************************************
Sub Z2()
Errorno = 2
If F2 = 0 Then
If Alsil = 0 And Fire2 <> 0 Then
Set Alsil
End If
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "F" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Fire2 = 1 Then
If Alsil = 1 And Firesil2 = 0 Then
Fire2 = 0
Set H2
Set Chootr
Call Fire_alarm
End If
Else
If Alsil = 0 And Firesil2 = 0 Then
Reset Alsil
Reset H2
Reset Chootr
Firesil2 = 1
End If
If Firesil2 = 0 Then
Fire2 = 0
Set H2
Set Chootr
Call Fire_alarm
End If
End If
Else
Fire2 = 1
Firesil2 = 0
Reset H2
If S2 = 0 Then
If Trsil = 0 And Sfault2 <> 0 Then
Set Trsil
End If
Fault2 = 0
Sfault2 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "S" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Sfault2 = 0 Then
Call Trsil
End If
Else
Fault2 = 1
Sfault2 = 1
If O2 = 0 Then
If Trsil = 0 And Ofault2 <> 0 Then
Set Trsil
End If
Fault2 = 0
Ofault2 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "O" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Ofault2 = 0 Then
Call Trsil
End If
Else
Fault2 = 1
Ofault2 = 1
Call Disp
End If
End If
End If
Call Disp
End Sub
'***********************************************************************
' Zone-3 Alarm status monitor
'***********************************************************************
Sub Z3()
Errorno = 3
If F3 = 0 Then
If Alsil = 0 And Fire3 <> 0 Then
Set Alsil
End If
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "F" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Fire3 = 1 Then
If Alsil = 1 And Firesil3 = 0 Then
Fire3 = 0
Set H3
Set Chootr
Call Fire_alarm
End If
Else
If Alsil = 0 And Firesil3 = 0 Then
Reset Alsil
Reset H3
Reset Chootr
Firesil3 = 1
End If
If Firesil3 = 0 Then
Fire3 = 0
Set H3
Set Chootr
Call Fire_alarm
End If
End If
Else
Fire3 = 1
Firesil3 = 0
Reset H3
If S3 = 0 Then
If Trsil = 0 And Sfault3 <> 0 Then
Set Trsil
End If
Fault3 = 0
Sfault3 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "S" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Sfault3 = 0 Then
Call Trsil
End If
Else
Fault3 = 1
Sfault3 = 1
If O3 = 0 Then
If Trsil = 0 And Ofault3 <> 0 Then
Set Trsil
End If
Fault3 = 0
Ofault3 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "O" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Ofault3 = 0 Then
Call Trsil
End If
Else
Fault3 = 1
Ofault3 = 1
Call Disp
End If
End If
End If
Call Disp
End Sub
'***********************************************************************
' Zone-4 Alarm status monitor
'***********************************************************************
Sub Z4()
Errorno = 4
If F4 = 0 Then
If Alsil = 0 And Fire4 <> 0 Then
Set Alsil
End If
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "F" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Fire4 = 1 Then
If Alsil = 1 And Firesil4 = 0 Then
Fire4 = 0
Set H4
Set Chootr
Call Fire_alarm
End If
Else
If Alsil = 0 And Firesil4 = 0 Then
Reset Alsil
Reset H4
Reset Chootr
Firesil4 = 1
End If
If Firesil4 = 0 Then
Fire4 = 0
Set H4
Set Chootr
Call Fire_alarm
End If
End If
Else
Fire4 = 1
Firesil4 = 0
Reset H4
If S4 = 0 Then
If Trsil = 0 And Sfault4 <> 0 Then
Set Trsil
End If
Fault4 = 0
Sfault4 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "S" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Sfault4 = 0 Then
Call Trsil
End If
Else
Fault4 = 1
Sfault4 = 1
If O4 = 0 Then
If Trsil = 0 And Ofault4 <> 0 Then
Set Trsil
End If
Fault4 = 0
Ofault4 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "O" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Ofault4 = 0 Then
Call Trsil
End If
Else
Fault4 = 1
Ofault4 = 1
Call Disp
End If
End If
End If
Call Disp
End Sub
'***********************************************************************
' Zone-5 status monitor
'***********************************************************************
Sub Z5()
Errorno = 5
If F5 = 0 Then
If Alsil = 0 And Fire5 <> 0 Then
Set Alsil
End If
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "F" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Fire5 = 1 Then
If Alsil = 1 And Firesil5 = 0 Then
Fire5 = 0
Set H5
Set Chootr
Call Fire_alarm
End If
Else
If Alsil = 0 And Firesil5 = 0 Then
Reset Alsil
Reset H5
Reset Chootr
Firesil5 = 1
End If
If Firesil5 = 0 Then
Fire5 = 0
Set H5
Set Chootr
Call Fire_alarm
End If
End If
Else
Fire5 = 1
Firesil5 = 0
Reset H5
If S5 = 0 Then
If Trsil = 0 And Sfault5 <> 0 Then
Set Trsil
End If
Fault5 = 0
Sfault5 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "S" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Sfault5 = 0 Then
Call Trsil
End If
Else
Fault5 = 1
Sfault5 = 1
If O5 = 0 Then
If Trsil = 0 And Ofault5 <> 0 Then
Set Trsil
End If
Fault5 = 0
Ofault5 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "O" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Ofault5 = 0 Then
Call Trsil
End If
Call Disp
Else
Fault5 = 1
Ofault5 = 1
End If
End If
End If
Call Disp
End Sub
'***********************************************************************
' Zone-6 status monitor
'***********************************************************************
Sub Z6()
Errorno = 6
If F6 = 0 Then
If Alsil = 0 And Fire6 <> 0 Then
Set Alsil
End If
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "F" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Fire6 = 1 Then
If Alsil = 1 And Firesil6 = 0 Then
Fire6 = 0
Set H6
Set Chootr
Call Fire_alarm
End If
Else
If Alsil = 0 And Firesil6 = 0 Then
Reset Alsil
Reset H6
Reset Chootr
Firesil6 = 1
End If
If Firesil6 = 0 Then
Fire6 = 0
Set H6
Set Chootr
Call Fire_alarm
End If
End If
Else
Fire6 = 1
Firesil6 = 0
Reset H6
If S6 = 0 Then
If Trsil = 0 And Sfault6 <> 0 Then
Set Trsil
End If
Fault6 = 0
Sfault6 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "S" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Sfault6 = 0 Then
Call Trsil
End If
Else
Fault6 = 1
Sfault6 = 1
If O6 = 0 Then
If Trsil = 0 And Ofault6 <> 0 Then
Set Trsil
End If
Fault6 = 0
Ofault6 = 0
Temp = Errorno
Temp = Temp + Pnladdr
Znstr = "0" + Str(temp)
Msgstr = "O" + Str(pnladdr)
Msgstr = Msgstr + Znstr
Print Msgstr;
If Ofault6 = 0 Then
Call Trsil
End If
Call Disp
Else
Fault6 = 1
Ofault6 = 1
End If
End If
End If
Call Disp
End Sub
'Close #1
Last edited by a moderator: