Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[asm] wyswietlanie liczb na wyswietlaczu segmentowym

23 Lis 2009 19:20 2789 2
  • Poziom 10  
    witam

    mam pytanie z wiązku z tym żeby na wyświetlaczu segmentowym liczby 123456 przesuwały mi się w prawo jak na banerach reklamowych z lewej do prawej

    oto jest napisany program wyświetlania liczb 123456 i nie wiem jakie komendy wpisać aby to się przesuwało:

    Code:
    LJMP START
    
    ORG 100H
    START:
    MOV R0,#CSDS
    MOV R1,#CSDB
    MOV A,#00000001B
    MOVX @R0,A
    MOV A,#001111101B
    MOVX @R1,A
    CLR P1.6
    SETB P1.6
    MOV R0,#CSDS
    MOV R1,#CSDB
    MOV A,#00000010B
    MOVX @R0,A
    MOV A,#001101101B
    MOVX @R1,A
    CLR P1.6
    SETB P1.6
    MOV R0,#CSDS
    MOV R1,#CSDB
    MOV A,#00000100B
    MOVX @R0,A
    MOV A,#001100110B
    MOVX @R1,A
    CLR P1.6
    SETB P1.6
    MOV R0,#CSDS
    MOV R1,#CSDB
    MOV A,#00001000B
    MOVX @R0,A
    MOV A,#001001111B
    MOVX @R1,A
    CLR P1.6
    SETB P1.6
    MOV R0,#CSDS
    MOV R1,#CSDB
    MOV A,#00010000B
    MOVX @R0,A
    MOV A,#001011011B
    MOVX @R1,A
    CLR P1.6
    SETB P1.6
    MOV R0,#CSDS
    MOV R1,#CSDB
    MOV A,#00100000B
    MOVX @R0,A
    MOV A,#000000110B
    MOVX @R1,A
    CLR P1.6
    SETB P1.6
    LJMP START


    dzięki za pomoc
  • Poziom 15  
    na początek przeanalizuj ten przykład:

    Code:
    ;************************************************
    
    ;LEKCJA   6   - WYŚWIETLACZ 7-SEGMENTOWY
    ;PRZYKŁAD 3   - PRZEGLĄDANIE WYŚWIETLACZA
    ;************************************************

    SEG_ON EQU   P1.6   ;włączenie wyświetlacza 7-segm.

    ;Stałe używane w programie
    ONE   EQU   006H      ;kod cyfry 1
    TWO   EQU   05BH      ;kod cyfry 2
    THREE   EQU   04FH      ;kod cyfry 3
    FOUR   EQU   066H      ;kod cyfry 4
    FIVE   EQU   06DH      ;kod cyfry 5
    SIX   EQU   07DH      ;kod cyfry 6
    SEVEN   EQU   007H      ;kod cyfry 7

    ;Pamięć wewnętrzna RAM
    DISPLAY      EQU   30H

    ;**************************************
       LJMP   START
       ORG   100H
    START:

       MOV   DISPLAY,#ONE      ;wpisz kody cyfr
       MOV   DISPLAY+1,#TWO      ;dla kolejnych
       MOV   DISPLAY+2,#THREE   ;wskaźników
       MOV   DISPLAY+3,#FOUR
       MOV   DISPLAY+4,#FIVE
       MOV   DISPLAY+5,#SIX
       MOV   DISPLAY+6,#SEVEN

    LOOP_DISP:         ;ustawienie danych do
                ;wyświetlania na 1-szym
                ;wskaźniku
       MOV   R0,#DISPLAY     ;adres pobierania kodów
       MOV   R2,#7        ;licznik-il. wskaźników
       MOV   R3,#00000001B ;wybór wskaźnika
                  ;-kod 1 z 8

    LOOP:
       SETB   SEG_ON      ;wyłącz poprzedni
                ;wskaźnik

       MOV   R1,#CSDS   ;adres wyboru wskaźnika
       MOV   A,R3      ;aktualny wskaźnik (1z8)
       MOVX   @R1,A      ;wpisz nr wskaźnika

       RL   A      ;obrót w lewo - numer
       MOV   R3,A      ;następnego wskaźnika
                ;(kod 1 z 8)

       MOV   R1,#CSDB   ;adres danych wskaźnika
       MOV   A,@R0      ;kod aktualnego wskaźnika
       MOVX   @R1,A      ;wpisz kod segmentów

       INC   R0      ;adres pobierania kodu
                ;dla następnego wskaźnika

       CLR   SEG_ON      ;włączenie wskaźnika

       MOV   A,#1      ;czas 1ms - świecenie
       LCALL   DELAY_MS   ;jednego wskaźnika

       DJNZ   R2,LOOP      ;kolejne świecenie
                ;siedmiu wskaźników

       SJMP   LOOP_DISP   ;zacznij od wskaźnika 1

  • Poziom 10  
    to jest praktycznie to samo tylko w odwrotnej kolejności a chodzi mi o to aby te cyferki się poruszały jak na banerach reklamowych. że 6 schodzi do lewej i pojawia się za chwilę po prawej i każda liczba mają być ruchome liczba 6 schodzi do segmentu (1-2-3) i tak dalej liczba 5 (6-1-2-3)