Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m32def.dat" 'M8
- $crystal = 8000000
- Dim Ruch_bramy As Byte
- Config Lcd = 16 * 2
- Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
- Cls
- Cursor Off Noblink
- Config Pinb.6 = Input 'Krańcówka góra
- Config Pinb.4 = Input 'Przycisk
- Config Pinb.5 = Input 'Krańcówka dół
- Config Pinb.7 = Input 'Fotokomórka
- Krancowka_gora Alias Pinb.6
- Przycisk Alias Pinb.4
- Krancowka_dol Alias Pinb.5
- Fotokomorka Alias Pinb.7
- Config Portb.1 = Output 'Przekaźnik otw.
- Config Portb.2 = Output 'Przekaźnik zam.
- Przekaznik_otwierania Alias Portb.1
- Przekaznik_zamykania Alias Portb.2
- Set Portb
- Do
- If Przycisk = 0 Then
- Incr Ruch_bramy 'wiadomo, zwiększasz zmienną
- Bitwait Przycisk , Set
- If Ruch_bramy >= 4 Then Ruch_bramy = 0 'nie muszę opisywać
- End If
- Select Case Ruch_bramy
- Case 0:
- 'tu ustaw porty do zatrzymania silnika
- Set Przekaznik_otwierania
- Set Przekaznik_zamykania
- Case 1:
- If Krancowka_dol <> 0 And Fotokomorka = 0 Then 'jeśli brama nie zamknięta
- 'i jeśli nic nie stoi w barierze podczerwieni to
- 'tu ustaw porty do zamykania bramy
- Set Przekaznik_otwierania
- Reset Przekaznik_zamykania
- End If
- Case 2:
- 'tu ustaw porty do zatrzymania silnika
- Set Przekaznik_otwierania
- Set Przekaznik_zamykania
- Case 3:
- If Krancowka_gora <> 0 Then 'jeśli brama choćby trochę została zamknięta to
- 'tu ustaw porty do otwierania bramy
- Set Przekaznik_zamykania
- Reset Przekaznik_otwierania
- End If
- End Select
- If Fotokomorka <> 0 And Ruch_bramy = 1 Then 'jeśli coś przerwie barierę w trakcie zamykania to
- 'ustaw porty do zatrzymania silnika
- Set Przekaznik_zamykania
- Set Przekaznik_otwierania
- Wait 1 'brzydko ale jeśli nie używasz timerów to można i tak
- Ruch_bramy = 3 'ustawiasz zmienną tak by naciśnięcie przycisku spowodowało
- 'następną sekwencję czyli w tym przypadku zatrzymanie bramy
- 'a select case w sekcji 3 zacznie Ci otwierać bramę
- End If
- If Krancowka_dol = 0 And Ruch_bramy = 1 Then 'jeśli brama zamknie się to
- Ruch_bramy = 2
- 'ustawisz zmienną tak że select case wyłączy silnik
- End If
- If Krancowka_gora = 0 And Ruch_bramy = 3 Then 'jeśli brama się otworzy to
- Ruch_bramy = 0
- 'ustawisz zmienną tak że select case wyłączy silnik
- End If
- Home
- Lcd "Kr.ot=" ; Krancowka_gora ; " " ; "foto=" ; Fotokomorka
- Locate 2 , 1
- Lcd "Kr.za=" ; Krancowka_dol ; " " ; Ruch_bramy
- Loop
- End