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.

Asembler - co zrobić aby pętla powtarzała się przez np 1s?

krzysiek_plus 25 Lis 2008 18:26 2332 7
  • #1 25 Lis 2008 18:26
    krzysiek_plus
    Poziom 9  

    Wtam mam problem w wykonaniu petli zeby dzialala ona przez pewien czas np. 1s. a dokladniej zeby petla AKCJA1 powtarzala sie przez 1s nastepnie AKCJA2 rownierz przez sekunde i tak do AKCJA19 czyli AKCJA() powinna wykonywac program w kolko przez 1s i skoczyc do kolejnej AKCJI
    Oto moj program:

    Code:

       LJMP AKCJA1
       ORG 100H
    AKCJA1:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA2:
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA3:
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA4:
       LCALL KROK1
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA5:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA6:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11




       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA7:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA8:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA9:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA10:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA11:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA12:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA13:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA14:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
    AKCJA15:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK15
       LCALL KROK16
    AKCJA16:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK16
    AKCJA17:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
    AKCJA18:
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
    AKCJA19:
       LCALL KROK1
       LCALL KROK2
       LCALL KROK3
       LCALL KROK4
       LCALL KROK5
       LCALL KROK6
       LCALL KROK7
       LCALL KROK8
       LCALL KROK9
       LCALL KROK10
       LCALL KROK11
       LCALL KROK12
       LCALL KROK13
       LCALL KROK14
       LCALL KROK15
       LCALL KROK16
       LJMP AKCJA3




    KROK1:
       MOV R0,#CSDS
       MOV A,#00000001B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000100B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK2:
       MOV R0,#CSDS
       MOV A,#00000001B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000010B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK3:
       MOV R0,#CSDS
       MOV A,#00000001B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000001B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK4:
       MOV R0,#CSDS
       MOV A,#00000010B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000001B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK5:
       MOV R0,#CSDS
       MOV A,#00000100B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000001B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK6:
       MOV R0,#CSDS
       MOV A,#00001000B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000001B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK7:
       MOV R0,#CSDS
       MOV A,#00010000B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000001B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK8:
       MOV R0,#CSDS
       MOV A,#00100000B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000001B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK9:
       MOV R0,#CSDS
       MOV A,#00100000B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00100000B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK10:
       MOV R0,#CSDS
       MOV A,#00100000B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00010000B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK11:
       MOV R0,#CSDS
       MOV A,#00100000B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00001000B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK12:
       MOV R0,#CSDS
       MOV A,#00010000B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00001000B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK13:
       MOV R0,#CSDS
       MOV A,#00001000B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00001000B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK14:
       MOV R0,#CSDS
       MOV A,#00000100B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00000100B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK15:
       MOV R0,#CSDS
       MOV A,#00000010B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00001000B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET
    KROK16:
       MOV R0,#CSDS
       MOV A,#00000001B
       MOVX @R0,A
       MOV R1,#CSDB
       MOV A,#00001000B
       MOVX @R1,A
       CLR P1.6
       SETB P1.6
       RET

    0 7
  • #2 25 Lis 2008 19:07
    ZbeeGin
    Poziom 38  

    Skorzystaj z przerwań generowanych przez licznik TIMER1 (lub TIMER2 jeśli jest dostępny).

    0
  • #3 25 Lis 2008 19:09
    elektryk
    Poziom 42  

    ZbeeGin napisał:
    Skorzystaj z przerwań generowanych przez licznik TIMER1 (lub TIMER2 jeśli jest dostępny).
    To raczej wyższa szkoła jazdy, bo program będzie przypominać sheduler w systemie operacyjnym, a autor nie wygląda na tyle zorientowanego żeby samemu grzebać w stosie. Ja bym w każdej funkcji zastosował pętlę testującą pojawienie się flagi przepełnienia timera (ew trzeba dobrać preskaler lub zliczać "ileś" tam wystąpień flagi).

    0
  • #4 26 Lis 2008 18:02
    krzysiek_plus
    Poziom 9  

    Tak jestem poczatkujacym programista i prosil bym o podpowiedz badz przyklad w jaki sposb mam to zaprogramowac

    0
  • #5 26 Lis 2008 18:53
    Dr.Vee
    VIP Zasłużony dla elektroda

    Zależy z jaką dokładnością chcesz odmierzać te sekundy... Napisz lepiej co ten program ma robić.

    Przy okazji - rozumiem, że w sekwencji tych danych jest jakaś prawidłowość - nie lepiej opisać tego jakąś strukturą danych?

    Pozdrawiam,
    Dr.Vee

    0
  • #6 26 Lis 2008 19:03
    krzysiek_plus
    Poziom 9  

    program ma byc tej struktury Akcja1 ma sie powtarzac przez 1s po upywie sekundy ma przeskoczyc do akcji2 i tak pokolei az do tak akcji19.

    -1
  • #7 26 Lis 2008 19:48
    zumek
    Poziom 39  

    Weź kalkulator, policz ile cykli maszynowych trwa wykonanie 1 akcji, dodaj prosty licznik w każdej akcji i powtarzaj daną akcję tak długo, aż upłynie 1 sekunda.
    Szkoda że nie wspomniałeś, że ten program ma "śmigać" na Zestawie dydaktycznym DSM-51 :|

    Piotrek

    0
  • #8 26 Lis 2008 20:15
    krzysiek_plus
    Poziom 9  

    Z tym to niemam problemu bo juz wykonalem to w ten sposób. Ale mi by bardziej chodzilo o jakis podprogram napisac. Jakieś pomysły??
    a o tym zestawie zapomnialem hehe.

    0