Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $INCLUDE (REG52.INC)
  2.  
  3. ; PUNKT STARTOWY PROGRAMU
  4. ORG 0
  5. ;ALIASY DLA WYSWIETLACZA I DIÓD
  6. DANE  EQU P3.0
  7. CLOCK EQU P3.1
  8. LOAD  EQU P3.2
  9. OFF   EQU P3.3
  10.  
  11. SCL EQU P1.1
  12. SDA EQU P1.2
  13.  
  14. DIODA1 EQU P3.7
  15. DIODA2 EQU P3.6
  16. DIODA3 EQU P3.5
  17. DIODA4 EQU P3.4
  18. ;ALIASY DLA PRZYCISKÓW
  19. ESCAPE EQU P1.4
  20. UP    EQU P1.5
  21. DOWN  EQU P1.6
  22. ENTER EQU P1.7
  23. ;ALIASY DLA KOMÓREK PAMIECI PRZECHOWUJACYCH CYFRY
  24. CYFRA_WYBRANA   EQU 34h
  25. CYFRA1  EQU 30h
  26. CYFRA2  EQU 31h
  27. CYFRA3  EQU 32h
  28. CYFRA4  EQU 33h
  29.  
  30. ;USTAWIENIE POCZATKOWEJ WARTOSCI WYSWIETLACZA I ZEGARA
  31. INICJALIZACJA:
  32. MOV CYFRA_WYBRANA,#0
  33. MOV CYFRA1,#1
  34. MOV CYFRA2,#2
  35. MOV CYFRA3,#2
  36. MOV CYFRA4,#5
  37. ACALL USTAW_CZAS
  38.  
  39. ;GLOWNA PETLA PROGRAMU
  40. GLOWNA_PETLA:
  41.     ACALL POBIERZ_CZAS
  42.     ACALL AKTUALIZUJ_WYSWIETLACZ
  43.     ACALL OBSLUGA_KLAWISZY
  44.     SJMP GLOWNA_PETLA
  45.  
  46. ;WYSWIETLENIE ZAWARTOSCI KOMOREK PAMIECI Z CYFRAMI NA WYSWIETLACZU
  47. AKTUALIZUJ_WYSWIETLACZ:
  48.     MOV A,CYFRA4
  49.     ACALL WYSLIJ_NA_WYSWIETLACZ
  50.     MOV A, CYFRA3
  51.     ACALL WYSLIJ_NA_WYSWIETLACZ
  52.     MOV A,CYFRA2
  53.     ACALL WYSLIJ_NA_WYSWIETLACZ
  54.     MOV A,CYFRA1
  55.     ACALL WYSLIJ_NA_WYSWIETLACZ
  56.    
  57.     CLR LOAD
  58.     SETB LOAD
  59.     CLR OFF
  60.     RET
  61.  
  62. ;PODPROGRAM OBSLUGI KLAWISZY
  63. OBSLUGA_KLAWISZY:
  64.    ;WARUNEK WEJSCIA DO PETLI KLAWISZY
  65.     JNB ESCAPE, GLOWNA_PETLA_KLAWISZY
  66.     RET
  67.    
  68.     ;GLOWNA PETLA KLAWISZY
  69.     GLOWNA_PETLA_KLAWISZY:
  70.        ; ZAPALENIE ODPOWIEDNIEJ DIODY DLA EDYTOWANEJ CYFRY
  71.         ACALL USTAW_DIODY
  72.        ; ODSWIEZENIE WYSWIETLACZA
  73.         ACALL AKTUALIZUJ_WYSWIETLACZ
  74.        ; OPOZNIENIE
  75.         ACALL CZEKAJ
  76.        
  77.         ; OCZEKIWANIE NA NACISNIECIE PRZYCISKU
  78.         JNB UP, WCISNIETY_UP
  79.         JNB DOWN, WCISNIETY_DOWN
  80.         JNB ENTER, WCISNIETY_ENTER
  81.         SJMP GLOWNA_PETLA_KLAWISZY
  82.                
  83.                 ; OBSLUGA PRZYCISKU UP
  84.                 WCISNIETY_UP:
  85.                     MOV A,CYFRA_WYBRANA
  86.                     ADD A,#CYFRA1
  87.                     MOV R0, A
  88.                    
  89.                     MOV A,@R0
  90.                    ; NIE MOZNA ZWIEKSZYC POWYZEJ 9
  91.                     CJNE A,#9,ZWIEKSZ_CYFRE
  92.                     AJMP GLOWNA_PETLA_KLAWISZY
  93.                    
  94.                     ZWIEKSZ_CYFRE:
  95.  
  96.                     INC A
  97.                     MOV @R0,A
  98.                     AJMP GLOWNA_PETLA_KLAWISZY
  99.                    
  100.                 ; OBSLUGA PRZYCISKU DOWN
  101.                 WCISNIETY_DOWN:
  102.                     MOV A,CYFRA_WYBRANA
  103.                     ADD A,#CYFRA1
  104.                     MOV R0, A
  105.                    
  106.                     MOV A,@R0
  107.                    ; NIE MOZNA ZMNIEJSZYC PONIZEJ 0
  108.                     CJNE A,#0,ZMNIEJSZ_CYFRE
  109.                     AJMP GLOWNA_PETLA_KLAWISZY
  110.                    
  111.                     ZMNIEJSZ_CYFRE:
  112.                         DEC A
  113.                         MOV @R0,A
  114.                         AJMP GLOWNA_PETLA_KLAWISZY
  115.                
  116.                 ; OBSLUGA PRZYCISKU ENTER
  117.                 WCISNIETY_ENTER:
  118.                     MOV A,CYFRA_WYBRANA
  119.                     CJNE A,#3,PRZESUN_POZYCJE
  120.                     ACALL USTAW_CZAS
  121.                     ACALL ZERUJ_DIODY
  122.                     MOV CYFRA_WYBRANA,#0
  123.                     SJMP GLOWNA_PETLA
  124.                    
  125.                     PRZESUN_POZYCJE:
  126.                         CPL DIODA4
  127.                         INC CYFRA_WYBRANA
  128.                         AJMP GLOWNA_PETLA_KLAWISZY
  129.                        
  130. ; PODPROGRAM USTAWIENIA CZASU ZEGARA RTC
  131. USTAW_CZAS:
  132.     MOV A CYFRA3
  133.     RL A
  134.     RL A
  135.     RL A
  136.     RL A
  137.     ORL A,CYFRA4
  138.     ANL A,#07Fh
  139.     MOV R1,A
  140.    
  141.     MOV A,CYFRA1
  142.     RL A
  143.     RL A
  144.     RL A
  145.     RL A
  146.     ORL A,CYFRA2
  147.     MOV R2,A
  148.    
  149.     ACALL BIT_STARTU
  150.     MOV A,#0D0H
  151.     ACALL WYSLIJ_BAJT
  152.     MOV A,#000H
  153.     ACALL WYSLIJ_BAJT
  154.     MOV A,R1
  155.     ACALL WYSLIJ_BAJT
  156.     MOV A,R2
  157.     ACALL WYSLIJ_BAJT
  158.     ACALL BIT_STOPU
  159.     RET
  160.    
  161. ; PODPROGRAM POBRANIA CZASU ZEGARA RTC
  162. POBIERZ_CZAS:
  163.     MOV A,#000H
  164.     ACALL POBIERZ_WARTOSC_ZEGARA
  165.     MOV R2,A
  166.        
  167.     ANL A,#00FH
  168.     MOV CYFRA4,A
  169.        
  170.     MOV A,R2
  171.     ANL A,#070H
  172.     RR A
  173.     RR A
  174.     RR A
  175.     RR A
  176.     MOV CYFRA3,A
  177.        
  178.     MOV A,#001H
  179.     ACALL POBIERZ_WARTOSC_ZEGARA
  180.     MOV R2,A
  181.     ANL A,#00Fh
  182.     MOV CYFRA2,A
  183.        
  184.     MOV A,R2
  185.     ANL A,#070H
  186.     RR A
  187.     RR A
  188.     RR A
  189.     RR A
  190.     MOV CYFRA1,A
  191.     RET
  192. ; PODPROGRAM POBRANIA KOMORKI PAMIECI
  193. POBIERZ_WARTOSC_ZEGARA:
  194.         MOV R2,A
  195.         ACALL BIT_STARTU
  196.         MOV A,#0D0h
  197.         ACALL WYSLIJ_BAJT
  198.         MOV A,R2
  199.         ACALL WYSLIJ_BAJT
  200.         ACALL BIT_STARTU
  201.         MOV A,#0D1H
  202.         ACALL WYSLIJ_BAJT
  203.         ACALL ODBIERZ_BAJT
  204.         ACALL BIT_STOPU
  205.         RET
  206. ; WYSLANIE BITU STARTU NA MAGISTRALE I2C
  207. BIT_STARTU:
  208.     SETB    SCL
  209.     SETB    SDA
  210.     CLR     SDA
  211.     CLR     SCL
  212.     RET
  213. ;WYSLANIE BITU STOPU NA MAGISTRALE I2C
  214. BIT_STOPU:
  215.     CLR     SCL
  216.     CLR     SDA
  217.     SETB    SCL
  218.     SETB    SDA
  219.     RET
  220. ;WYSLANIE BITU ACK NA MAGISTRALE ACK
  221. BIT_POTWIERDZENIA:
  222.     SETB    SDA
  223.     BIT_POTWIERDZENIA_CZEKAJ:
  224.         JB      SDA,BIT_POTWIERDZENIA_CZEKAJ
  225.         SETB SCL
  226.         CLR SCL
  227.     RET
  228. ;WYSLANIE 1 BAJTU DANYCH Z AKUMULATORA NA MAGISTRALE I2C
  229. WYSLIJ_BAJT:
  230.     MOV R0,#8
  231.     WYSLIJ_BAJT_NASTEPNY_BIT:
  232.         RLC A
  233.         MOV SDA,C
  234.         SETB SCL
  235.         CLR SCL
  236.         DJNZ R0,WYSLIJ_BAJT_NASTEPNY_BIT
  237.         ACALL BIT_POTWIERDZENIA
  238.         RET
  239. ;ODEBRANIE 1 BAJTU DANYCH Z I2C DO AKUMULATORA
  240. ODBIERZ_BAJT:
  241.     MOV R0,#8
  242.     ODBIERZ_BAJT_NASTEPNY_BIT:
  243.         MOV C,SDA
  244.         RLC A
  245.         SETB SCL
  246.         CLR SCL
  247.         DJNZ R0,ODBIERZ_BAJT_NASTEPNY_BIT
  248.         RET
  249.    
  250. ;PODPROGRAM OPOZNIAJACY
  251. CZEKAJ:
  252.     MOV R0,#0
  253.     MOV R1,#0
  254.         CZEKAJ_PETLA:
  255.         DJNZ R0,CZEKAJ_PETLA
  256.         DJNZ R1,CZEKAJ_PETLA
  257.         RET
  258. ;PODPROGRAM GASZACY WSZYSTKIE DIODY
  259. ZERUJ_DIODY:
  260.     SETB    DIODA1
  261.     SETB    DIODA2
  262.     SETB    DIODA3
  263.     SETB    DIODA4
  264.     RET
  265. ;ZAPALENIE DIODY ODPOWIADAJACEJ MODYFIKOWANEJ CYFRZE
  266. USTAW_DIODY:
  267. MOV A,CYFRA_WYBRANA
  268. WLACZ_DIODA1:
  269.     CJNE A,#0,WLACZ_DIODA2
  270.     ACALL ZERUJ_DIODY
  271.     CLR DIODA1
  272.     RET
  273. WLACZ_DIODA2:
  274.     CJNE A,#1,WLACZ_DIODA3
  275.     ACALL ZERUJ_DIODY
  276.     CLR DIODA2
  277.     RET
  278. WLACZ_DIODA3:
  279.     CJNE A,#2,WLACZ_DIODA4
  280.     ACALL ZERUJ_DIODY
  281.     CLR DIODA3
  282.     RET
  283. WLACZ_DIODA4:
  284.     ACALL ZERUJ_DIODY
  285.     CLR DIODA4
  286.     RET
  287.  
  288. ;WYSLANIE DO WYSWIETLACZA CYFR Z REJESTROW
  289. WYSLIJ_NA_WYSWIETLACZ:
  290.     MOV     DPTR, #TABLICA  
  291.     MOVC        A, @A+DPTR 
  292.     MOV      R0, #8    
  293.     NASTEPNY:
  294.             RLC     A          
  295.         MOV     DANE, C    
  296.         CLR     CLOCK      
  297.         SETB    CLOCK      
  298.         DJNZ    R0, NASTEPNY       
  299.     RET
  300.  
  301. ;TABLICA WARTOSCI ZNAKOW DLA WYSWIETLACZA 7-SEGMENTOWEGO
  302. TABLICA:
  303.     DB 03H ; = 0
  304.     DB 9FH ; = 1
  305.     DB 25H ; = 2
  306.     DB 0DH ; = 3
  307.     DB 99H ; = 4
  308.     DB 49H ; = 5
  309.     DB 41H ; = 6
  310.     DB 1FH ; = 7
  311.     DB 01H ; = 8
  312.     DB 09H ; = 9
  313. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement