Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.02 KB | None | 0 0
  1. ;************************************************
  2. ;LEKCJA   6 - WYŚWIETLACZ 7-SEGMENTOWY
  3. ;PRZYKŁAD 3    - PRZEGLĄDANIE WYŚWIETLACZA
  4. ;************************************************
  5.  
  6. SEG_ON EQU  P1.6    ;włączenie wyświetlacza 7-segm.
  7.  
  8. ;Stałe używane w programie
  9. ONE EQU 006H        ;kod cyfry 1
  10. TWO EQU 05BH        ;kod cyfry 2
  11. THREE   EQU 04FH        ;kod cyfry 3
  12. FOUR    EQU 066H        ;kod cyfry 4
  13. FIVE    EQU 06DH        ;kod cyfry 5
  14. SIX EQU 07DH        ;kod cyfry 6
  15. SEVEN   EQU 007H        ;kod cyfry 7
  16.  
  17. ;Pamięć wewnętrzna RAM
  18. DISPLAY     EQU 30H
  19.  
  20. ;**************************************
  21.     LJMP    START
  22.  
  23.     ORG 0BH
  24.     LJMP INT_T0
  25.  
  26.     ORG 100H
  27. START:
  28.     MOV TMOD,#1
  29.     MOV R7,#20
  30.     MOV TL0,#00H
  31.     MOV TH0,#4CH
  32.     SETB EA
  33.     SETB ET0
  34.     SETB TR0
  35.  
  36.     MOV DISPLAY,#5       ;wpisz kody cyfr
  37.     MOV DISPLAY+1,#0      ;dla kolejnych
  38.     MOV DISPLAY+2,#3    ;wskaźników
  39.     MOV DISPLAY+3,#4
  40.     MOV DISPLAY+4,#2
  41.     MOV DISPLAY+5,#1
  42.     MOV DISPLAY+6,#SEVEN
  43.  
  44. LOOP_DISP:          ;ustawienie danych do
  45.                 ;wyświetlania na 1-szym
  46.                 ;wskaźniku
  47.     MOV R0,#DISPLAY   ;adres pobierania kodów
  48.     MOV R2,#6         ;licznik-il. wskaźników
  49.     MOV R3,#00000001B ;wybór wskaźnika
  50.                   ;-kod 1 z 8
  51.  
  52. LOOP:
  53.     SETB    SEG_ON      ;wyłącz poprzedni
  54.                 ;wskaźnik
  55.  
  56.     MOV R1,#CSDS    ;adres wyboru wskaźnika
  57.     MOV A,R3        ;aktualny wskaźnik (1z8)
  58.     MOVX    @R1,A       ;wpisz nr wskaźnika
  59.  
  60.     RL  A       ;obrót w lewo - numer
  61.     MOV R3,A        ;następnego wskaźnika
  62.                 ;(kod 1 z 8)
  63.  
  64.     MOV R1,#CSDB    ;adres danych wskaźnika
  65.     MOV A,@R0       ;kod aktualnego wskaźnika
  66.  
  67.     LCALL GET_COD7
  68.  
  69.     MOVX    @R1,A       ;wpisz kod segmentów
  70.  
  71.     INC R0      ;adres pobierania kodu
  72.                 ;dla następnego wskaźnika
  73.  
  74.     CLR SEG_ON      ;włączenie wskaźnika
  75.  
  76.     MOV A,#1        ;czas 1ms - świecenie
  77.     LCALL   DELAY_MS    ;jednego wskaźnika
  78.  
  79.     DJNZ    R2,LOOP     ;kolejne świecenie
  80.                 ;siedmiu wskaźników
  81.  
  82.     SJMP    LOOP_DISP   ;zacznij od wskaźnika 1
  83.  
  84.  
  85.  
  86. INT_T0:
  87.     ORL TL0,#00H
  88.     MOV TH0,#4CH
  89.     DJNZ R7,EXIT
  90.     MOV R7,#20
  91.  
  92.     CPL P1.7
  93.     MOV R0,#DISPLAY
  94.     INC @R0
  95.     CJNE @R0,#10,EXIT
  96.  
  97.     MOV @R0,#0
  98.     INC R0
  99.     INC @R0
  100.     CJNE @R0,#6,EXIT
  101.  
  102.     MOV @R0,#0
  103.     INC R0
  104.     INC @R0
  105.  
  106.    
  107. EXIT:
  108.     RETI
  109.  
  110. ;**************************************
  111. ;Podprogram zamienia cyfrę na kod 7-segmentowy
  112. GET_COD7:
  113.     ANL A,#0FH      ;tabela kodów 0..15
  114.     INC A       ;pomiń rozkaz RET
  115.     MOVC    A,@A+PC     ;pobierz kod
  116.     RET
  117.  
  118. COD_7SEG:
  119.     DB  03FH        ;kod znaku 0
  120.     DB  006H        ;kod znaku 1
  121.     DB  05BH        ;kod znaku 2
  122.     DB  04FH        ;kod znaku 3
  123.     DB  066H        ;kod znaku 4
  124.     DB  06DH        ;kod znaku 5
  125.     DB  07DH        ;kod znaku 6
  126.     DB  007H        ;kod znaku 7
  127.     DB  07FH        ;kod znaku 8
  128.     DB  06FH        ;kod znaku 9
  129.     DB  077H        ;kod znaku A
  130.     DB  07CH        ;kod znaku b
  131.     DB  039H        ;kod znaku C
  132.     DB  05EH        ;kod znaku d
  133.     DB  079H        ;kod znaku E
  134.     DB  071H        ;kod znaku F
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement