Advertisement
Guest User

LF - BASCOM

a guest
May 8th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $regfile = "m328pdef.dat"
  2. $crystal = 20000000
  3. $baud = 9600
  4.  
  5. Config Adc = Single , Prescaler = 64 , Reference = Aref
  6. Start Adc
  7.  
  8.  
  9.  
  10. Ddrd = &B_11110011                                          'setari directii porturi
  11. Ddrc = $00
  12. Ddrb = $06
  13. Portd = $0c
  14. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  15. Tccr0a = $a3
  16. Tccr0b = $03
  17.  
  18. Tccr1a = $a3
  19. Tccr1b = $04
  20.  
  21.  
  22. Ocr0a = 0
  23. Ocr0b = 0
  24. Ocr1a = 0
  25. Ocr1b = 0
  26. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  27. Ledr Alias Portd.0                                          'pentru o scriere mai usoara
  28. Ledb Alias Portd.1
  29. But1 Alias Pind.3
  30. But2 Alias Pind.2
  31. Qrtled Alias Portd.4
  32. Us_echo Alias Portb.0
  33. M_en Alias Portd.7
  34. In1 Alias Portd.6                                           'oc0a
  35. In2 Alias Portd.5                                           'oc0b
  36.  
  37. In3 Alias Portb.2                                           'oc1b
  38. In4 Alias Portb.1                                           'oc1a
  39. Wait 1
  40.  
  41.  
  42. Dim S1(8) As Word , S2(8) As Word , S3(8) As Word , S4(8) As Word
  43. Dim P As Word
  44. Dim Sum1 As Long , Sum2 As Long
  45. Dim Calibr_val(8) As Word , Min_val(8) As Word , Max_val(8) As Word , J As Integer
  46.  
  47. Dim Maxim As Integer , Media(8) As Integer , Maxim_val(8) As Word
  48. Dim Minn As Integer
  49. Dim Valori(8) As Long
  50. Dim Suma(8) As Long , Aux As Integer , Aux1 As Integer , Suma1 As Long , Pozitie As Single , Vector(8) As Long , Eroare As Long
  51. Dim K As Byte , Maxx As Long
  52. Dim Val1(8) As Long , Val2(8) As Long , Val3(8) As Single , Cval(8) As Single , Temp(8) As Long , Corectare(8) As Long
  53. Minn = 100
  54.  
  55.  
  56.  
  57.  
  58. 'Initializare valori
  59. For J = 1 To 8
  60.    Min_val(j) = 800
  61. Next J
  62.  
  63. For J = 1 To 8
  64.    Max_val(j) = 0
  65. Next J
  66.  
  67. 'Intrare bucla
  68. Print "W E L C O M E"
  69. Wait 1
  70. Do
  71.  
  72. For J = 1 To 8
  73. Suma(j) = 0
  74. Next J
  75. 'Calibrarea atat timp cat butonul nu-i apasat
  76. While But2 = 1
  77.  
  78.  
  79. 'Citire 4 valori pe senzor
  80. Set Qrtled
  81. Waitms 1
  82. For J = 1 To 8
  83.    P = J - 1
  84.    S1(j) = Getadc(p)
  85. Next J
  86. For J = 1 To 8
  87.    P = J - 1
  88.    S2(j) = Getadc(p)
  89. Next J
  90. For J = 1 To 8
  91.    P = J - 1
  92.    S3(j) = Getadc(p)
  93. Next J
  94. For J = 1 To 8
  95.    P = J - 1
  96.    S4(j) = Getadc(p)
  97. Next J
  98. Reset Qrtled
  99.  
  100. 'Media
  101. For J = 1 To 8
  102.   Suma(j) = S1(j) + S2(j)
  103.   Suma(j) = Suma(j) + S3(j)
  104.   Suma(j) = Suma(j) + S4(j)
  105.   Media(j) = Suma(j) / 4
  106. Next J
  107.  
  108.  
  109. 'Ipartirea valorilor maxime si minime
  110. For J = 1 To 8
  111.       If Media(j) < Min_val(j) Then
  112.          Min_val(j) = Media(j)
  113.       Elseif Media(j) > Max_val(j) Then
  114.          Max_val(j) = Media(j)
  115.       End If
  116. Next J
  117.  
  118.  
  119.  
  120. 'Calcularea mediei valorilor maxime din sir
  121. Maxim = 0
  122. For J = 1 To 8
  123.    Maxim_val(j) = Max_val(j) - Min_val(j)
  124.    Maxim = Maxim + Maxim_val(j)
  125. Next J
  126.  
  127.  
  128. 'Scoatere zgomot
  129. For J = 1 To 8
  130.     Valori(j) = Media(j) - Min_val(j)
  131. Next J
  132.  
  133.  
  134. For J = 1 To 8
  135. Val1(j) = Media(j) - Min_val(j)
  136. Val2(j) = Max_val(j) - Min_val(j)
  137. Val3(j) = Val1(j) / Val2(j)
  138. Cval(j) = 1000 * Val3(j)
  139. Temp(j) = Cval(j)
  140. If Temp(j) < 5 Then
  141.    Temp(j) = 0
  142. End If
  143. Next J
  144.  
  145.  
  146. 'Ordonare senzori
  147. Corectare(1) = Temp(7) * 100
  148. Corectare(2) = Temp(8) * 200
  149. Corectare(3) = Temp(1) * 300
  150. Corectare(4) = Temp(2) * 400
  151. Corectare(5) = Temp(3) * 500
  152. Corectare(6) = Temp(4) * 600
  153. Corectare(7) = Temp(5) * 700
  154. Corectare(8) = Temp(6) * 800
  155.  
  156. Sum1 = 0
  157. Sum2 = 0
  158.  
  159. For J = 1 To 8
  160.   Sum1 = Sum1 + Corectare(j)
  161.   Sum2 = Sum2 + Temp(j)
  162. Next J
  163.  
  164. Pozitie = Sum1 / Sum2
  165. Eroare = Pozitie - 400
  166.  
  167. Print Corectare(1) ; Chr(9) ; Corectare(2) ; Chr(9) ; Corectare(3) ; Chr(9) ; Corectare(4) ; Chr(9) ; Corectare(5) ; Chr(9) ; Corectare(6) ; Chr(9) ; Corectare(7) ; Chr(9) ; Corectare(8) ; Chr(9) ; "ERR >> " ; Eroare
  168. Waitms 10
  169. Wend
  170.  
  171. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  172. Set M_en
  173. Ocr0a = 255
  174. Ocr0b = 0
  175.  
  176. Ocr1a = 255
  177. Ocr1b = 0
  178. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  179. Loop
  180. End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement