[elektro] ASM30, karakter hivatkozas
hg12345
hg12345 at freemail.hu
Fri Aug 29 10:12:11 CEST 2008
Horvath Zsolt <hozso_001 at freemail.hu> írta:
> hg12345 írta:
> > Az ascii '*' de ez is konstans mint bármi más ezért kell elé a
konstans
> > jelzés: #.
> > Ascii konstans csak byte-os lehet ez nem ismeri a kiterjesztett
> > betötérképet.
>
> Aha, ez világos. És logikus.
>
> > Ha két karaktert szeretnél elhelyezni egy regiszterben
> > az már string de stringet nem igy kell kezelni DS51307G page 58,
> > valahol elhelyezed a memóriában és egy pointerrel (indirekt
cimzés)
> > végig olvasod.
> >
>
> De én nem szeretném a memóriába tenni. ( TBLRD-el csináltam
már
> ilyet, HD44780
> definiálható karaktereit így olvasom ki a memóriából. )
> Én most egyszerűen egy szöveget szeretnék kiiratni. Tehát két
> betű ASCII kódját
> szeretném beleírni egy munkaregiszterbe, de nem akarom az ASCII
> táblázatból visszakeresni
> a kódokat. Azt hittem, az működik, hogy megadom a két karaktert és
a
> kódokat beírja, de
> ezek szerint nem. Akkor most - ha nem akarom a memóriába letenni
az
> adatokat - csináljak
> belőlük konstansokat ( ASCII kódokkal ) és azokat másoljam a W-be?
( Ez
> nem túl elegáns. )
>
> > Mint látod a string jelzése "****", de ez nem konstans! Ezért nem
> > tudod konstansként megadni, az ilyen megadáshoz csak terület
> > feltöltésnél használható és nem jár semmilyen egyébb hatással. Ha
> > szeretnéd késöbb használni akkor gondoskodnod egy hivatkozási
> > címről, ez lesz a pointer vagy cim amire indirekt cimzéssel
hivatkozol.
> >
> > Ez nem ennek az ASM-nek a sajátossága, minden ASM forditó igy
> > müködik.
> >
> > Ha tárolt területes megoldást választod, akkor ennél a
kontrollernél
> > elöre kell gondolkozni! Két megoldás van ami nem egyszerűsiti meg
a
> > dolgodat.
> > Mivel a program memória 24 bites (3byte) és a program memóriá
> > tetszöleges 32K szegmense belapozható a RAM területre, de ez 16
> > bites :-) igy itt csak az alsó 16 bitet látod a FLASH-ből. (ennek
megvan
> > oka!).
> >
>
> Nemrég - teljesen véletlenül - belenéztem az ERRATA-ba. Azt írta,
> ennél a módszernél
> komoly gondok lehetnek. Most nem emlékszem a konkrét
problémára, de
> hüledeztem rajta.
Valamit félre olvastál, mert ebben nem lehet hiba, ha igen akkor a C-vel
elöállított kódok nem fognak müködni!!!! A C-ben hogy egyszerű és
gyors és kompatibilis legyen a kód más implementációkkal minden
konstanst PSV megoldással érnek el.
> > Ha TBLWR és TBLRD utasitásokkal éred el a FLASH-t akkor mind a
3
> > byte-t használhatod tárolásra, kicsit lassabb de tömörebb tárolást
> > biztosit, de a program hiba esetén itt végrehajtható kód
lesz, .PSTRING
> >
>
> > Ha a lapozást használod és RAM szerű elérést, igy .STRING-t kell
> > használni, ilyenkor a FLASH-ban NOP utasitások sorozatát látja a
> > program. Sokkal gyorsabb és egyszerübb a kiolvasás, de nem
szabad
> > megfeledkezni a lapozás engedélyezéséről CORCON.PSV=1és a
> > PSVPAG regiszter beállításáról. (he nem engedélyezed akkor
hardware
> > memoria trap hibát generál minden olvasásnál :-().
> >
> >
> >
> >
> > Ha mindenképpen ragaszkodsz a fenti elhatározásodhoz
> > akkor az igy néz ki :
> > mov # '1' | ('2'<<8) , W0 ;//ez tényleg lefordul
> >
> > ez lesz az eredmény :
> > 26C8 232310 mov.w #0x3231,0x0000
> >
>
> Ez az! Valami ilyesmire gondoltam. Ez is elég 'érdekes', de jobb,
> mint két karakterenként
> esetleg konstanst definiálni... Köszönöm!
>
#define Ascii2(x,y) ( ((x)<<8)|(y) )
>
> Üdv.: Horváth Zsolt
>
> -----------------------------------------
> elektro[-flame|-etc]
>
_______________________________________
Micsoda akció! Több mint 500 könyv 50% kedvezménnyel az Alexandra Könyváruházakban 2008. augusztus 15. és szeptember 30. között! Nehogy lemaradjon!
http://ad.adverticum.net/b/cl,1,6022,281996,342125/click.prm
More information about the Elektro
mailing list