Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '*************************************************
- ' FORDULATSZÁM KÉSZ
- '
- '
- '
- '
- '*************************************************
- $regfile = "m8def.dat"
- $crystal = 8000000
- 'Config Portd = Output
- Dim I As Integer
- Dim B As Integer
- Dim Z As Integer ' -32768 - 32767
- Dim K As Byte ' 0 - 255
- Dim W As Word ' 0 - 65535
- Dim Temp As Byte
- Dim Gear As Byte
- Dim Kepernyo As Byte ' 0 - 255
- Dim Seb As Word
- Dim Ford As Word
- Dim Feszadc As Integer
- Dim Olajadc As Integer
- Dim Volt As Single
- Dim Formvolt As String * 5
- Dim Olajfok As String * 5
- Dim Gomb As Byte
- Dim Valtas As Bit
- Dim Voltanim As Byte
- ' SEBESSÉG FORDULAT SZÁMOLÁSÁHOZ
- Dim Fordulatjelek As Word
- 'Dim Hertz As Single
- Dim Sebesseg As Word
- Dim Fordulat As Word
- 'Dim As Byte
- Dim Idoalap As Integer
- Dim Jelenlegiido As Integer
- ' ÁLLANDÓ VÁLTOZÓK DEFINIÁLÁSA
- Const Max_kep = 3
- Const Min_kep = 1
- Const Pearlido = 150
- ' 5-öshöz
- Deflcdchar 0 , 31 , 31 , 31 , 32 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)
- Deflcdchar 1 , 31 , 31 , 31 , 28 , 28 , 28 , 28 , 28 ' replace ? with number (0-7)
- Deflcdchar 2 , 31 , 31 , 31 , 7 , 7 , 7 , 7 , 7 ' replace ? with number (0-7)
- ' 4-eshez
- Deflcdchar 3 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 ' replace ? with number (0-7)
- Deflcdchar 4 , 28 , 28 , 28 , 28 , 28 , 28 , 28 , 28 ' replace ? with number (0-7)
- Deflcdchar 5 , 7 , 7 , 7 , 32 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)
- ' Sebesség, Fordulat
- 'Deflcdchar 6 , 24 , 24 , 24 , 24 , 24 , 24 , 24 , 24 ' Felig
- Deflcdchar 6 , 28 , 28 , 28 , 28 , 28 , 28 , 28 , 28 ' replace ? with number (0-7)
- Deflcdchar 7 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30 ' Haromnegyed
- ' LCD BEÁLLÍTÁSA A PORTOKRA
- Config Lcd = 20 * 4
- Config Lcdpin = Pin , Rs = Pind.7 , E = Pind.6 , Db4 = Pinb.7 , Db5 = Pinb.6 , Db6 = Pind.4 , Db7 = Pinb.5
- ' TIMER1 BEÁLLÍTÁSA AZ IDŐALAPHOZ HOGY FREKVENCIÁT TUDJAK MÉRNI!
- Config Timer1 = Counter , Edge = Rising , Prescale = 1024
- Config Timer0 = Timer , Prescale = 1024
- ' ADC BEÁLLÍTÁSA 3.56V a referencia fesz.. Ez 1023
- Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADC
- Start Adc
- ' ÁLNEVEK HASZNÁLATA A KÖNNYEBB ÁTLÁTHATÓSÁGÉRT
- Fel Alias Pinb.0
- Menu Alias Pinb.1
- Le Alias Pinb.2
- Megszakitas Alias Pind.2
- ' GOMBOK ÉS MEGSZAKÍTÁSOK BEÁLLÍTÁSA (KI-BEMENETEK)
- Config Fel = Input
- Config Menu = Input
- Config Le = Input
- Config Megszakitas = Input
- Config Int1 = Falling
- Config Int0 = Falling
- Config Pind.3 = Input
- ' INT0 lábra érkező megszakításkor melyik részegység fusson le
- On Int0 Megszakit1
- ' SEBESSÉG ÉS FORDULAT SZÁMOLÁSHOZ HASZNÁLT MEGSZAKÍTÁSOK
- On Ovf0 Frekszamolas
- On Int1 Megszakit_sebesseg
- ' TIMEREK ELINDÍTÁSA A SZÁMLÁLÁSHOZ
- Enable Timer1
- Enable Timer0
- ' TIMER0 elindítása az időalap képzéshez
- Start Timer0
- ' MAGAS ÉS ALACSONY SZINTEK BEÁLLÍTÁSA A LÁBAKON
- Portb.0 = 1
- Portb.1 = 1
- Portb.2 = 1
- Portd.2 = 1
- Portd.3 = 1
- ' MEGSZAKÍTÁSOK ENGEDÉLYEZÉSE
- Enable Interrupts
- ' INT0 engedélyezése a gombokhoz
- 'Enable Int0
- Enable Int1
- Cls
- Cursor Off
- Kepernyo = 2
- ' 1 = INFO KÉPERNYŐ
- ' 2 = SEBESSÉG + FORDULAT
- ' 3 = DIAGNOSZTIKA
- Voltanim = 0
- Gear = 6
- Seb = 120
- 'Ford = 14000
- Gomb = 0
- Olajadc = 140
- ' 4x-r több időnként vegyen jelet mint ahogy a timer lejár! (Timer idejét szorozza 4el)
- 'Idoalap = 8
- Idoalap = 16
- Jelenlegiido = 0
- 'Gosub Udvozles
- Do
- If Kepernyo = 1 Then Gosub Infokepernyo
- If Kepernyo = 2 Then Gosub Seb_kepernyo
- If Kepernyo = 3 Then Gosub Diagnosztika
- Loop
- End
- ' ********************************************
- ' Gombok állapotának lekérdezése
- ' ********************************************
- Megszakit1:
- If Fel = 0 Then
- Incr Kepernyo
- Valtas = 1
- End If
- If Le = 0 Then
- Decr Kepernyo
- Valtas = 1
- End If
- Waitms 100
- If Kepernyo > Max_kep Then Kepernyo = Min_kep
- If Kepernyo < Min_kep Then Kepernyo = Max_kep
- Waitms Pearlido
- Return
- ' ********************************************
- ' SEBESSÉG BAROS
- ' ********************************************
- Barok:
- Gosub Meresek
- Locate 2 , 1
- Lcd " "
- Locate 2 , 1
- For I = 0 To 14
- Lcd Chr(255)
- Next
- 'Lcd Chr(6) 1/3-ad
- Locate 4 , 1
- Lcd " "
- 'Fordulat = 14500
- I = Fordulat \ 1000
- Locate 4 , 1
- If I > 0 Then
- For B = 1 To I
- Lcd Chr(255)
- Fordulat = Fordulat - 1000
- Next B
- End If
- If Fordulat = 500 Then Lcd Chr(6)
- Waitms 100
- Return
- ' ********************************************
- ' INFORMÁCIÓS KÉPERNYŐ
- ' ********************************************
- Infokepernyo:
- Gosub Meresek
- If Valtas = 1 Then
- Cls
- Valtas = 0
- End If
- Locate 1 , 1
- Lcd "AKKU:"
- Locate 2 , 1
- Lcd "OLAJ:"
- Locate 2 , 6
- Lcd Olajfok
- Locate 3 , 1
- Lcd "KINT: "
- Locate 1 , 6
- Lcd Formvolt
- Locate 3 , 7
- Lcd W
- Lcd Chr(223)
- Lcd "C"
- Lcd " "
- Gosub Gear_sub
- Return
- ' ********************************************
- ' SEBESSÉG - FORDULATSZÁM és SEBESSÉGI FOKOZAT
- ' ********************************************
- Seb_kepernyo:
- If Valtas = 1 Then
- Cls
- Valtas = 0
- End If
- Locate 1 , 1
- Lcd "SEB:"
- Locate 1 , 11
- Lcd "Km/h"
- Locate 3 , 1
- Lcd "FOR:"
- Locate 3 , 12
- Lcd "RPM"
- Locate 3 , 6
- Lcd " "
- Locate 1 , 6
- 'Lcd Sebesseg
- Locate 3 , 6
- Lcd Fordulat
- Gosub Gear_sub
- Gosub Barok
- Locate 2 , 1
- 'Lcd Idoalapszorzo
- Locate 4 , 1
- 'Lcd Timer0
- ' Waitms 500
- Return
- ' ********************************************
- ' ANALÓG MÉRÉSEK
- ' ********************************************
- Meresek:
- W = Getadc(0)
- W = W * 4.8
- W = W / 11.041 ' Hőmérséklet
- Feszadc = Getadc(1)
- Volt = Feszadc / 51.15
- Incr Voltanim
- If Volt < 9 Then
- Select Case Voltanim
- Case 1 : Formvolt = " <"
- Case 2 : Formvolt = " <<"
- Case 3 : Formvolt = " <<<"
- Case 4 : Formvolt = " <<<<"
- Case 5 : Formvolt = "<<<<<"
- Case 6 : Formvolt = " "
- End Select
- End If
- If Volt > 13 Then
- Select Case Voltanim
- Case 1 : Formvolt = "> "
- Case 2 : Formvolt = ">> "
- Case 3 : Formvolt = ">>> "
- Case 4 : Formvolt = ">>>> "
- Case 5 : Formvolt = ">>>>>"
- Case 6 : Formvolt = " "
- End Select
- End If
- If Volt > 9 And Volt < 13 Then Formvolt = " " + Fusing(volt , "##.#") + "V"
- If Olajadc < 10 Then Olajfok = "HIBA"
- If Olajadc > 130 Then
- Select Case Voltanim
- Case 1 : Olajfok = "> "
- Case 2 : Olajfok = ">> "
- Case 3 : Olajfok = ">>> "
- Case 4 : Olajfok = ">>>> "
- Case 5 : Olajfok = ">>>>>"
- Case 6 : Olajfok = " "
- End Select
- End If
- If Olajadc > 10 And Olajadc < 130 Then Olajfok = " " + Str(olajadc) + " C"
- If Voltanim = 6 Then Voltanim = 0
- Waitms 50
- ' Olajadc = Getadc(2)
- ' Olaj = Olajadc / 51.15
- ' If Volt < 9 Then Formvolt = ""
- ' If Volt > 13 Then Formvolt = ">>>>"
- ' If Volt > 9 And Volt < 13 Then Formvolt = Fusing(volt , "#.#") + "V"
- Return
- ' ********************************************
- ' SEBESSÉGI FOKOZAT KIJELZÉS
- ' ********************************************
- Gear_sub:
- Locate 1 , 17
- Lcd "GEAR"
- Select Case Gear
- Case 6:
- Locate 2 , 18
- Lcd Chr(1)
- Lcd Chr(0)
- Locate 3 , 18
- Lcd Chr(1)
- Lcd Chr(2)
- Locate 4 , 18
- Lcd Chr(0)
- Lcd Chr(0)
- Case 5:
- Locate 2 , 18
- Lcd Chr(1)
- Lcd Chr(0)
- Locate 3 , 18
- Lcd Chr(0)
- Lcd Chr(2)
- Locate 4 , 18
- Lcd Chr(0)
- Lcd Chr(0)
- Case 4:
- Locate 2 , 18
- Lcd Chr(4)
- Lcd Chr(3)
- Locate 3 , 18
- Lcd Chr(0)
- Lcd Chr(2)
- Locate 4 , 18
- Lcd " "
- Lcd Chr(5)
- Case 3:
- Locate 2 , 18
- Lcd Chr(0)
- Lcd Chr(2)
- Locate 3 , 18
- Lcd Chr(0)
- Lcd Chr(2)
- Locate 4 , 18
- Lcd Chr(0)
- Lcd Chr(0)
- Case 2:
- Locate 2 , 18
- Lcd Chr(0)
- Lcd Chr(2)
- Locate 3 , 18
- Lcd Chr(1)
- Lcd Chr(0)
- Locate 4 , 18
- Lcd Chr(0)
- Lcd Chr(0)
- Case 1:
- Locate 2 , 18
- Lcd Chr(5)
- Lcd Chr(4)
- Locate 3 , 18
- Lcd " "
- Lcd Chr(4)
- Locate 4 , 18
- Lcd Chr(5)
- Lcd Chr(0)
- Case 0:
- Locate 2 , 18
- Lcd " "
- Locate 3 , 18
- Lcd Chr(0)
- Lcd Chr(0)
- Locate 4 , 18
- Lcd " "
- End Select
- Return
- Udvozles:
- Locate 1 , 1
- Lcd " Y A M A H A"
- Locate 2 , 1
- Lcd " FZS 600"
- Locate 3 , 1
- Lcd " Kertesz Attila"
- Locate 4 , 1
- Lcd " 2011"
- Waitms 1000
- Locate 3 , 1
- Lcd " "
- Locate 4 , 1
- Lcd " "
- Waitms 500
- Locate 3 , 1
- Lcd " Kertesz Attila"
- Locate 4 , 1
- Lcd " 2011"
- Waitms 1000
- Gosub Lcdcls
- Cls
- Return
- Lcdcls:
- Locate 1 , 1
- Lcd " "
- Locate 3 , 20
- Lcd " "
- Locate 4 , 20
- Lcd " "
- For I = 2 To 20
- Waitms 50
- B = 21 - I
- Locate 1 , I
- Lcd " "
- Locate 3 , B
- Lcd " "
- K = I - 1
- Z = 21 - K
- Locate 2 , K
- Lcd " "
- Locate 4 , Z
- Lcd " "
- Next
- Locate 2 , 20
- Lcd " "
- Return
- ' ********************************************
- ' EGY IDŐALAP ALATT BEÉRKEZETT SEBESSÉG CSÚCSOK SZÁMOLÁSA
- ' ********************************************
- Megszakit_sebesseg:
- Incr Fordulatjelek
- Return
- ' ********************************************
- ' IDŐALAP LETELTE UTÁN VÁLTOZTATJA A SEBESSÉG FORDULAT ÉRTÉKEKET
- ' ********************************************
- Frekszamolas:
- If Idoalap = Jelenlegiido Then
- ' Hertz = 262144 / Counter1
- ' Frekvencia kiszámolása: 1 / Periódusidő
- ' Hertz = 1 / Hertz
- ' uSec és Sec között 1000000 a váltószám
- 'Fordulat = Hertz * 1000000
- Sebesseg = Counter1
- ' Hertz = 262144 / Sebjelek
- ' Hertz = 1 / Hertz
- ' Sebesseg = Hertz * 1000000
- Fordulat = Fordulatjelek * 250
- Fordulat = Fordulat - 500
- If Fordulat > 20000 Then Fordulat = 0
- ' If Fordulat <= 223 Then Fordulat = 1000
- ' If Fordulat <= 263 Then Fordulat = 1500
- ' If Fordulat <= 343 Then Fordulat = 2000
- ' If Fordulat <= 413 Then Fordulat = 2500
- ' If Fordulat <= 493 Then Fordulat = 3000
- ' If Fordulat <= 573 Then Fordulat = 3500
- ' If Fordulat <= 653 Then Fordulat = 4000
- ' If Fordulat <= 733 Then Fordulat = 4500
- ' If Fordulat <= 893 Then Fordulat = 5000
- ' If Fordulat <= 973 Then Fordulat = 5500
- ' If Fordulat <= 1053 Then Fordulat = 6000
- ' If Fordulat <= 1133 Then Fordulat = 6500
- ' If Fordulat <= 1213 Then Fordulat = 7000
- ' If Fordulat <= 1293 Then Fordulat = 7500
- ' If Fordulat <= 1373 Then Fordulat = 8000
- ' If Fordulat <= 1453 Then Fordulat = 8500
- ' If Fordulat <= 1533 Then Fordulat = 9000
- ' If Fordulat <= 1613 Then Fordulat = 9500
- ' If Fordulat <= 1693 Then Fordulat = 10000
- ' If Fordulat <= 1773 Then Fordulat = 10500
- ' If Fordulat <= 1853 Then Fordulat = 11000
- ' If Fordulat <= 1933 Then Fordulat = 11500
- ' If Fordulat <= 2013 Then Fordulat = 12000
- ' If Fordulat <= 2093 Then Fordulat = 12500
- ' If Fordulat <= 2173 Then Fordulat = 13000
- ' If Fordulat <= 2253 Then Fordulat = 13500
- ' If Fordulat <= 2333 Then Fordulat = 14000
- ' If Fordulat <= 2413 Then Fordulat = 14500
- ' If Fordulat <= 2493 Then Fordulat = 15000
- Jelenlegiido = 0
- ' Mentett = Sebjelek
- Counter1 = 0
- Fordulatjelek = 0
- Else
- Incr Jelenlegiido
- End If
- ' Bejottjelek = Timer1
- Return
- Diagnosztika:
- Locate 1 , 1
- Lcd " "
- Locate 1 , 1
- Lcd Fordulat
- Locate 2 , 1
- Lcd " "
- Locate 2 , 1
- Lcd Sebesseg
- ' Locate 2 , 1
- ' Lcd Timer0
- Waitms 100
- Return
Advertisement
Add Comment
Please, Sign In to add comment