Guest User

Untitled

a guest
Apr 18th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .area MAIN(ABS)
  2. .org 0x000
  3.   LJMP START
  4. .org 0x00B
  5.   LJMP TIMER
  6.  
  7. .org 0x100
  8. START: 
  9.   ANL TMOD, #0xF0 ;INICJALIZACJA LICZNIKA I PRZERWAN
  10.   ORL TMOD, #0x01
  11.   SETB EA
  12.   SETB ET0
  13.   SETB TR0
  14.   MOV R7,#0x08 ;LICZNIK PRZEKRECEN LICZNIKA
  15.   MOV R0,#0x00 ;NUMER DIODY, KTORA MA SWIECIC
  16.   SETB F0 ;KIERUNEK ZMIAN R0 1 - UP, 0 - DOWN
  17.   MOV P1,#0xFF ;NA POCZATKU ZADNA DIODA NIE SWIECI
  18.   CLR P3.4
  19.   CLR P3.5
  20.  
  21. MAIN:
  22.   LJMP MAIN ;DO NOTHING
  23.  
  24. TIMER:
  25.   DJNZ R7,ENDINT ;JEZELI NIE CO OSMY, TO NIC NIE ROBIC OPROCZ ZMNIEJSZENIA
  26.  
  27.   MOV R7,#0x08 ;ZEROWANIE LICZNIKA PRZEKRECEN LICZNIKA
  28.   JNB F0,DECREMENT ;JEZELI KIERUNEK ZMIAN TO 0, TO SKOK DO CZESCI DEKREMENTUJACEJ
  29.  
  30.   PREINCREMENT:
  31.   ;;;;;;;;;JEZELI PSW.F0 = 1, CZYLI IDZIEMY W GORE
  32.   INC R0 ;ZWIEKSZENIE NUMERU DIODY
  33.   CJNE R0,#0x0B,SETDIODA ;JEZELI R0 JEST MNIEJSZE OD 0x0B, CZYLI MA PRAWIDLOWY NUMER DIODY, TO MOZNA SKOCZYC DO WYPISANIA TEGO NA ODPOWIEDNIA DIODE
  34.   CLR F0 ;JEZELI R0 BYLO ROWNE 0x0B, TO TRZEBA ZEROWAC F0 I ZEJSC DO 0x0A, ZEBY ZMNIEJSZYC Z POWROTEM R0 DO PRZYZWOITEJ WARTOSCI
  35.  
  36.   ;;;;;;;;;JEZELI PSW.F0 = 0, CZYLI IDZIEMY W DOL
  37.   DECREMENT:
  38.   DEC R0 ;ZMNIEJSZENIE NUMERU DIODY
  39.   CJNE R0,#0x00,SETDIODA ;JEZELI R0 JEST CO NAJMNIEJ 0x01, TO MOZNA PRZEJSC DO ZAPALANIA DIODY
  40.   SETB F0 ;JEZELI R0 BYLO 0x00, TO TRZEBA USTAWIC F0 I SKOCZYC DO INKREMENTACJI, ZEBY PRZYWROCIC DOBRY NUMER DIODY W F0
  41.   LJMP PREINCREMENT
  42.  
  43.   ;;;;;;;;;ZAPALANIE DOWOLNEJ DIODY WEDLUG NUMERU 0x01-0x0A UTRZYMYWANEGO W R0
  44.   SETDIODA:
  45.   CJNE R0,#0x02,WHATEVER1 ;CJNE USTAWI C NA 1, JEZELI R0 JEST MNIEJSZE OD 0x02
  46.   WHATEVER1:  ;SKOK JEST NIEPRZYDATNY, EFEKT UBOCZNY UZYSKIWANIA REZULTATU POROWNANIA W CJNE
  47.   JB CY,DIODA1 ;JEZELI R0 JEST MNIEJSZE OD 0x02 (CO POZNAJE PO USTAWIONYM W CJNE BICIE C), TO ZNACZY, ZE R0 = 0x01.
  48.   ;OPIERA SIE TO NA ZALOZENIU, ZE W TEJ CZESCI KODU R0 MA WARTOSCI Z ZAKRESU 0x01 DO 0x0A, O CO POSTARALEM SIE W POPRZEDNIEJ CZESCI KODU
  49.   CJNE R0,#0x03,WHATEVER2 ;RESZTA ANALOGICZNIE
  50.   WHATEVER2:
  51.   JB CY,DIODA2
  52.   CJNE R0,#0x04,WHATEVER3
  53.   WHATEVER3:
  54.   JB CY,DIODA3
  55.   CJNE R0,#0x05,WHATEVER4
  56.   WHATEVER4:
  57.   JB CY,DIODA4
  58.   CJNE R0,#0x06,WHATEVER5
  59.   WHATEVER5:
  60.   JB CY,DIODA5
  61.   CJNE R0,#0x07,WHATEVER6
  62.   WHATEVER6:
  63.   JB CY,DIODA6
  64.   CJNE R0,#0x08,WHATEVER7
  65.   WHATEVER7:
  66.   JB CY,DIODA7
  67.   CJNE R0,#0x09,WHATEVER8
  68.   WHATEVER8:
  69.   JB CY,DIODA8
  70.   CJNE R0,#0x0A,WHATEVER9
  71.   WHATEVER9:
  72.   JB CY,DIODA9
  73.   LJMP DIODA10  ;JEZELI ZADNA Z POWYZSZYCH OPCJI NIE ZADZIALALA, TO ZNACZY, ZE R0 = 0A
  74.  
  75.   DIODA1: ;PROSTE I BRUTALNE
  76.   MOV P1,#0b11111110
  77.   LJMP BREAK
  78.   DIODA2:
  79.   MOV P1,#0b11111101
  80.   LJMP BREAK
  81.   DIODA3:
  82.   MOV P1,#0b11111011
  83.   LJMP BREAK
  84.   DIODA4:
  85.   MOV P1,#0b11110111
  86.   LJMP BREAK
  87.   DIODA5:
  88.   MOV P1,#0b11101111
  89.   LJMP BREAK
  90.   DIODA6:
  91.   MOV P1,#0b11011111
  92.   LJMP BREAK
  93.   DIODA7:
  94.   MOV P1,#0b10111111
  95.   LJMP BREAK
  96.   DIODA8:
  97.   MOV P1,#0b01111111
  98.   CLR P3.4 ;9 DIODA MOGLA BYC ZAPALONA, A TERAZ JUZ NIE POWINNA
  99.   LJMP BREAK
  100.   DIODA9:
  101.   MOV P1,#0xFF ;8 DIODA MOGLA BYC ZAPALONA, A TERAZ NIE POWINNA
  102.   CLR P3.5 ;PODOBNIE 10
  103.   SETB P3.4
  104.   LJMP BREAK
  105.   DIODA10:
  106.   CLR P3.4 ;9 DIODA BYLA ZAPALONA, A TERAZ NIE POWINNA
  107.   SETB P3.5
  108.   BREAK: ;TEGO I PONIZSZEGO W ZASADZIE MOZNA BYLO UNIKNAC WOLAJAC WE WSZYSTKICH MIEJSCACH
  109.   ;RETI ZAMIAST LJMP BREAK I LJMP ENDINT, ALE JUZ ZOSTAWIAM STRUKTURE W STYLU SWITCHA Z C
  110.   ENDINT:
  111.   RETI ;KONIEC PRZERWANIA
  112. END
Add Comment
Please, Sign In to add comment