CodeVision AVR i assembler (?)
Masz problem? Zapytaj na forum elektroda.pl
From: "Q" <oink_at_nospam_gazeta.gov.pl>
Subject: CodeVision AVR i assembler (?)
Date: Wed, 10 Nov 2004 11:02:36 +0100
1.
co zrobic, zeby assembler uzywany w cvavr
widzial stale umieszczone w plikach "megaxxx.h"?
assembler (w cvavr) wywala mi blad jak dam:
#asm("out SPMCR, r27");
i musze uzywac takiej postaci:
#asm("out 0x37, r27");
2.
jak w ogole dolaczyc do projektu
pliki napisane w "czystym" assemblerze?
3.
w roznych przykladach widze, ze
czesto uzywane sa zamiennie instrukcje "sts" i "out";
jaka jest podstawowa roznica miedzy tymi instrukcjami?
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: CodeVision AVR i assembler (?)
Date: Thu, 11 Nov 2004 23:18:26 +0100
Q wrote:
w roznych przykladach widze, ze
czesto uzywane sa zamiennie instrukcje "sts" i "out";
jaka jest podstawowa roznica miedzy tymi instrukcjami?
Instrukcja sts zapisuje zawartosc rejestru do dowolnej komorki pamieci
(w jej kodzie podaje sie 16-bitowy adres komorki w RAMie), natomiast
instrukcja out mozna zapisywac tylko dolna przestrzen adresowa rejestrow
wejscia-wyjscia (czy jak tam zwal) czyli obszar adresow I/O 0..63.
Instrukcja sts trwa 2 cykle procesora i jest 2-slowowa (zajmuje 4 oktety
w pamieci programu) bo w drugim slowie zawiera 16-bitowy adres.
Instrukcja out trwa 1 cykl i jest 1-slowowa (adres 6-bitowy zawarty w
kodzie instrukcji) i dlatego lepiej ja uzywac kiedy mozna, bo zajmuje
mniej miejsca w pamieci i jest szybsza. I na koniec: najprostsze AVRki
nie maja instrukcji sts, a w tych bardziej rozbudowanych jest tyle
rejestrow, ze nie mieszcza sie w obszarze dzialania instrukcji out i
trzeba uzywac sts.
Mam nadzieje, ze nie sciemnilem zbyt mocno. :)
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.