<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial'; COLOR: #000000">
<DIV>Zdravim, mam takuto cast kodu:</DIV>
<DIV>Tu premennu tmp_counter som chcel definovat vnutri toho bloku s tim ze bude
platna len v tom bloku a </DIV>
<DIV>na zaciatku sa inicializuje, kvoli setreniu miesta v pamati. Lenze to
nefunguje prelozi sa to viz. nizsie, ako keby sa ta hodnota nemenila cize to
vsetko potom kompilator ignoruje</DIV>
<DIV>Ked tu definiciu dam pred to while tak to funguje. chcel som len aby
zbytocne nezaberala miesto. Dalo by sa to aj s cyklom for v tomto pripade, ale
ma zaujima ked by tam malo byt while</DIV>
<DIV>Da sa to nejak inak urobit? </DIV>
<DIV> </DIV>
<DIV>dik.</DIV>
<DIV>michal</DIV>
<DIV> </DIV>
<DIV>uint32_t tmp32 = 0;</DIV>
<DIV>uint16_t tmp16;</DIV>
<DIV> </DIV>
<DIV>while(1){</DIV>
<DIV> uint16_t tmp_counter =
2048;</DIV>
<DIV> if (bit_is_clear(ADCSRA,ADSC))
{</DIV>
<DIV> tmp16 =
ADCL; </DIV>
<DIV> tmp16 |=
((uint16_t)ADCH << 8);</DIV>
<DIV> tmp32 +=
tmp16;</DIV>
<DIV>
tmp_counter--;</DIV>
<DIV>
AD_START;</DIV>
<DIV> if
(tmp_counter == 0) {</DIV>
<DIV>
tmp32 >>= 5;</DIV>
<DIV>
offset_I = tmp32;</DIV>
<DIV>
</DIV>
<DIV>
utoa((unsigned int)tmp32,s_out,10);</DIV>
<DIV>
lcd_gotoxy(0,0);</DIV>
<DIV>
lcd_puts(s_out);</DIV>
<DIV>
_delay_ms(3000);</DIV>
<DIV>
lcd_clrscr();</DIV>
<DIV>
break; </DIV>
<DIV> }</DIV>
<DIV> }</DIV>
<DIV> </DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV> </DIV>
<DIV> 245: if
(bit_is_clear(ADCSRA,ADSC)) {</DIV>
<DIV>0000015E SBIC 0x06,6 Skip
if bit in I/O register cleared </DIV>
<DIV>0000015F RJMP PC-0x0001
Relative jump </DIV>
<DIV>
246:
tmp16 = ADCL; </DIV>
<DIV>00000160 IN R24,0x04 In
from I/O location </DIV>
<DIV>
247:
tmp16 |= ((uint16_t)ADCH << 8);</DIV>
<DIV>00000161 IN R24,0x05 In
from I/O location </DIV>
<DIV>
250:
AD_START;</DIV>
<DIV>00000162 SBI 0x06,6 Set bit
in I/O register </DIV>
<DIV>00000163 RJMP PC-0x0005
Relative jump </DIV></DIV></DIV></BODY></HTML>