Re: Pøeklad do assembleru

Jan Waclawek konfera na efton.sk
Neděle Říjen 8 20:34:28 CEST 2023


[preposielam]


Ahoj,

>>>

Můžete mi prosím někdo napstat jak se přeloží v C++ na AtMega

byte b1,x;
if(b1==x){PORTA &=0xFE;};
popřípadě zda se dá vymyslet *časově* úspornější zápis pro shození bitu?
Přerušení je po tu dobu zakázané. Příkazů if bude v přerušení celkem 24
a potřebuji přerušení vyvolat dost často, tak aby vůbec ještě nějaký čas
procesoru zbyl.

>>>


Moj rucny asm-kod za predpokladu, ze bude funkcny, vysiel nasledovne:


;  byte b1,x;
;  if(b1==x){PORTA &=0xFE;};

   LDS   Rx, ADR_b1

   LDS   Ry, ADR_x

   CPSE  Rx, Ry

   RJMP  L1:

   CBI   PORTA,0

L1:


24 x 5 = 120 instrukcii, plus nejaky overload tej rutiny, to je cca
130instrukcii. Kolko to zaberie casu, zalezi na frekvencii oscilatora.
To uz musite ale doriesit Vy.

A.



Další informace o konferenci Hw-list