Advertisement
Guest User

Untitled

a guest
Jun 12th, 2019
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $regfile = "m8def.dat"
  2. $crystal = 8000000
  3. $hwstack = 40
  4. $swstack = 16
  5. $framesize = 32
  6.  
  7. Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
  8.  
  9. Config Lcd = 16 * 2
  10.  
  11.  
  12. Config Portd.0 = Input
  13. Config Portd.1 = Output
  14. Config Portd.2 = Input
  15. Config Portb.0 = Input
  16. Config Portd.3 = Input                                      'ustawienie godziny/minuty/sekundy
  17. Config Portd.4 = Input                                      'inkrementowanie
  18.  
  19. Config Timer0 = Timer , Prescale = 8
  20. On Timer0 Przerwanie_co_2ms                                 'deklaracja jaka etykieta obsługuje
  21. 'przepełnienie od timer0
  22. Dim Sekundy As Integer
  23. Dim Minuty As Integer
  24. Dim Godziny As Integer
  25. Dim Sek As Integer                                    'zmienna licznikowa
  26. Dim Licznik As Integer
  27. Dim Obmin As String * 20
  28. Dim X As Integer
  29. Dim X2 As Integer
  30. Dim Y As Byte
  31.  
  32.  
  33. Enable Interrupts                                           'odblokowanie globalnych przerwań
  34. Enable Timer0                                               'odblokowanie przerwania od przepełnienia timer0
  35. Timer0 = 6                                                  'wpisanie wartości początkowej 6 do timera,
  36.                                                             'czyli timer będzie zliczał 250 (256-6) impulsów
  37. Licznik = 0
  38.  
  39. Config Timer1 = Counter , Capture Edge = Rising , Noise Cancel = 1
  40.  
  41. X = 1
  42. X2 = -1
  43. Portd.0 = 1
  44. Portd.1 = 0
  45. Portd.2 = 1
  46. Portd.4 = 1
  47. Portd.3 = 1
  48. Y = 0
  49.  
  50. Config Debounce = 50
  51.  
  52.  
  53. Do
  54.  
  55.  
  56.  
  57.  
  58.      If X <> X2 Then
  59.      Cls
  60.      If Sekundy <= 9 And Minuty < 10 And Godziny < 10 Then
  61.      Lcd "0" + Godziny + ":0" + Minuty + ":0" + Sekundy
  62.      End If
  63.      If Sekundy > 9 And Minuty < 10 And Godziny < 10 Then
  64.      Lcd "0" + Godziny + ":0" + Minuty + ":" + Sekundy
  65.      End If
  66.      If Sekundy > 9 And Minuty > 9 And Godziny < 10 Then
  67.      Lcd "0" + Godziny + ":" + Minuty + ":" + Sekundy
  68.      End If
  69.      If Sekundy > 9 And Minuty > 9 And Godziny > 9 Then
  70.      Lcd Godziny + ":" + Minuty + ":" + Sekundy
  71.      End If
  72.      X2 = X
  73.      End If
  74.  
  75.  
  76.     If Pind.0 = 0 Then
  77.     Portd.1 = 1
  78.     End If
  79.  
  80.     If Pind.2 = 0 Then
  81.     Portd.1 = 0
  82.     End If
  83.  
  84.     If Y = 4 Then
  85.     Y = 0
  86.     End If
  87.  
  88.    Debounce Pind.3 , 0 , Ho , Sub
  89.    Debounce Pind.4 , 0 , He , Sub
  90.  
  91. Loop
  92.  
  93. Ho:
  94.     Incr Y
  95. Return
  96. He:
  97.     If Y = 3 Then
  98.     Incr Sekundy
  99.     End If
  100.  
  101.     If Y = 2 Then
  102.     Incr Minuty
  103.     End If
  104.  
  105.     If Y = 1 Then
  106.     Incr Godziny
  107.     End If
  108.  
  109.     Return
  110.  
  111.   Ha:
  112.   Return
  113.  
  114. Przerwanie_co_2ms:                                          'podprogram przerwania od przepełnienia timer0 wywolywanego co 2 ms
  115.  Counter0 = Counter0 + 6                                    'ustawienie początkowej wartości timera0 poprzez
  116. 'dodanie do niego wartości 6 (odliczone zostanie
  117. 'dokładnie kolejne 250 impulsów)
  118.  Incr Licznik                                               'zwiększenie licznika
  119.  If Licznik = 4000 Then                                     'jeśli zmienna licznik równa się 500 (czyli
  120. 'odliczone zostało 500*2ms=1sek),
  121.  Incr Sekundy
  122.  X2 = -1
  123.  Licznik = 0                                                'wyzeruj zmienną licznik
  124.  End If
  125.  If Sekundy = 60 Then
  126.  Incr Minuty
  127.  Sekundy = 0
  128.  End If
  129.  If Minuty = 60 Then
  130. Incr Godziny
  131.  Minuty = 0
  132.  End If
  133.  
  134.  
  135.  
  136. Return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement