Fórum témák

» Több friss téma
Cikkek » AVR Assembly kezdőknek
AVR Assembly kezdőknek
Szerző: sgt, idő: Nov 23, 2011, Olvasva: 33093, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   3 / 12

Mint látható az uC-n belül egy 8 bites adatbuszra van felfűzve szinte minden. Azonban az utasítások útvonalai, és címzések külön buszon vannak.

Flash Program Memory: ez az a flash, ahol az uC tárolja a programját értelemszerűen.

Instruction Register: ide kerül betöltésre a soron következő utasítás, és itt van módunk bele avatkozni kívülről a program működésébe. Ezt a JTAG-gel tehetjük meg, de erre most nem térek ki. Itt már részben dekódolva van az utasítás, mivel ha olyan az utasítás, akkor közvetlenül megcímzi, hogy melyik regiszter(ek) jönnek, vagy az SRAM melyik cellája. Fontos megemlíteni, hogy csak ez címez direkt módon.

Instruction Decoder: végül itt értelmezi, hogy mit is kell csinálnia az adott utasításnak, ami által beállítja a vezérlő vonalakat, aminek a végén függően, hogy milyen utasításról beszélünk, lehet ALU, vagy éppen az SRAM.

32 x 8 General Purpose Registrers: ez már említésre került, nem részletezem tovább.

ALU: Arithmetic Logic Unit az az aritmetikai és logikai egység. Itt tudunk műveleteket végezni két regiszter között, továbbá lehetőség van egy regiszter és egy konstans között is.

Program Counter: ez nagyon fontos a program működése szempontjából, mert ha bármilyen ugrást, szubrutinhívást, vagy megszakítást csinálunk, akkor azt e nélkül nem lenne lehetőségünk végrehajtani. Ugyanis, amikor ugrunk, szubrutint hívunk vagy megszakítunk, akkor ahogy a képernyőn úgy a program memóriában sem egymást követik az utasítások vagyis ilyenkor tudnia kell a Program Counternek, hogy mire mutasson, vagyis hogy mi legen a következő utasítás. Ez ugrás esetén a címke lesz, szubrutinhívás esetén a szubrutin neve, és megszakítás esetén pedig a megszakítás táblán lévő valamelyik cím. No de ez sem lesz ilyen egyszerű, mint majd később látni fogjuk. A számlálónak az értékét mi is nyomon tudjuk majd követni.

ALU: működése során előfordulnak olyan műveletek, ahol túlcsordulhat, átvitel kelezhet stb… ezeket az ALU egy un. Status Register-ben (SREG) jelzi felénk, közvetlen az után hogy lefutott az adott utasítás.

  • I: Global Interrupt Enable – globális megszakítás engedélyezve, ez jelzi nekünk. Ezt a SEI paranccsal tudjuk bekapcsolni, és CLI-vel kikapcsolni. Lényege, hogy amikor ez „1”-ben van, akkor történhet megszakítás, ha „0”-ban, akkor egyik periféria sem szakíthat meg. Amikor megszakítunk, akkor ez „0”-ra vált, és majd a RETI lefutása után fog automatikusan visszaállni engedélyezettbe.
  • T: Bit Copy Storage – ez egy nagyon hasznos bit, mivel a vezérlése teljesen a mi kezünkben van.
  • H: Half Carry Flag – ez akkor lesz „1”, ha a két nibble (ez a fél bájtnak az elnevezése) között van átvitel.
  • S: Sign Bit – N és V közötti kizáró vagy kapcsolatából adódik.
  • V: Two’s Complement Overflow Flag – ez akkor lesz „1”, ha a pozitív számtartományból átléptünk a negatívba, ez 8 bit esetén 127-ről 128-ra lépésnél következik be.
  • N: Negative Flag – ez akkor lesz „1”, ha a keletkezett szám negatív előjelű.
  • Z: Zero Flag – ez akkor lesz „1”, ha az eredmény nulla. Ezt kihasználva kiváló időzítőt, és ciklust lehet készíteni, mint azt később látni fogjuk.
  • C: Carry Flag – ez akkor lesz „1”, ha az eredmény átlépte a számtartomány felső határát, vagyis átvitel keletkezett.

A cikk még nem ért véget, lapozz!
Következő: »»   3 / 12
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem