[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&#369;en egy szöveget szeretnék kiiratni. Tehát két 
> bet&#369; 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&#369;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&#337;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&#337;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&#369;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&#337;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&#369; é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&#369; 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&#337;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