کد:
'in code baraye perojeye Balabar dar tarikh 29 farvardin 95 neveshte shod
'poshtiban in peroje jaber ramzani
'Updated in : 96.6.16
'-----------------------------------------------------------
$regfile = "m64def.dat"
$crystal = 8000000
'>>>>>>>>>>>>>config lcd
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , _
Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Waitms 20
Initlcd
Cls
Cursor Off
Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31 ' replace [x] with number (0-7) 'in khate password hast
'________________________
Const Waitformovemotor = 200 'miliseconds
Const Timeehzarledblink = 10000 'count
'________________________
'>>>>>>>>>here is config intruupts
Enable Interrupts
Config Timer1 = Timer , Prescale = 64 'in timer baraye cheshmak zadane seven segment dar hangam find kardane tabaqat mibashad.
On Timer1 Timerr1
Stop Timer1
Config Timer2 = Timer , Prescale = 64 'in timer baraye lamp mibashad.
On Timer2 Timerr2
Stop Timer2
Config Timer0 = Timer , Prescale = 1024 'baraye cheshmak zadane led cpu
On Timer0 Blinkcpuledd
Stop Timer0
Config Timer3 = Timer , Prescale = 1024 'in timer baraye lamp mibashad.
'On Timer3 Timerr2
Stop Timer3
Config Watchdog = 2048
Start Watchdog
'***
Config Debounce = 10
'_______________________
'>>>>>const
Const Consttedadgam = 10 'kamtarin meqdar bayad 1 bashad. sefr mamno va baese khataye runtime khahad shod .
Const Constmaxcount = 1000 '5000 'baryae moshakhas kardane tedade hadaksare start az zarbe in do item (balaii va hamin) estefade mi****m ke balaii gam hast va in khat yani chandta az tedade balaii shemorde shavd .dar kol in nesbat hast.
Const Constdelaygam = 100 'kamtarin meqdar bayad yek bashad, sefr mamno va baese khataye runtime khahad shod .
Const Constmaxdelay = 20 '2000mili seconds 'miliseconds ,constdelaygam zarbdar in khat time koli mishavad.
Const Constmaxtimeoflamp = 100 'seconds
Const Consttimeparkgam = 1
Const Constmaxtimepark = 24 '120minuts 'in adad zarbdar adade khate qabl , tedad daqayeqe bargasht kabin be tabaqe morede nazar mibashad.
'Const Consttimetoclosedoor = 2 'miliseconds
'Const Constmagnetwaite = 0
'______________________________
'>>>>>>>>>>here is pin configer
Config Portb = Input
Ehzar0 Alias Pinb.0
Ehzar1 Alias Pinb.1
Ehzar2 Alias Pinb.2
Ehzar3 Alias Pinb.3
Reeder0 Alias Pinb.4 'reeder yani sensore tashkhise tabaqat
Reeder1 Alias Pinb.5
Reeder2 Alias Pinb.6
Reeder3 Alias Pinb.7
Config Pinf.2 = Input : Ehzar4 Alias Pinf.2
Config Pinf.3 = Input : Ehzar5 Alias Pinf.3
Config Pinf.4 = Input : Reeder4 Alias Pinf.4 ': Reeder4 = 1
Config Pinf.5 = Input : Reeder5 Alias Pinf.5 ': Reeder5 = 1
Config Pina.0 = Input : Kontact Alias Pina.0 : Kontact = 0
Config Pina.1 = Input : Qofl Alias Pina.1 : Qofl = 0
Config Pind.0 = Input : Seriimeni Alias Pind.0 : Seriimeni = 0
Config Pina.2 = Input : Stopkey Alias Pina.2 : Stopkey = 0
Config Pina.3 = Input : Revisionkey Alias Pina.3
Ddra.6 = 0 : Menu Alias Pina.6 : Menu = 1
Ddra.4 = 0 : Keyup Alias Pina.4 : Keyup = 1
Ddra.5 = 0 : Keydown Alias Pina.5 : Keydown = 1
Ddra.7 = 0 : Enter Alias Pina.7 : Enter = 1
Eled1 Alias Porta.6
Eled2 Alias Porta.4
Eled3 Alias Porta.5
Eled4 Alias Porta.7
Config Pinf.6 = Output : Eled5 Alias Portf.6 : Set Eled5
Config Pinf.7 = Output : Eled6 Alias Portf.7 : Set Eled6
Config Ping.4 = Output : Cpuled Alias Portg.4
Config Ping.3 = Output : Pinmusic Alias Portg.3
Config Ping.2 = Output : Pinbkl Alias Portg.2
'*****
Config Pind.6 = Output : Shirup Alias Portd.6
Config Pind.2 = Output : Motor Alias Portd.2
Config Pind.3 = Output : Shirdown Alias Portd.3
Config Pind.4 = Output : Lamp Alias Portd.4
Config Pind.5 = Output : Magnet Alias Portd.5
Config Pinf.0 = Output : S1 Alias Portf.0
Config Pinf.1 = Output : S2 Alias Portf.1
Config Pine.2 = Output : S3 Alias Porte.2 ' for seven segment
Config Pine.3 = Output : S4 Alias Porte.3
Config Pine.4 = Output : S5 Alias Porte.4
Config Pine.5 = Output : S6 Alias Porte.5
Config Pine.6 = Output : S7 Alias Porte.6
Config Pind.7 = Output : Ledup Alias Portd.7
Config Pine.7 = Output : Leddown Alias Porte.7
Config Pinc.6 = Output : Pindoor Alias Portc.6 'farman be baz ya baste shodane darb e otomat
Config Pinc.7 = Input : Sensdoor Alias Pinc.7 'kontact marbot be darb e otomat
Config Pind.1 = Input : Hotkontact Alias Pind.1
'_________________________
'>>>>>>>>>>here is function definition
Declare Sub Moveup
Declare Sub Movedown
Declare Sub Stopp
Declare Sub Breakpower
Declare Sub Chekfloor
Declare Sub Sensecanmove
Declare Sub Floor0
Declare Sub Floor1
Declare Sub Floor2
Declare Sub Floor3
Declare Sub Floor4
Declare Sub Floor5
Declare Sub Floor00
Declare Sub Floor11
Declare Sub Floor22
Declare Sub Floor33
Declare Sub Floor44
Declare Sub Floor55
Declare Sub Subfloorcount
Declare Sub Showlcd(byval Showevent As Byte )
Declare Sub Showsevensegment
Declare Sub Revision
Declare Sub Interruptstop
Declare Sub Rup
Declare Sub Rdown
Declare Sub Getlocation
Declare Sub Submenu
Declare Sub Subkeyup
Declare Sub Subkeydown
Declare Sub Subkeyenter
Declare Sub Subkeymenu
Declare Sub Subbreakpower
Declare Sub Setpassword
Declare Sub Subtimelightoff
Declare Sub Subtimegopark
Declare Sub Subparkfloor
Declare Sub Subpumpdelayoff
Declare Sub Subcountstart
Declare Sub Subchangepassword
Declare Sub Subdoortime
Declare Sub Subrevision
Declare Sub Presskeyfind
Declare Sub Autodoor
Declare Sub Subvalume
Declare Sub Subkabintime
Declare Sub Subtimeinverterstop
Declare Sub Subdectime
Declare Sub Subismagnet
'________________________
'>>>>>>>>>>>>>here is value difinition
Dim Flagup As Bit
Dim Flagdown As Bit
Dim Timestopupandmotor As Integer : Timestopupandmotor = 300
Dim Flagsensecanmove As Bit : Flagsensecanmove = 0
Dim Errorvalue As Byte : Errorvalue = 0
Dim Timercode As Byte : Timercode = 0
Dim Temp3 As Byte : Temp3 = 0
Dim Temp4 As Byte : Temp4 = 0
Dim Flagbreakpower As Bit : Flagbreakpower = 0
Dim I As Byte 'for sensecanmove function
Dim J As Byte
Dim Flagusedone As Bit : Flagusedone = 0 'baraye fahmidane inke yebar az sensecanmove estefade kardim
Dim Flaginterrupt As Bit : Flaginterrupt = 0
Dim Temp5 As Bit : Temp5 = 0 'baraye timer1
Dim Flagrevision As Bit : Flagrevision = 0
Dim Sarriz As Integer
Dim Seconds As Byte
Dim Timemovekabin As Integer
Dim Sarriz1 As Integer
Dim Seconds1 As Byte
Dim Minutes As Byte
Dim Roomlocation1 As Byte 'baraye tabdile adad az 100 be sefr
Dim Flagsubrevision As Bit
Dim Flagstop As Bit
Dim Flaggomainloop As Bit
Dim Flagfirston As Bit 'baraye fahmidane inke code az avalin khat shoro shode. ya hamon micro taze roshan shode.
Dim Roomlocation As Byte
Dim Flagsubbreakpower As Bit
Dim Pas1 As Integer
Dim Pas2 As Integer
Dim Pas3 As Byte
Dim Pas4 As Byte
Dim Password As Integer
Dim Flagkeyup As Bit
Dim Flagkeydown As Bit
Dim Flagkeyenter As Bit
Dim Flagkeymenu As Bit
Dim Flagenter As Bit
Dim Menuvalue As Byte : Menuvalue = 0
Dim Flagfalse As Bit : Flagfalse = 0 'in baraye tabe set password mibashad , ke chek mikone ke koja dokmeye back zade shode
Dim Zamaneharekat As Byte
Dim Tempblinkeled As Integer 'baraye cheshmak zadane ehzarha
Dim Blinkled As Byte
Dim Magnetwaitevalue As Integer
Dim Findshowsevensegment As Integer
Dim Flaghappendserriimeni As Bit
Dim Flaghelprevision As Bit 'baraye chek kardane inke aya dobare bad az rivison find konad ya na.
Dim Countdoortime As Integer
Dim Flagdoorclose As Bit : Flagdoorclose = 0
Dim Temptime As Integer
Dim Tempwaitdoorclose As Integer
Dim Freetemp As Integer
Dim Savefloor As Byte
Dim Gettedadfloor As Byte
Dim Flagmovekabin As Bit
Dim Setmovekabin As Integer
Dim Temptemp As Byte
Dim Temptemp2stopp As Integer
Dim Timeupsset As Integer
Dim Temptimeupsset As Integer
Dim Temptimeupssetgam As Integer
Dim Ismagnet As Byte
Dim Constmagnetwaite As Integer
'Dim Constmagnetwaitestop As Integer
Dim Dectime As Integer
Dim Flagsound As Bit
'_____________________________________________________________________________________________
'>>>>>>>>>>>>>>>here is setting value and function for apps work<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Dim Settimetogoparkingfloor1 As Byte : Settimetogoparkingfloor1 = 1 'minuts'
Dim Setgoparkingfloor1 As Byte : Setgoparkingfloor1 = 0
Dim Setcountstart1 As Integer : Setcountstart1 = 0 'baraye gereftane tedade shemordan az karbar
Dim Countstart As Integer : Countstart = 0 'baraye shemordan dar khode barname
Dim Password1 As Integer : Password1 = 0000
Dim Setvaluetimeoflamp As Byte : Setvaluetimeoflamp = 10 'seconds'
Dim Setvaluemotoroff As Integer : Setvaluemotoroff = 200 'miliseconds '
Dim Firsttimeon As Byte
Dim Tempgam As Integer
Dim Consttimewaitcloseautodoor As Byte
Dim Soundlevel As Byte
Dim Tedadfloor As Byte
Dim Etimetogoparkingfloor As Eram Byte
Dim Egoparkingfloor As Eram Byte
Dim Ecountstart As Eram Integer
Dim Esavecountstart As Eram Integer
Dim Epassword As Eram Integer
Dim Evaluetimeoflamp As Eram Byte
Dim Evaluemotoroff As Eram Integer
Dim Econsttimewaitcloseautodoor As Eram Byte
Dim Esoundlevel As Eram Byte
Dim Etedadfloor As Eram Byte
Dim Esetmovekabin As Eram Integer
Dim Etimeupsset As Eram Integer
Dim Eismagnet As Eram Byte
Dim Edectime As Eram Integer
'_____________________________________________________________________________________
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>here is get value for first time code<<<<<<<<<<<<<<<<<
Waitms 20
Settimetogoparkingfloor1 = Etimetogoparkingfloor
Waitms 15
Setgoparkingfloor1 = Egoparkingfloor
Waitms 15
Setcountstart1 = Ecountstart
Waitms 15
Password1 = Epassword
Waitms 15
Setvaluetimeoflamp = Evaluetimeoflamp
Waitms 15
Setvaluemotoroff = Evaluemotoroff
Waitms 15
Countstart = Esavecountstart
Waitms 15
Consttimewaitcloseautodoor = Econsttimewaitcloseautodoor
Waitms 15
Soundlevel = Esoundlevel
Waitms 15
Tedadfloor = Etedadfloor
Waitms 15
Setmovekabin = Esetmovekabin
Waitms 15
Timeupsset = Etimeupsset
Waitms 15
Ismagnet = Eismagnet
Waitms 15
Dectime = Edectime
Waitms 15
If Settimetogoparkingfloor1 > 200 Then
Etimetogoparkingfloor = 0
Waitms 15
Egoparkingfloor = 0
Waitms 15
Ecountstart = 0
Waitms 15
Epassword = 0000
Waitms 15
Evaluetimeoflamp = 15 'baraye inke dar halqe ba baz shodane serii emeni vared halqe binahayat nashe, meqdar pishfarz bar roye 1 arar gereft.
Waitms 15
Evaluemotoroff = 0
Waitms 15
Esavecountstart = 0
Waitms 15
Econsttimewaitcloseautodoor = 8
Waitms 15
Esoundlevel = 20
Waitms 15
Etedadfloor = 6
Waitms 15
Esetmovekabin = 20
Waitms 15
Etimeupsset = 10000
Waitms 15
Eismagnet = 1
Waitms 15
Edectime = 1000
Waitms 15
Call Submenu ' in khat baraye fahmidane inke dastgah baraye avalin bar roshan shode
Esavecountstart = 0 'bekhatere inke in moteqayer az dakhele teabe miad meqdar migire baraye save kardane dar moteqayere asli , va in moteqayer ye moteqayere shomareshi dar baname asli hast, va bayad sefr shavad.
Waitms 15
End If
'_______
Dim A As Integer
A = 0
Do
Reset Watchdog
If A = 1 Then
Set Pinmusic
Locate 1 , 1
Lcd "loading."
Locate 2 , 1
Lcd "Romak Shomal"
Elseif A = 150 Then
Locate 1 , 1
Lcd "loading.."
Elseif A = 300 Then
Locate 1 , 1
Lcd "loading..."
Printbin 126 ; 100 ; 6 ; 6 ; 0 ; 0 ; Soundlevel ; 239
Waitms 100
Printbin 126 ; 255 ; 6 ; 3 ; 0 ; 0 ; 15 ; 239
Elseif A = 450 Then
Locate 1 , 1
Lcd "loading...."
Elseif A = 600 Then
Locate 1 , 1
Lcd "loading....."
Elseif A = 750 Then
Locate 1 , 1
Lcd "loading......"
Elseif A = 900 Then
Locate 1 , 1
Lcd "loading......."
End If
Debounce Menu , 0 , Submenu , Sub
If A = 1 Then
Locate 1 , 1
Lcd "loading."
Locate 2 , 1
Lcd "Romak Shomal"
End If
Reset Watchdog
Start Watchdog
Incr A
Waitms 7
Loop Until A = 1000
If Ismagnet = 0 Then
Constmagnetwaite = 0 'bara tanzime magnet va adad bara roshan shodane df player
Dectime = 0
Else
Constmagnetwaite = 1500
Dectime = 1000 'baraye inke ma to hidrolik inverter nadarim
End If
'_____________________________________________________________________________________
'>>>>>>>>>>>>here is main code
''For Temptime = 0 To 2000
'Reset Watchdog
' Waitms 2
' Next
' Printbin 126 ; 255 ; 4 ; 14 ; 0 ; 239
Call Breakpower
Do
Flagmovekabin = 0
Reset Watchdog
Waitms 30
Initlcd 'halaqe asli barname
Cls
Cursor Off
If Flaghelprevision = 1 Then
Flaghelprevision = 0
Call Breakpower 'ba qat o vasl barq , in tabe kabin ra be nazdiktarin tabqe ro be paiin miresand , va baraye shenasaii tavasote tablo be kar miravad
End If
If Setcountstart1 <> 0 And Setcountstart1 = Countstart Then
Do
Reset Watchdog 'deqat shavad revision amal nemikonad ba qeyre fa'al shodane bord
Lcd "system disable"
Waitms 500
Cls
Waitms 200
Loop
End If
Flagup = 0
Flagdown = 0
Call Getlocation
If Roomlocation = 100 Then
Roomlocation1 = 0 'baraye tabdile 100 be sefr
Else
Roomlocation1 = Roomlocation
End If
Call Showsevensegment
Cls
Lcd "you are floor:" ; Roomlocation1
Lowerline
Lcd "Hydraulic JH.3"
If Roomlocation1 <> Setgoparkingfloor1 And Settimetogoparkingfloor1 <> 0 Then
Enable Timer2
Start Timer2
Elseif Lamp = 1 Then
Enable Timer2
Start Timer2
End If
If Savefloor <> 1 And Savefloor <> 2 And Savefloor <> 3 And Savefloor <> 4 And Savefloor <> 5 And Savefloor <> 6 Then
Enable Timer0
Start Timer0
Set Eled1
Set Eled2
Set Eled3
Set Eled4
Set Eled5
Set Eled6
Ddra.6 = 0
Ddra.4 = 0
Ddra.5 = 0
Ddra.7 = 0
End If
Reset Motor
Reset Shirdown 'baryae imeni va motmaen shodn hatman qat shode
Reset Shirup
Reset Magnet
Stop Timer3
Disable Timer3
Timer3 = 0
Do
Flagmovekabin = 0
Reset Motor
Reset Shirdown 'baryae imeni va motmaen shodn hatman qat shode
Reset Shirup
Reset Magnet
If Reeder0 = 0 Or Reeder1 = 0 Or Reeder2 = 0 Or Reeder3 = 0 Or Reeder4 = 0 Or Reeder5 = 0 Then 'harvaqat robero levele tabaqat istad , darb baz mishavad.dar qeyre in sorat vaqti ke serii emeni ya harchi dg faal shod darb baz nemishavad.
Reset Pindoor
End If
'in halqeye check kardane ehazar hast.
Reset Watchdog
If Seconds = Setvaluetimeoflamp Then 'in qesmat baraye time andakhtan lamp estafade mishavad ta khamosh shavad.
Reset Lamp
Reset Pinmusic
Seconds = 0
If Settimetogoparkingfloor1 = 0 Then 'baraye khamosh kardane timer2 zamani ke timegoparking = 0 hast
Disable Timer2
Stop Timer2
End If
End If
If Settimetogoparkingfloor1 <> 0 And Roomlocation1 = Setgoparkingfloor1 And Lamp = 0 Then
Disable Timer2
Stop Timer2
Seconds1 = 0
Minutes = 0
End If
If Settimetogoparkingfloor1 <> 0 And Roomlocation1 <> Setgoparkingfloor1 Then
If Minutes = Settimetogoparkingfloor1 Then
Minutes = 0
If Setgoparkingfloor1 = 0 Then
Disable Timer2
Stop Timer2
Call Floor0
Elseif Setgoparkingfloor1 = 1 Then
Disable Timer2
Stop Timer2
Call Floor1
Elseif Setgoparkingfloor1 = 2 Then
Disable Timer2
Stop Timer2
Call Floor2
Elseif Setgoparkingfloor1 = 3 Then
Disable Timer2
Stop Timer2
Call Floor3
Elseif Setgoparkingfloor1 = 4 Then
Disable Timer2
Stop Timer2
Call Floor4
Elseif Setgoparkingfloor1 = 5 Then
Disable Timer2
Stop Timer2
Call Floor5
End If
End If
End If
Debounce Revisionkey , 1 , Revision , Sub
If Seriimeni = 0 And Kontact = 0 And Sensdoor = 0 Then
Stop Timer1
Disable Timer1
Call Showsevensegment
If Savefloor = 1 Or Savefloor = 2 Or Savefloor = 3 Or Savefloor = 4 Or Savefloor = 5 Or Savefloor = 6 Then
If Savefloor = 1 Then
Savefloor = 0
Call Floor0
Elseif Savefloor = 2 Then
Savefloor = 0
Call Floor1
Elseif Savefloor = 3 Then
Savefloor = 0
Call Floor2
Elseif Savefloor = 4 Then
Savefloor = 0
Call Floor3
Elseif Savefloor = 5 Then
Savefloor = 0
Call Floor4
Elseif Savefloor = 6 Then
Savefloor = 0
Call Floor5
End If
End If
Debounce Ehzar0 , 0 , Floor0 , Sub
Debounce Ehzar1 , 0 , Floor1 , Sub
Debounce Ehzar2 , 0 , Floor2 , Sub
Debounce Ehzar3 , 0 , Floor3 , Sub
Debounce Ehzar4 , 0 , Floor4 , Sub
Debounce Ehzar5 , 0 , Floor5 , Sub
Else
If Kontact = 1 Or Sensdoor = 1 Then
Debounce Ehzar0 , 0 , Floor00 , Sub
Debounce Ehzar1 , 0 , Floor11 , Sub
Debounce Ehzar2 , 0 , Floor22 , Sub
Debounce Ehzar3 , 0 , Floor33 , Sub
Debounce Ehzar4 , 0 , Floor44 , Sub
Debounce Ehzar5 , 0 , Floor55 , Sub
End If
End If
If Seconds = 14 Then
Savefloor = 0
Ddra.6 = 1
Set Eled1 'vaqti ke serri emeni baz hast va ehar zade shod , hafeze mimanad va bad az gozashte in zaman age dar baste nashod , hafeze az beyn miravad.
Ddra.4 = 1
Set Eled2
Ddra.5 = 1
Set Eled3
Ddra.7 = 1
Set Eled4
Set Eled5
Set Eled6
Ddra.6 = 0
Ddra.4 = 0
Ddra.5 = 0
Ddra.7 = 0
End If
If Flagrevision = 1 Then
Flagrevision = 0
Exit Do
End If
If Lamp = 0 Then
If Seriimeni = 1 Or Kontact = 1 Or Sensdoor = 1 Then
Seconds = 0
Seconds1 = 0
Minutes = 0
Set Lamp
Set Pinmusic
Exit Do
End If
End If
If Seriimeni = 1 Or Kontact = 1 Then
Enable Timer1
Start Timer1
Elseif Seriimeni = 0 And Kontact = 0 Then
Stop Timer1
Disable Timer1
Call Showsevensegment
End If
If Hotkontact = 1 Then
Flaggomainloop = 1
Cls
Lcd "Motor is hot"
Reset S1
Set S2
Set S3
Reset S4
Set S5
Set S6
Set S7
Do
Reset Watchdog
If Hotkontact = 0 Then
Exit Do
End If
Loop
End If
If Flaggomainloop = 1 Then 'In Halqeye Check Kardane Ehazar Va Rivision Hast.
Flaggomainloop = 0
Exit Do
End If
Loop
Loop 'halaqe asli barname
End 'end program
'_____________________________