[elektro] PIC ASM kérdés
joe-
jozsig at gmail.com
Wed Sep 26 02:39:51 CEST 2012
2012-09-25 22:24 keltezéssel, Varsanyi Peter írta:
>
>
> Sziasztok!
>
>
> Egy ismerõs kérdését tolmácsolnám, mert nem vagyok otthon a PIC-es
> dolgokban. Van egy ASM forrása, benne egy indexelt, táblázatos ugrás. Ha a
> kód az elsõ 256 byte-ra kerül, jól mûködik. Ha 256 byte fölé, a szimulátor
> szerint jól megy, de a valóságban megkergül a proci. Mi lehet a hiba? A
> proci: 16F1823 A kódrészlet:
>
> Counter:
> INCF count,F ;55
> MOVLW b'00000111' ;56
> ANDWF count,W ;57
> ADDWF PCL,F ;58
> ;
> GOTO count1 ;60
> GOTO count2
> GOTO count3
> GOTO count4
> GOTO count5
> GOTO count6
> GOTO count7
> GOTO count8
> ;
>
> Köszi:
>
> Pepe
>
Hajdanán én a laphatárokkal ugy bántam el,
-hogy a 0. lapon nyitottam egy szubrutint, és ebbe beleirtam a kivánt
goto utasitások sorát ugy, hogy ezek csak a byte-nyi hasznos adatot
tartalmazták, és ezeket felolvastam.
-a laphatárra tett feltételes ugro utasitásokkal a felsö két bitje
szerint, a laphatárokon átsétált, vagy ott maradt a prg-számlálo.
-ezután az adott lapon, a maradék 6 bittel megkerestem a lapon lévö
(max 64 soros) táblázatot és lapon belül oda ugrottam.
-ittt valojában a korábbi szubrutin folytatása volt, aminek vége (vagy
láncba kötött vége) egy program(részlet) vége is volt egyben.
/a prg vége akár egy (szinte) tetszöleges táblázat(elem) felolvasása
is lehetett/
A visszatérö program az elején emlitett szubrutin ujrahivásával
ciklikusan ismételte a dolgot.
A szubrutin táblázatának következö (vagy valamelyik) sora került
sorra, ez ram-memoriábol lett fentiek szerint, felolvasva, feldolgozva.
Az én multitaskos rendszerem ezen alapult, de ekkor 4 darab RAM
regiszterpár volt, és az emlitett szubrutin bevezetésénél, mindig a
következö párra (makro-programcim és munkaregiszter) cserélödött az
aktuális.
A 0. lapon volt egy makro-programtörzs, amivel az aktuális következö
szubrutin(vég) elvégezte a pillanatnyi feladatot.
A dinamikus szubrutin-belépésnek köszönhetöen, volt task, ami Pl.:csak
egy külsö feltételt vizsgált és egy-helyben toporgott, és
teljesülésekor megnyitott, egy task-megnyito taskot. :-)
A lapokat funkcio szerit is csoportositottam, igy pl.: a 2. lapon a
(két byteos) aritmetika volt, és a 3. lapon pedig a lefuto jellegü,
külsö, eseti ciklikussággal müködö valamik. :-)
........................................................................
Hát a kérdés azt hiszem nem egészen ez volt. Talán inkább csak ennyit
kellett volna:
A felolvasott cim két felsö bitjével átsétálam(vagy nem) a laphatárokon,
és a maradék 6 bit szerint továbbléptem az aktuális lapon.
joe
More information about the Elektro
mailing list