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

DSM-51 - Timery i zapalanie diody

Warlok18 13 Kwi 2016 16:07 786 2
  • #1 13 Kwi 2016 16:07
    Warlok18
    Poziom 16  

    Witam.

    Mam problem z programem, w którym po zliczeniu ileś tam przyciśnięć ma nam wskoczyć do TF1 1(przepełnienie) i zapalić się dioda.

    Oto mój program:

    LED EQU P1.7
    KEY_COD EQU 00111111B


    T0_G EQU 0 ;GATE
    T0_C EQU 0 ;COUNTER/-TIMER
    T0_M EQU 0 ;MODE (0..3)
    TIM0 EQU T0_M+T0_C*4+T0_G*8


    T1_G EQU 0 ;GATE
    T1_C EQU 1 ;COUNTER/-TIMER
    T1_M EQU 0 ;MODE (0..3)
    TIM1 EQU T1_M+T1_C*4+T1_G*8

    TMOD_SET EQU TIM0+TIM1*16


    TH1_SET EQU 0
    TL1_SET EQU 0

    LJMP START
    ORG 100H
    START:

    MOV TMOD,#TMOD_SET
    MOV TL1,#TL1_SET
    MOV TH1,#TH1_SET
    SETB TR1

    MOV R0,#CSDS
    MOV A,#KEY_COD
    MOVX @R0,A
    LJMP LOOP

    LOOP:
    JNB TF1,LOOP
    CLR TF1
    CPL LED

    SJMP LOOP



    Nie wiem w jaki sposób ten timer ma zliczać przyciśnięcia(program, który dostałem jako praca domowa)., skoro nigdzie nie ma sumowania przyciśnięć. Chciałem to zrobić w trybie 0, ale nie wiem gdzie ustawić ilośc zliczeń po których ma załączyć się dioda, a w trybie 2 wpisując do TL1_SET 256-10 nic się nie dzieje.

    Dziękuję i pozdrawiam.

    0 2
  • #2 13 Kwi 2016 19:05
    ZbeeGin
    Poziom 38  

    http://www.ime.uz.zgora.pl/mkoziol/mcs51/budowa51/liczniki.htm

    Warlok18 napisał:
    skoro nigdzie nie ma sumowania przyciśnięć.

    Chodzi o to by sprzętowy licznik zliczał przyciśnięcia. Po jego przepełnieniu flaga TFx się ustawi, co oznaczać będzie zliczenie .
    Dlatego wypada wykorzystać wejście Tx do taktowania licznika. Można to zrobić w nieco inny sposób, sterując programowo bitem TRx ale musiałbyś zachować dokładne reżimy czasowe. Inaczej licznik ci zliczy n-przyciśnięć, zamiast jednego.


    Warlok18 napisał:
    Chciałem to zrobić w trybie 0, ale nie wiem gdzie ustawić ilośc zliczeń po których ma załączyć się dioda

    Bardzo prosto. Licznik liczy w przód od 0 do max_licznika. Po zliczeniu max_licznika+1 wraca na 0 i ustawia flagę. Wystarczy do licznika wpisywać wartość do zliczenia jako: max_licznika odjąć ile_zliczyć.
    W trybie 0 musisz to zrobić programowo sprawdzając stan flagi lub w przerwaniach i przeliczać wartość zgodnie z max_licznika. Pamiętaj, że tryb 0 skraca licznik do 13bitów.
    W trybie 2 licznik zrobi to sam i wystarczy przeliczoną wartość wpisać w THx.

    ps. Szkoda, że w szkołach dalej straszą dzieci DSM-51.

    0
  • #3 14 Kwi 2016 09:51
    Vinnic
    Poziom 15  

    Cytat:
    ps. Szkoda, że w szkołach dalej straszą dzieci DSM-51.


    A no tak to już jest gdy starszy nauczyciel pozna DSM-51, to później już trudno mu się jest przestawić na coś innego.

    0