[an error occurred while processing this directive]
Ответ: Х.З.(+)... Коллизия по R16... P.S. Еле прорвался... Пятница.... Наверно, все порнуху качают по местноной VPN...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено ETM 16 сентября 2006 г. 01:30
В ответ на: ты все-таки покажи, почему volatile в while не катит. А то мало ли что, может какую катастрофу в будущем избежать удастся отправлено DASM 16 сентября 2006 г. 00:23

629 interrupt [TIMER1_COMPA_vect] void INT_TIMER1()
630 {
\ 0000010A 0A93 ST -Y,R16
\ 0000010C EA93 ST -Y,R30
\ 0000010E FA93 ST -Y,R31
\ 00000110 FFB7 IN R31,LOW(63)
\ 00000112 FA93 ST -Y,R31
\ 00000114 2297 SBIW R28,LOW(2)
634 if(tikMs) tikMs--;
\ 00000116 0091.... LDS R16,LWRD(tikMs)
\ 0000011A 0023 TST R16
\ 0000011C 19F0 BREQ ?0027
\ 0000011E 0150 SUBI R16,LOW(1)
\ 00000120 0093.... STS LWRD(tikMs),R16
\ ?0027:

\ 00000124 2296 ADIW R28,LOW(2)
\ 00000126 F991 LD R31,Y+
\ 00000128 FFBF OUT LOW(63),R31
\ 0000012A F991 LD R31,Y+
\ 0000012C E991 LD R30,Y+
\ 0000012E 0991 LD R16,Y+
\ 00000130 1895 RETI

--------------------------------------------------------------------
1. Работает
--------------------------------------------------------------------
volatile byte tikMs;
518 void delay(byte timeMs)
519 {
520 byte tmp;
521 tmp=tikMs=timeMs; while(tmp){tmp=tikMs;}
\ 00000000 0093.... STS LWRD(tikMs),R16
\ 00000004 102F MOV R17,R16
\ ?0003:
\ 00000006 1123 TST R17
\ 00000008 19F0 BREQ ?0002
\ 0000000A 1091.... LDS R17,LWRD(tikMs)
522 }
\ 0000000E FBCF RJMP ?0003
\ ?0002:
\ 00000010 0895 RET
\ ; tmp R17
\ ; timeMs R16

---------------------------------------------------------------------
2. Не работает
---------------------------------------------------------------------
volatile byte tikMs;

512 void delay(byte timeMs)
513 {
514 tikMs=timeMs; while(tikMs){;}
\ 00000000 0093.... STS LWRD(tikMs),R16
\ ?0003:
\ 00000004 0091.... LDS R16,LWRD(tikMs)
\ 00000008 0023 TST R16
\ 0000000A E1F7 BRNE ?0003
515 }
\ 0000000C 0895 RET
\ ; timeMs R16

---------------------------------------------------------------------
3. Не работает
---------------------------------------------------------------------
byte tikMs;

513 void delay(byte timeMs)
514 {
515 tikMs=timeMs; while(tikMs){;}
\ 00000000 0093.... STS LWRD(tikMs),R16
\ ?0003:
\ 00000004 0023 TST R16
\ 00000006 F1F7 BRNE ?0003
516 }
\ 00000008 0895 RET
\ ; timeMs R16

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

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание