Először köszönetet szeretnék mondani minden egyes fórumozónak. Eddig hozzászólni nem nagyon tudtam viszont nagyon sokmindent tanultam(az elmult kb fél évben végigolvastam mindent amit lehetett itt és máshol)
Elérkezett az idő (amiből mindig kevés van) hogy megírjam az első saját programom ami csinál is valami hasznosast nem csak álom.
A feladat egyszerű
Stopper optokapuval
Piroslámpa világit
Gomb megynyom majd elenged
Lámpa kialszik
időmérés indul felbontás ezredmásodperc
Optokapu áthaladás reakcióidő kiír
Optokapu áthaladás részidő kiír
Gomb mérés vége „goto start”
Nem gondoltam hogy nagy feladat
Persze int meg timer meg arduino opto illeszt „köszönet sytex-nek ” a hardver nem az erősségem
Mivel nincs verseny vitára bocsájtanám a „művem” mert működni működik hátha csináltam benne valami elvi hibát. Időszámolás ötlet GyimesiZsolt-Ora_timer köszönet érte
És ahogy látom a timer nem minden kezdőnek tiszta tanuljon más is
Várom a hozzáértők kritikáját
Kód: Egész kijelölése
$crystal = 16000000 'orajel
$regfile = "m168def.dat" 'chip
$baud = 115200
Dim Gombintertek As Integer
Dim Szamol As Integer
Dim Optointertek As Integer
Dim Ora As Byte , Perc As Byte , Masodperc As Byte
Dim Ezred As Integer
Dim Mora As Byte , Mperc As Byte , Mmasodperc As Byte
Dim Mezred As Integer
Opto Alias Pind.3 'INT1
Config Portd.3 = Input
Portd.3 = 1
Config Int1 = Falling 'H->L
On Int1 Optoint
Gomb Alias Pind.2
Config Gomb = Input
Config Int0 = Falling
On Int0 Gombint
Stopled Alias Portb.5
Config Stopled = Output
Reset Stopled
Athal Alias Portb.4
Config Athal = Output
Reset Athal
Config Timer0 = Timer , Prescale = 64
On Timer0 Mido
Disable Timer0
Enable Int0
Enable Interrupts
Tcnt0 = 6 'timer0
Disable Int1
Print " program indul"
Gombintertek = 0
Mezred = 0
Mmasodperc = 0
Mperc = 0
Mora = 0
Do
Set Stopled
Ezred = 0
Masodperc = 0
Perc = 0
Ora = 0
Disable Int1
Do
Loop Until Gombintertek > 0
Enable Timer0
Start Timer0
Gombintertek = 0
Reset Stopled
Print " starting "
Enable Int1
Optointertek = 0
Szamol = -1
Do
If Optointertek > 0 Then
Incr Szamol
Toggle Athal
'Print " Reszido " ; Szamol
'Print Ora ; ":" ; Perc ; ":" ; Masodperc ; ":" ; Ezred
Select Case Szamol
Case 0
Tcnt0 = 6
Ezred = 0
Masodperc = 0
Perc = 0
Ora = 0
Print "Reakcioido " ; Mora ; ":" ; Mperc ; ":" ; Mmasodperc ; ":" ; Mezred
Mezred = 0
Mmasodperc = 0
Mperc = 0
Mora = 0
Case Else
Print " Reszido " ; Szamol ; " " ; Mora ; ":" ; Mperc ; ":" ; Mmasodperc ; ":" ; Mezred
End Select
Optointertek = 0
End If
Loop Until Szamol = 1000 Or Gombintertek > 0
Szamol = 0
Gombintertek = 0
Disable Int1
Print " vege az idomeresnek "
Stop Timer0
Set Stopled
Disable Timer0
Loop
End
Optoint: 'opto int
If Mezred <> Ezred Or Mmasodperc <> Masodperc Or Mperc <> Perc Or Mora <> Ora Then
Mezred = Ezred
Mmasodperc = Masodperc
Mperc = Perc
Mora = Ora
Incr Optointertek
End If
Return
Gombint:
Incr Gombintertek
Return
Mido: 'Timer0 int
Tcnt0 = 6
Incr Ezred
If Ezred = 1000 Then
Ezred = 0
Incr Masodperc
If Masodperc = 60 Then
Masodperc = 0
Incr Perc
If Perc = 60 Then
Perc = 0
Incr Ora
End If
End If
End If
Return