Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $regfile = "m328pdef.dat"
- $crystal = 20000000
- $baud = 9600
- Config Adc = Single , Prescaler = 64 , Reference = Aref
- Start Adc
- Ddrd = &B_11110011 'setari directii porturi
- Ddrc = $00
- Ddrb = $06
- Portd = $0c
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Tccr0a = $a3
- Tccr0b = $03
- Tccr1a = $a3
- Tccr1b = $04
- Ocr0a = 0
- Ocr0b = 0
- Ocr1a = 0
- Ocr1b = 0
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Ledr Alias Portd.0 'pentru o scriere mai usoara
- Ledb Alias Portd.1
- But1 Alias Pind.3
- But2 Alias Pind.2
- Qrtled Alias Portd.4
- Us_echo Alias Portb.0
- M_en Alias Portd.7
- In1 Alias Portd.6 'oc0a
- In2 Alias Portd.5 'oc0b
- In3 Alias Portb.2 'oc1b
- In4 Alias Portb.1 'oc1a
- Wait 1
- Dim S1(8) As Word , S2(8) As Word , S3(8) As Word , S4(8) As Word
- Dim P As Word
- Dim Sum1 As Long , Sum2 As Long
- Dim Calibr_val(8) As Word , Min_val(8) As Word , Max_val(8) As Word , J As Integer
- Dim Maxim As Integer , Media(8) As Integer , Maxim_val(8) As Word
- Dim Minn As Integer
- Dim Valori(8) As Long
- Dim Suma(8) As Long , Aux As Integer , Aux1 As Integer , Suma1 As Long , Pozitie As Single , Vector(8) As Long , Eroare As Long
- Dim K As Byte , Maxx As Long
- 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
- Minn = 100
- 'Initializare valori
- For J = 1 To 8
- Min_val(j) = 800
- Next J
- For J = 1 To 8
- Max_val(j) = 0
- Next J
- 'Intrare bucla
- Print "W E L C O M E"
- Wait 1
- Do
- For J = 1 To 8
- Suma(j) = 0
- Next J
- 'Calibrarea atat timp cat butonul nu-i apasat
- While But2 = 1
- 'Citire 4 valori pe senzor
- Set Qrtled
- Waitms 1
- For J = 1 To 8
- P = J - 1
- S1(j) = Getadc(p)
- Next J
- For J = 1 To 8
- P = J - 1
- S2(j) = Getadc(p)
- Next J
- For J = 1 To 8
- P = J - 1
- S3(j) = Getadc(p)
- Next J
- For J = 1 To 8
- P = J - 1
- S4(j) = Getadc(p)
- Next J
- Reset Qrtled
- 'Media
- For J = 1 To 8
- Suma(j) = S1(j) + S2(j)
- Suma(j) = Suma(j) + S3(j)
- Suma(j) = Suma(j) + S4(j)
- Media(j) = Suma(j) / 4
- Next J
- 'Ipartirea valorilor maxime si minime
- For J = 1 To 8
- If Media(j) < Min_val(j) Then
- Min_val(j) = Media(j)
- Elseif Media(j) > Max_val(j) Then
- Max_val(j) = Media(j)
- End If
- Next J
- 'Calcularea mediei valorilor maxime din sir
- Maxim = 0
- For J = 1 To 8
- Maxim_val(j) = Max_val(j) - Min_val(j)
- Maxim = Maxim + Maxim_val(j)
- Next J
- 'Scoatere zgomot
- For J = 1 To 8
- Valori(j) = Media(j) - Min_val(j)
- Next J
- For J = 1 To 8
- Val1(j) = Media(j) - Min_val(j)
- Val2(j) = Max_val(j) - Min_val(j)
- Val3(j) = Val1(j) / Val2(j)
- Cval(j) = 1000 * Val3(j)
- Temp(j) = Cval(j)
- If Temp(j) < 5 Then
- Temp(j) = 0
- End If
- Next J
- 'Ordonare senzori
- Corectare(1) = Temp(7) * 100
- Corectare(2) = Temp(8) * 200
- Corectare(3) = Temp(1) * 300
- Corectare(4) = Temp(2) * 400
- Corectare(5) = Temp(3) * 500
- Corectare(6) = Temp(4) * 600
- Corectare(7) = Temp(5) * 700
- Corectare(8) = Temp(6) * 800
- Sum1 = 0
- Sum2 = 0
- For J = 1 To 8
- Sum1 = Sum1 + Corectare(j)
- Sum2 = Sum2 + Temp(j)
- Next J
- Pozitie = Sum1 / Sum2
- Eroare = Pozitie - 400
- 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
- Waitms 10
- Wend
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Set M_en
- Ocr0a = 255
- Ocr0b = 0
- Ocr1a = 255
- Ocr1b = 0
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Loop
- End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement