Ответ: (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Sinelogic 17 сентября 2004 г. 21:22
В ответ на: Через глобальную переменную. Если меняешь в программе переменную, запрещаешь прерывание отправлено Mikla 17 сентября 2004 г. 21:15

Вот кусок на С
while(1)
{
while(!fl);
fl=0;
k++;
if (k==411) k=0;
а вот, что он скомпилил
while(1)
410: 20 91 7c 00 lds r18, 0x007C
{
while(!fl);
414: 22 23 and r18, r18
416: f1 f3 breq .-4 ; 0x414
fl=0;
418: 20 e0 ldi r18, 0x00 ; 0
k++;
41a: 01 96 adiw r24, 0x01 ; 1
if (k==411) k=0;
41c: 31 e0 ldi r19, 0x01 ; 1
41e: 8b 39 cpi r24, 0x9B ; 155
420: 93 07 cpc r25, r19
422: c1 f7 brne .-16 ; 0x414
424: 80 e0 ldi r24, 0x00 ; 0
426: 90 e0 ldi r25, 0x00 ; 0
428: f5 cf rjmp .-22 ; 0x414

он меняет переменную только у себя в регистре внутри цикла, и если преывание меняет эту переменную, то на основного цикла она не влияет.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru