Facebook
From asdas, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 262
  1. $MOD842
  2. liczbaPrzerwan EQU 1
  3. licznik EQU 15536
  4.  
  5. liczbaPrzerwan2 EQU 200
  6.  
  7. ORG 0
  8.         SJMP START
  9.        
  10. ;Liczy 2 000 000 ~1 sekunda
  11. ;2kk = 50k * 40
  12.  
  13. ORG 00Bh ;Timer 0 przerwanie
  14.         CALL USTAW_LICZNIK0
  15.         DJNZ R5, KONIEC0
  16.         INC R1
  17.         CJNE R1, #00001010b, Dalej              ;Młodsza sekunda licznona 0 - 9
  18.         JMP Max1
  19.  
  20. Dalej:
  21.         MOV R5, #liczbaPrzerwan
  22. KONIEC0:
  23.         RETI
  24.        
  25.        
  26. ORG 01Bh
  27. CALL USTAW_LICZNIK1
  28. DJNZ R6, KONIEC1
  29.         CPL F0
  30.         MOV R6, #liczbaPrzerwan2
  31.        
  32. KONIEC1:
  33.         RETI
  34.        
  35.  
  36. Max1: ;Starsza sekunda licznona 0 - 5
  37.         MOV R1, #00000000b
  38.         INC R2
  39.         CJNE R2, #00010110b, Dalej
  40.         JMP Max2
  41.        
  42. Max2: ;Młodsza minuta liczona 0 - 9
  43.         MOV R2, #00010000b
  44.         INC R3
  45.         CJNE R3, #01101010b, Dalej
  46.         JMP Max3
  47.        
  48. Max3: ;Starsza minuta liczona 0 - 5
  49.         MOV R3, #01100000b
  50.         INC R4
  51.         CJNE R4, #00110110b, Dalej
  52.         JMP Max4
  53.        
  54. Max4:   ;Młodsza godzina 0 - 9
  55.         MOV R4, #00110000b
  56.         INC R7
  57.         CJNE R7, #00000100b, Nofour ;4
  58.         CJNE R0, #00010010b, Dalej;2
  59.         MOV R7, #00000000b
  60.         MOV R0, #00010000b
  61.         CJNE R3, #01101010b, Dalej
  62.         JMP Dalej
  63. Nofour:
  64.         CJNE R7, #00001010b, Dalej ;10
  65.         JMP Max7
  66.        
  67. Max7:
  68.         MOV R7, #00000000b
  69.         INC R0
  70.         JMP Dalej      
  71.        
  72.        
  73. START:
  74.         ;0 na wyszystkich wyświetlaczach
  75.         MOV R1, #00000000b
  76.         MOV R2, #00010000b
  77.         MOV R3, #01100000b
  78.         MOV R4, #00110000b                      ;R1 - R4 przechowuja wartosci minut i sekund
  79.        
  80.         MOV R7, #00000000b                     
  81.         MOV R0, #00010000b                      ;R0 i R7 to odpowiednio młodszy i starszy bit godzin wyświetlanych na przemian z minutami/sekundami
  82.        
  83.         MOV R5, #liczbaPrzerwan         ;liczba przerwan do timera0
  84.         MOV R6, #liczbaPrzerwan2        ;liczba przerwan do timera1
  85.        
  86.         ;SETB RS0 = 1, Przejście do banku 1, RS0 = 0, powrót do zerowego
  87.        
  88.         MOV IE, #10001010b ;przerwania dla licznika 1, licznika 0
  89.         MOV TMOD, #010001b ;Tryb licznikow
  90.        
  91.         CALL USTAW_LICZNIK0
  92.         CALL USTAW_LICZNIK1
  93.         SETB TR0
  94.         SETB TR1
  95.        
  96.         ;wyświetlanie na wyszystkich wyświetlaczach
  97. Petla:
  98.         JB F0, WyswietlajGodziny ;Skok jezeli R7.0 != 0
  99.         ;WyswietlajMinuty:
  100.         MOV P2, R1
  101.         CALL SHORT_DELAY
  102.        
  103.         MOV P2, R2
  104.         CALL SHORT_DELAY
  105.  
  106.         MOV P2, R4
  107.         CALL SHORT_DELAY
  108.        
  109.         MOV P2, R3
  110.         CALL SHORT_DELAY
  111.  
  112.         JMP Petla
  113.        
  114. WyswietlajGodziny:
  115.         MOV P2, R0
  116.         CALL SHORT_DELAY
  117.        
  118.         MOV P2, R7
  119.         CALL SHORT_DELAY
  120.  
  121.         JMP Petla
  122.        
  123.        
  124.        
  125. SHORT_DELAY:
  126.         MOV     DPTR,#0FFh        
  127.         DJNZ    DPL, $
  128.         DJNZ    DPH, $
  129.         RET
  130.        
  131.        
  132. USTAW_LICZNIK0: ;Ustawia poczatkowa wartosc licznika
  133.         MOV TL0, #low licznik
  134.         MOV TH0, #high licznik
  135.         RET
  136.        
  137. USTAW_LICZNIK1: ;Ustawia poczatkowa wartosc licznika
  138.         MOV TL1, #low licznik
  139.         MOV TH1, #high licznik
  140.         RET
  141.        
  142.  
  143. END