Guest User

Untitled

a guest
Jul 12th, 2011
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. '*************************************************
  2. ' FORDULATSZÁM KÉSZ
  3. '
  4. '
  5. '
  6. '
  7. '*************************************************
  8. $regfile = "m8def.dat"
  9. $crystal = 8000000
  10. 'Config Portd = Output
  11.  
  12. Dim I As Integer
  13. Dim B As Integer
  14. Dim Z As Integer                                            ' -32768 - 32767
  15. Dim K As Byte                                               ' 0 - 255
  16. Dim W As Word                                               ' 0 - 65535
  17. Dim Temp As Byte
  18. Dim Gear As Byte
  19. Dim Kepernyo As Byte                                        ' 0 - 255
  20. Dim Seb As Word
  21. Dim Ford As Word
  22. Dim Feszadc As Integer
  23. Dim Olajadc As Integer
  24. Dim Volt As Single
  25. Dim Formvolt As String * 5
  26. Dim Olajfok As String * 5
  27. Dim Gomb As Byte
  28. Dim Valtas As Bit
  29. Dim Voltanim As Byte
  30.  
  31. ' SEBESSÉG FORDULAT SZÁMOLÁSÁHOZ
  32. Dim Fordulatjelek As Word
  33. 'Dim Hertz As Single
  34. Dim Sebesseg As Word
  35. Dim Fordulat As Word
  36. 'Dim As Byte
  37. Dim Idoalap As Integer
  38. Dim Jelenlegiido As Integer
  39.  
  40.  
  41. ' ÁLLANDÓ VÁLTOZÓK DEFINIÁLÁSA
  42. Const Max_kep = 3
  43. Const Min_kep = 1
  44. Const Pearlido = 150
  45.  
  46.  
  47.  
  48.    ' 5-öshöz
  49.    Deflcdchar 0 , 31 , 31 , 31 , 32 , 32 , 32 , 32 , 32     ' replace ? with number (0-7)
  50.    Deflcdchar 1 , 31 , 31 , 31 , 28 , 28 , 28 , 28 , 28     ' replace ? with number (0-7)
  51.    Deflcdchar 2 , 31 , 31 , 31 , 7 , 7 , 7 , 7 , 7          ' replace ? with number (0-7)
  52.  
  53.    ' 4-eshez
  54.    Deflcdchar 3 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7             ' replace ? with number (0-7)
  55.    Deflcdchar 4 , 28 , 28 , 28 , 28 , 28 , 28 , 28 , 28     ' replace ? with number (0-7)
  56.    Deflcdchar 5 , 7 , 7 , 7 , 32 , 32 , 32 , 32 , 32        ' replace ? with number (0-7)
  57.    ' Sebesség, Fordulat
  58.    'Deflcdchar 6 , 24 , 24 , 24 , 24 , 24 , 24 , 24 , 24     ' Felig
  59.    Deflcdchar 6 , 28 , 28 , 28 , 28 , 28 , 28 , 28 , 28     ' replace ? with number (0-7)
  60.    Deflcdchar 7 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30     ' Haromnegyed
  61.  
  62.  
  63.  
  64.  
  65. ' LCD BEÁLLÍTÁSA A PORTOKRA
  66. Config Lcd = 20 * 4
  67. Config Lcdpin = Pin , Rs = Pind.7 , E = Pind.6 , Db4 = Pinb.7 , Db5 = Pinb.6 , Db6 = Pind.4 , Db7 = Pinb.5
  68.  
  69. ' TIMER1 BEÁLLÍTÁSA AZ IDŐALAPHOZ HOGY FREKVENCIÁT TUDJAK MÉRNI!
  70. Config Timer1 = Counter , Edge = Rising , Prescale = 1024
  71. Config Timer0 = Timer , Prescale = 1024
  72.  
  73.  
  74.  
  75.  
  76. ' ADC BEÁLLÍTÁSA 3.56V a referencia fesz.. Ez 1023
  77. Config Adc = Single , Prescaler = Auto , Reference = Avcc   'config ADC
  78. Start Adc
  79.  
  80. ' ÁLNEVEK HASZNÁLATA A KÖNNYEBB ÁTLÁTHATÓSÁGÉRT
  81. Fel Alias Pinb.0
  82. Menu Alias Pinb.1
  83. Le Alias Pinb.2
  84. Megszakitas Alias Pind.2
  85.  
  86. ' GOMBOK ÉS MEGSZAKÍTÁSOK BEÁLLÍTÁSA (KI-BEMENETEK)
  87. Config Fel = Input
  88. Config Menu = Input
  89. Config Le = Input
  90. Config Megszakitas = Input
  91. Config Int1 = Falling
  92. Config Int0 = Falling
  93. Config Pind.3 = Input
  94.  
  95. ' INT0 lábra érkező megszakításkor melyik részegység fusson le
  96. On Int0 Megszakit1
  97.  
  98. ' SEBESSÉG ÉS FORDULAT SZÁMOLÁSHOZ HASZNÁLT MEGSZAKÍTÁSOK
  99. On Ovf0 Frekszamolas
  100. On Int1 Megszakit_sebesseg
  101.  
  102. ' TIMEREK ELINDÍTÁSA A SZÁMLÁLÁSHOZ
  103. Enable Timer1
  104. Enable Timer0
  105.  
  106. ' TIMER0 elindítása az időalap képzéshez
  107. Start Timer0
  108.  
  109.  
  110.  
  111. ' MAGAS ÉS ALACSONY SZINTEK BEÁLLÍTÁSA A LÁBAKON
  112. Portb.0 = 1
  113. Portb.1 = 1
  114. Portb.2 = 1
  115. Portd.2 = 1
  116. Portd.3 = 1
  117.  
  118. ' MEGSZAKÍTÁSOK ENGEDÉLYEZÉSE
  119. Enable Interrupts
  120.  
  121. ' INT0 engedélyezése a gombokhoz
  122. 'Enable Int0
  123. Enable Int1
  124.  
  125. Cls
  126. Cursor Off
  127.  
  128. Kepernyo = 2
  129.  
  130. ' 1 = INFO KÉPERNYŐ
  131. ' 2 = SEBESSÉG + FORDULAT
  132. ' 3 = DIAGNOSZTIKA
  133.  
  134. Voltanim = 0
  135. Gear = 6
  136. Seb = 120
  137. 'Ford = 14000
  138. Gomb = 0
  139. Olajadc = 140
  140. ' 4x-r több időnként vegyen jelet mint ahogy a timer lejár! (Timer idejét szorozza 4el)
  141. 'Idoalap = 8
  142. Idoalap = 16
  143. Jelenlegiido = 0
  144. 'Gosub Udvozles
  145.  
  146.  
  147. Do
  148.       If Kepernyo = 1 Then Gosub Infokepernyo
  149.       If Kepernyo = 2 Then Gosub Seb_kepernyo
  150.       If Kepernyo = 3 Then Gosub Diagnosztika
  151. Loop
  152. End
  153.  
  154.  
  155.  
  156. ' ********************************************
  157. ' Gombok állapotának lekérdezése
  158. ' ********************************************
  159. Megszakit1:
  160.    If Fel = 0 Then
  161.       Incr Kepernyo
  162.       Valtas = 1
  163.    End If
  164.    If Le = 0 Then
  165.       Decr Kepernyo
  166.       Valtas = 1
  167.    End If
  168.    Waitms 100
  169.  
  170.    If Kepernyo > Max_kep Then Kepernyo = Min_kep
  171.    If Kepernyo < Min_kep Then Kepernyo = Max_kep
  172.    Waitms Pearlido
  173.  
  174. Return
  175. ' ********************************************
  176. ' SEBESSÉG BAROS
  177. ' ********************************************
  178. Barok:
  179.    Gosub Meresek
  180.    Locate 2 , 1
  181.    Lcd "               "
  182.    Locate 2 , 1
  183.    For I = 0 To 14
  184.       Lcd Chr(255)
  185.  
  186.    Next
  187.    'Lcd Chr(6)  1/3-ad
  188.  
  189.    Locate 4 , 1
  190.    Lcd "               "
  191.    'Fordulat = 14500
  192.    I = Fordulat \ 1000
  193.    Locate 4 , 1
  194.  
  195.    If I > 0 Then
  196.       For B = 1 To I
  197.          Lcd Chr(255)
  198.          Fordulat = Fordulat - 1000
  199.       Next B
  200.    End If
  201.  
  202.    If Fordulat = 500 Then Lcd Chr(6)
  203.    Waitms 100
  204.  
  205.  
  206. Return
  207.  
  208.  
  209. ' ********************************************
  210. ' INFORMÁCIÓS KÉPERNYŐ
  211. ' ********************************************
  212. Infokepernyo:
  213.    Gosub Meresek
  214.    If Valtas = 1 Then
  215.       Cls
  216.       Valtas = 0
  217.    End If
  218.  
  219.    Locate 1 , 1
  220.    Lcd "AKKU:"
  221.    Locate 2 , 1
  222.    Lcd "OLAJ:"
  223.    Locate 2 , 6
  224.    Lcd Olajfok
  225.    Locate 3 , 1
  226.    Lcd "KINT: "
  227.    Locate 1 , 6
  228.    Lcd Formvolt
  229.  
  230.    Locate 3 , 7
  231.    Lcd W
  232.    Lcd Chr(223)
  233.    Lcd "C"
  234.    Lcd "        "
  235.    Gosub Gear_sub
  236.  
  237. Return
  238.  
  239. ' ********************************************
  240. ' SEBESSÉG - FORDULATSZÁM és SEBESSÉGI FOKOZAT
  241. ' ********************************************
  242. Seb_kepernyo:
  243.    If Valtas = 1 Then
  244.       Cls
  245.       Valtas = 0
  246.    End If
  247.    Locate 1 , 1
  248.    Lcd "SEB:"
  249.    Locate 1 , 11
  250.    Lcd "Km/h"
  251.    Locate 3 , 1
  252.    Lcd "FOR:"
  253.    Locate 3 , 12
  254.    Lcd "RPM"
  255.    Locate 3 , 6
  256.    Lcd "      "
  257.    Locate 1 , 6
  258.    'Lcd Sebesseg
  259.    Locate 3 , 6
  260.    Lcd Fordulat
  261.    Gosub Gear_sub
  262.    Gosub Barok
  263.    Locate 2 , 1
  264.    'Lcd Idoalapszorzo
  265.    Locate 4 , 1
  266.    'Lcd Timer0
  267.  
  268.   ' Waitms 500
  269. Return
  270.  
  271. ' ********************************************
  272. ' ANALÓG MÉRÉSEK
  273. ' ********************************************
  274. Meresek:
  275.    W = Getadc(0)
  276.    W = W * 4.8
  277.    W = W / 11.041                                           ' Hőmérséklet
  278.    Feszadc = Getadc(1)
  279.    Volt = Feszadc / 51.15
  280.  
  281.    Incr Voltanim
  282.  
  283.    If Volt < 9 Then
  284.        Select Case Voltanim
  285.          Case 1 : Formvolt = "    <"
  286.          Case 2 : Formvolt = "   <<"
  287.          Case 3 : Formvolt = "  <<<"
  288.          Case 4 : Formvolt = " <<<<"
  289.          Case 5 : Formvolt = "<<<<<"
  290.          Case 6 : Formvolt = "     "
  291.       End Select
  292.    End If
  293.  
  294.    If Volt > 13 Then
  295.       Select Case Voltanim
  296.          Case 1 : Formvolt = ">    "
  297.          Case 2 : Formvolt = ">>   "
  298.          Case 3 : Formvolt = ">>>  "
  299.          Case 4 : Formvolt = ">>>> "
  300.          Case 5 : Formvolt = ">>>>>"
  301.          Case 6 : Formvolt = "     "
  302.       End Select
  303.    End If
  304.  
  305.    If Volt > 9 And Volt < 13 Then Formvolt = " " + Fusing(volt , "##.#") + "V"
  306.  
  307.    If Olajadc < 10 Then Olajfok = "HIBA"
  308.    If Olajadc > 130 Then
  309.       Select Case Voltanim
  310.          Case 1 : Olajfok = ">    "
  311.          Case 2 : Olajfok = ">>   "
  312.          Case 3 : Olajfok = ">>>  "
  313.          Case 4 : Olajfok = ">>>> "
  314.          Case 5 : Olajfok = ">>>>>"
  315.          Case 6 : Olajfok = "     "
  316.       End Select
  317.    End If
  318.  
  319.    If Olajadc > 10 And Olajadc < 130 Then Olajfok = " " + Str(olajadc) + " C"
  320.  
  321.    If Voltanim = 6 Then Voltanim = 0
  322.  
  323.    Waitms 50
  324.  
  325.  
  326. '   Olajadc = Getadc(2)
  327. '   Olaj = Olajadc / 51.15
  328.  
  329. '   If Volt < 9 Then Formvolt = ""
  330. '   If Volt > 13 Then Formvolt = ">>>>"
  331. '   If Volt > 9 And Volt < 13 Then Formvolt = Fusing(volt , "#.#") + "V"
  332.  
  333. Return
  334.  
  335. ' ********************************************
  336. ' SEBESSÉGI FOKOZAT KIJELZÉS
  337. ' ********************************************
  338. Gear_sub:
  339.    Locate 1 , 17
  340.    Lcd "GEAR"
  341.  
  342.    Select Case Gear
  343.       Case 6:
  344.          Locate 2 , 18
  345.          Lcd Chr(1)
  346.          Lcd Chr(0)
  347.          Locate 3 , 18
  348.          Lcd Chr(1)
  349.          Lcd Chr(2)
  350.          Locate 4 , 18
  351.          Lcd Chr(0)
  352.          Lcd Chr(0)
  353.       Case 5:
  354.          Locate 2 , 18
  355.          Lcd Chr(1)
  356.          Lcd Chr(0)
  357.          Locate 3 , 18
  358.          Lcd Chr(0)
  359.          Lcd Chr(2)
  360.          Locate 4 , 18
  361.          Lcd Chr(0)
  362.          Lcd Chr(0)
  363.       Case 4:
  364.          Locate 2 , 18
  365.          Lcd Chr(4)
  366.          Lcd Chr(3)
  367.          Locate 3 , 18
  368.          Lcd Chr(0)
  369.          Lcd Chr(2)
  370.          Locate 4 , 18
  371.          Lcd " "
  372.          Lcd Chr(5)
  373.       Case 3:
  374.          Locate 2 , 18
  375.          Lcd Chr(0)
  376.          Lcd Chr(2)
  377.          Locate 3 , 18
  378.          Lcd Chr(0)
  379.          Lcd Chr(2)
  380.          Locate 4 , 18
  381.          Lcd Chr(0)
  382.          Lcd Chr(0)
  383.       Case 2:
  384.          Locate 2 , 18
  385.          Lcd Chr(0)
  386.          Lcd Chr(2)
  387.          Locate 3 , 18
  388.          Lcd Chr(1)
  389.          Lcd Chr(0)
  390.          Locate 4 , 18
  391.          Lcd Chr(0)
  392.          Lcd Chr(0)
  393.       Case 1:
  394.          Locate 2 , 18
  395.          Lcd Chr(5)
  396.          Lcd Chr(4)
  397.          Locate 3 , 18
  398.          Lcd " "
  399.          Lcd Chr(4)
  400.          Locate 4 , 18
  401.          Lcd Chr(5)
  402.          Lcd Chr(0)
  403.       Case 0:
  404.          Locate 2 , 18
  405.          Lcd "  "
  406.          Locate 3 , 18
  407.          Lcd Chr(0)
  408.          Lcd Chr(0)
  409.          Locate 4 , 18
  410.          Lcd "  "
  411.    End Select
  412. Return
  413.  
  414. Udvozles:
  415.    Locate 1 , 1
  416.    Lcd "    Y A M A H A"
  417.    Locate 2 , 1
  418.    Lcd "      FZS 600"
  419.    Locate 3 , 1
  420.    Lcd "   Kertesz Attila"
  421.    Locate 4 , 1
  422.    Lcd "        2011"
  423.    Waitms 1000
  424.    Locate 3 , 1
  425.    Lcd "                   "
  426.    Locate 4 , 1
  427.    Lcd "                   "
  428.    Waitms 500
  429.    Locate 3 , 1
  430.    Lcd "   Kertesz Attila"
  431.    Locate 4 , 1
  432.    Lcd "        2011"
  433.    Waitms 1000
  434.    Gosub Lcdcls
  435.    Cls
  436. Return
  437.  
  438. Lcdcls:
  439. Locate 1 , 1
  440. Lcd " "
  441. Locate 3 , 20
  442. Lcd " "
  443. Locate 4 , 20
  444. Lcd " "
  445. For I = 2 To 20
  446. Waitms 50
  447.    B = 21 - I
  448.    Locate 1 , I
  449.    Lcd " "
  450.    Locate 3 , B
  451.    Lcd " "
  452.    K = I - 1
  453.    Z = 21 - K
  454.    Locate 2 , K
  455.    Lcd " "
  456.    Locate 4 , Z
  457.    Lcd " "
  458. Next
  459. Locate 2 , 20
  460. Lcd " "
  461.  
  462.  
  463. Return
  464.  
  465.  
  466.  
  467. ' ********************************************
  468. ' EGY IDŐALAP ALATT BEÉRKEZETT SEBESSÉG CSÚCSOK SZÁMOLÁSA
  469. ' ********************************************
  470. Megszakit_sebesseg:
  471.    Incr Fordulatjelek
  472. Return
  473. ' ********************************************
  474. ' IDŐALAP LETELTE UTÁN VÁLTOZTATJA A SEBESSÉG FORDULAT ÉRTÉKEKET
  475. ' ********************************************
  476. Frekszamolas:
  477. If Idoalap = Jelenlegiido Then
  478.    '  Hertz = 262144 / Counter1
  479.       ' Frekvencia kiszámolása: 1 / Periódusidő
  480.  
  481.    '   Hertz = 1 / Hertz
  482.       ' uSec és Sec között 1000000 a váltószám
  483.       'Fordulat = Hertz * 1000000
  484.  
  485.    Sebesseg = Counter1
  486.    '   Hertz = 262144 / Sebjelek
  487.    '   Hertz = 1 / Hertz
  488.    '   Sebesseg = Hertz * 1000000
  489.    Fordulat = Fordulatjelek * 250
  490.    Fordulat = Fordulat - 500
  491.  
  492.    If Fordulat > 20000 Then Fordulat = 0
  493.  
  494.    '   If Fordulat <= 223 Then Fordulat = 1000
  495.    '   If Fordulat <= 263 Then Fordulat = 1500
  496.    '   If Fordulat <= 343 Then Fordulat = 2000
  497.    '   If Fordulat <= 413 Then Fordulat = 2500
  498.    '   If Fordulat <= 493 Then Fordulat = 3000
  499.    '   If Fordulat <= 573 Then Fordulat = 3500
  500.    '   If Fordulat <= 653 Then Fordulat = 4000
  501.    '   If Fordulat <= 733 Then Fordulat = 4500
  502.    '   If Fordulat <= 893 Then Fordulat = 5000
  503.    '   If Fordulat <= 973 Then Fordulat = 5500
  504.    '   If Fordulat <= 1053 Then Fordulat = 6000
  505.    '   If Fordulat <= 1133 Then Fordulat = 6500
  506.    '   If Fordulat <= 1213 Then Fordulat = 7000
  507.    '   If Fordulat <= 1293 Then Fordulat = 7500
  508.    '   If Fordulat <= 1373 Then Fordulat = 8000
  509.    '   If Fordulat <= 1453 Then Fordulat = 8500
  510.    '   If Fordulat <= 1533 Then Fordulat = 9000
  511.    '   If Fordulat <= 1613 Then Fordulat = 9500
  512.    '   If Fordulat <= 1693 Then Fordulat = 10000
  513.    '   If Fordulat <= 1773 Then Fordulat = 10500
  514.    '   If Fordulat <= 1853 Then Fordulat = 11000
  515.    '   If Fordulat <= 1933 Then Fordulat = 11500
  516.    '   If Fordulat <= 2013 Then Fordulat = 12000
  517.    '   If Fordulat <= 2093 Then Fordulat = 12500
  518.    '   If Fordulat <= 2173 Then Fordulat = 13000
  519.    '   If Fordulat <= 2253 Then Fordulat = 13500
  520.    '   If Fordulat <= 2333 Then Fordulat = 14000
  521.    '   If Fordulat <= 2413 Then Fordulat = 14500
  522.    '   If Fordulat <= 2493 Then Fordulat = 15000
  523.    Jelenlegiido = 0
  524. '   Mentett = Sebjelek
  525.    Counter1 = 0
  526.    Fordulatjelek = 0
  527.  
  528. Else
  529.    Incr Jelenlegiido
  530. End If
  531.  
  532.    '   Bejottjelek = Timer1
  533.  
  534. Return
  535.  
  536. Diagnosztika:
  537.    Locate 1 , 1
  538.    Lcd "          "
  539.    Locate 1 , 1
  540.    Lcd Fordulat
  541.    Locate 2 , 1
  542.    Lcd "          "
  543.    Locate 2 , 1
  544.    Lcd Sebesseg
  545.   ' Locate 2 , 1
  546.   ' Lcd Timer0
  547.    Waitms 100
  548. Return
Advertisement
Add Comment
Please, Sign In to add comment