Pic Assembler

Miten saa helpoiten koodattua 15 sekunnin viiveen? Joitakin malleja oon löytänyt netistä, mutta ne on ollut sekunnin tai tunnin. Ei kai nyt sentään "sekunnin koodeja" copy/pastata 15 kertaa?
6429
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

555 kaikkein helpoin!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Äänestä
  • Pistän tähän ASSEMBLER-koodin, joka on tehty ATMEL-mikroon. Antaa tarkan sekunnin viiveen, kun kellotaajuus on 4 MHz.

    sek_viive: ldi r16, 0x15 ;viivearvojen asetus
    ulkokier: ldi r17, 0xFF
    keskikier: ldi r18, 0xF8
    sisäkier; dec r18 ;viiveen purku
    brne sisäkier
    dec r17
    brne keskikier
    dec r16
    brne ulkokier
    ret (jos on aliohjelma)

    Olisiko tästä ajatusapua. ATMEL-mikron koodinpätkiä laitan blogiini elektroniikkaabytane

    Äänestä

Niin eli tee siitä sekunnin viiveestä aliohjelma, jota kutsut silmukassa tarvittavan määrän.
ao. esimerkissä saattaa olla virheitä, en ole tehnyt pic-koodia, mutta jos siitä kävisi periaate ilmi.

...
movlw 15       ;w rekisteriin 15
movwf counter ;siirrä w rekisterin arvo muuttujaan

decfsz counter,1 ; vähennä muuttujasta 1, jos menee nollaksi, hyppää seuraavan rivin yli
goto delay_1_s
...
...

delay_1_s
... ; aliohjelma, jonka suoritus kestää sekunnin
return

Äänestä

Paljos sulla olikaan kellotaajuus?

Äänestä

Alla on yksinkertainen noin 15 sekunnin viive 4 tai 8 MHz:n PICille (en nyt muista kummalle). MPLABilla voit helposti testata ja simuloida sitä ja säätää viiveen tarkalleen haluamaksesi Stopwatchin kanssa. Ohjelmassa on kolme sisäkkäistä silmukkaa, joista ulommaista toistetaan 76 kertaa, sisempää 255 kertaa ja sisintä myös 255 kertaa.

Muuttujien määrittelyosassa:

v1   res   1
v2   res   1
v3   res   1

Ohjelmakoodissa:

viive   movlw   .76
   movwf   v3
viive1   movlw   .255
   movwf   v2
viive2   movlw   .255
   movwf   v1
viive3   decfsz   v1,f
   goto   viive3
   decfsz   v2,f
   goto   viive2
   decfsz   v3,f
   goto   viive1
   return

Kutsu ohjelmassa halutussa kohdassa:

   call   viive

Äänestä
  • kiitokset. Tässä tuli ammattilaisen neuvoa. Tällaista apua aina tarvitaan ja tällaisesta vois vaikka maksaa.

    Äänestä

Kommentoi aloitusta


peltsi kirjoitti:

Miten saa helpoiten koodattua 15 sekunnin viiveen? Joitakin malleja oon löytänyt netistä, mutta ne on ollut sekunnin tai tunnin. Ei kai nyt sentään "sekunnin koodeja" copy/pastata 15 kertaa?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu