Zaslal: čt květen 11 2006, 14:13 Předmět: AT89C2051 a jeho PC
Jak pracuje Program Counter u tohoto (a 8951 podobných) procesorů?
V pdf příručce popisující instrukční sadu jsem se dočetl, že různé instrukce jsou různě dlouhé (od jednoho do tří bajtů). Jak jsou potom seřazené?
U PICu mi to bylo jasné - co 14bit. instrukce to adresovatelný "řádek" programu. Adresovat PC čítač do poloviny instrukce je zhola nemožné.
Připadá mi, jako kdybych mohl na 8951 neúmyslným použitím např.funkce ACALL "natočit" PC přesně doprostřed instrukce, když bude v ROMce "rozlezlá" přes tři bajty..
Jak to funguje? Když procesor narazí na Opcode dané instrukce, nejspíš se dozví o kolik bajtů se má PC posunout (délka dané instrukce je naštěstí konstantní) ale co když použiju funkci ACALL?
Zrejme dobre nechapes instrukci ACALL.
Instrukce slouzi pro kratke volani podprogramu (pouze 2kB), takze jejim
parametrem je prima adresa kodu podprogramu ktery musi koncit instrukci RET.
Založen: Dec 03, 2004 Příspěvky: 441 Bydliště: Krnov
Zaslal: čt květen 11 2006, 17:33 Předmět:
tak horký to není jak píšeš instrukce má skutečně od 1 do 3 bytů a zpravidla je to způsobeno tím co vlastně ta instrukce dělá ! asi ses trochu nechal zmást jeden byte obsahuje kod instrukce a těch je 00h až po ffh a zbytek záleží na instrukci samotné pokud instrukce pracuje i jinými registry než systémovými musí určit vlastně s jakými a ta jsou ty další 1 až dva byte kodu ! viz tebou míněná instrukce acall kád je pak F1h + adresa 11bitová . Mislím že by sis mněl napsat nějaký jednoduchý prográmek a spusti simulaci a bude ti to jasné !
Založen: Dec 03, 2004 Příspěvky: 441 Bydliště: Krnov
Zaslal: čt květen 11 2006, 17:45 Předmět:
ještě tak mimo soutěž tvuj dotaz postrádá loguku pokut používaš nějaký kompilátor tak to vědět nepotřebujěš ! jedíný případ je že chceš přímo mněnit pc podle vlastního uvážení na základě toho skákat v programovém kodu ?! ale i tak to znamená vytvořit vlastní kompilátor ?!
takže nechápu smyslnost ?
Zaslal: čt květen 11 2006, 17:55 Předmět: Pro eljaro
Asi si nebudeme rozumet, o jakem jadre pises???
Instrukce ACALL u vsech xx51 slouzi vyhradne k volani podprogramu a
jeji strojovy kod ma 2 byty /aaa10001/aaaaaaaa/,
doufam ze tady nebudu vyucovat zaklady programovani jadra x51.
eljaro: Ano, chci si vytvořit pro 8951 vlastní kompilátor.Hlavně mě zajímá jak to pracuje - tj.je PC na aktuálně čtené adrese FLASH ROM nezávislý? Nebo se posouvá podle Opcode (tedy prvního byte) instrukce?
Ano, pri normalnim behu se PC zvysuje o tolik bytu kolik jich ma instrukce na kterou ukazuje (to je dane).
V pripade skoku (tech je u x51 nejvice (1) pouziva kazdy kompilator navesti (pro ziskani relativni adresy kam ma skocit) a ta je operandem instrukce, tim se zabrani skoku do neznama.
Vubec mi neni jasne k cemu by byla instrukce MOV PC,data
na stesti neexistuje ale s PC lze delat malou obklikou cokoliv (vyssi divci).
Aby to melo nejaky smysl tak je to o vlastnim kompilatoru protoze
zadny existujici takove prasarny nedovoli.
Děkuju za odpovědi. Asm rozumím, napsal jsem již jednoduchý kompilátor a disassembler pro procesory PIC a ta lapále z různě dlouhými instrukcemi 8951 mě zmátla.Takže číslo PC uvedené v návěstí adresuje vždy první byte instrukce, je to tak?
Opravdu nemám v úmyslu dělat z PC nějaké prasárny.
Založen: Dec 03, 2004 Příspěvky: 441 Bydliště: Krnov
Zaslal: pá květen 12 2006, 7:05 Předmět: no pončin vlastního programu je chvályhodná věc !
osobně všechny takové obdivuji já už se moc do učení nehrnu a jde mi líp ten hadware ! a pak věkově to už není moje parketa ! Ale itak přeji hodně štěstí při vývoji ! Ale osobně bych rád ši potkal někoho kdo dokáže mluvit s periferiemi pod xp - žádné složitosti prostě načíst a zobrazit nějaký data a pořípadě je i vrátit - ale jak se ukazuje je to dysciplína jen pro otrlé a už se začínám bát že se to fakt budu muset začít učit sám !
pro inspiraci http://www.vaultbbs.com/pinnacle/ koukni sem ! jejich x51 studio jede ve demu až do 2kb kodu a i pak stojí jen 99$ tak není důvod možná ani to vyvíjet ?! ale itak dej vědět jak to dopadlo ! Já sice už utekl k pic ale to je jiná kapitola ! Tak tedy hodně zdaru !
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.