Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $regfile = "m8def.dat"
- $crystal = 8000000
- $hwstack = 40
- $swstack = 16
- $framesize = 32
- Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
- Config Lcd = 16 * 2
- Config Portd.0 = Input
- Config Portd.1 = Output
- Config Portd.2 = Input
- Config Portb.0 = Input
- Config Portd.3 = Input 'ustawienie godziny/minuty/sekundy
- Config Portd.4 = Input 'inkrementowanie
- Config Timer0 = Timer , Prescale = 8
- On Timer0 Przerwanie_co_2ms 'deklaracja jaka etykieta obsługuje
- 'przepełnienie od timer0
- Dim Sekundy As Integer
- Dim Minuty As Integer
- Dim Godziny As Integer
- Dim Sek As Integer 'zmienna licznikowa
- Dim Licznik As Integer
- Dim Obmin As String * 20
- Dim X As Integer
- Dim X2 As Integer
- Dim Y As Byte
- Enable Interrupts 'odblokowanie globalnych przerwań
- Enable Timer0 'odblokowanie przerwania od przepełnienia timer0
- Timer0 = 6 'wpisanie wartości początkowej 6 do timera,
- 'czyli timer będzie zliczał 250 (256-6) impulsów
- Licznik = 0
- Config Timer1 = Counter , Capture Edge = Rising , Noise Cancel = 1
- X = 1
- X2 = -1
- Portd.0 = 1
- Portd.1 = 0
- Portd.2 = 1
- Portd.4 = 1
- Portd.3 = 1
- Y = 0
- Config Debounce = 50
- Do
- If X <> X2 Then
- Cls
- If Sekundy <= 9 And Minuty < 10 And Godziny < 10 Then
- Lcd "0" + Godziny + ":0" + Minuty + ":0" + Sekundy
- End If
- If Sekundy > 9 And Minuty < 10 And Godziny < 10 Then
- Lcd "0" + Godziny + ":0" + Minuty + ":" + Sekundy
- End If
- If Sekundy > 9 And Minuty > 9 And Godziny < 10 Then
- Lcd "0" + Godziny + ":" + Minuty + ":" + Sekundy
- End If
- If Sekundy > 9 And Minuty > 9 And Godziny > 9 Then
- Lcd Godziny + ":" + Minuty + ":" + Sekundy
- End If
- X2 = X
- End If
- If Pind.0 = 0 Then
- Portd.1 = 1
- End If
- If Pind.2 = 0 Then
- Portd.1 = 0
- End If
- If Y = 4 Then
- Y = 0
- End If
- Debounce Pind.3 , 0 , Ho , Sub
- Debounce Pind.4 , 0 , He , Sub
- Loop
- Ho:
- Incr Y
- Return
- He:
- If Y = 3 Then
- Incr Sekundy
- End If
- If Y = 2 Then
- Incr Minuty
- End If
- If Y = 1 Then
- Incr Godziny
- End If
- Return
- Ha:
- Return
- Przerwanie_co_2ms: 'podprogram przerwania od przepełnienia timer0 wywolywanego co 2 ms
- Counter0 = Counter0 + 6 'ustawienie początkowej wartości timera0 poprzez
- 'dodanie do niego wartości 6 (odliczone zostanie
- 'dokładnie kolejne 250 impulsów)
- Incr Licznik 'zwiększenie licznika
- If Licznik = 4000 Then 'jeśli zmienna licznik równa się 500 (czyli
- 'odliczone zostało 500*2ms=1sek),
- Incr Sekundy
- X2 = -1
- Licznik = 0 'wyzeruj zmienną licznik
- End If
- If Sekundy = 60 Then
- Incr Minuty
- Sekundy = 0
- End If
- If Minuty = 60 Then
- Incr Godziny
- Minuty = 0
- End If
- Return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement