16+
Воскресенье
23 сентября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
Bill  (05.07.2018 16:24) , в ответ на Ничего нового в этой статье нет. Насчет использования volatile в циклах - это очень неудачный совет. Лучше использовать какое-либо полезное действие в теле цикла (например NOP). И вот почему. автор: sladkoejka
Сравнивайте 
void delay(unsigned volatile long n)
{
    while( n-- > 0 ); 
//        __no_operation();
}
      7          void delay(unsigned volatile long n)
   \                     delay:
      8          {
   \   000000                REQUIRE ?V0
   \   000000                REQUIRE ?V1
   \   000000                REQUIRE ?V2
   \   000000                REQUIRE ?V3
   \   000000                REQUIRE ?V4
   \   000000                REQUIRE ?V5
   \   000000                REQUIRE ?V6
   \   000000                REQUIRE ?V7
   \   000000   7408         MOV     A,#0x8
   \   000002   12....       LCALL   ?FUNC_ENTER_SP
   \   000005                ; Saved register size: 11
   \   000005                ; Auto size: 4
   \   000005   E581         MOV     A,SP
   \   000007   2404         ADD     A,#0x4
   \   000009   F581         MOV     SP,A
   \   00000B   24FD         ADD     A,#-0x3
   \   00000D   F8           MOV     R0,A
   \   00000E   EA           MOV     A,R2
   \   00000F   F6           MOV     @R0,A
   \   000010   08           INC     R0
   \   000011   EB           MOV     A,R3
   \   000012   F6           MOV     @R0,A
   \   000013   08           INC     R0
   \   000014   EC           MOV     A,R4
   \   000015   F6           MOV     @R0,A
   \   000016   08           INC     R0
   \   000017   ED           MOV     A,R5
   \   000018   F6           MOV     @R0,A
      9              while( n-- > 0 ); 
   \                     ??delay_0:
   \   000019   E581         MOV     A,SP
   \   00001B   24FD         ADD     A,#-0x3
   \   00001D   F9           MOV     R1,A
   \   00001E   78..         MOV     R0,#?V4
   \   000020   12....       LCALL   ?L_MOV
   \   000023   85....       MOV     ?V0,?V4
   \   000026   85....       MOV     ?V1,?V5
   \   000029   85....       MOV     ?V2,?V6
   \   00002C   85....       MOV     ?V3,?V7
   \   00002F   90....       MOV     DPTR,#__Constant_ffffffff
   \   000032   78..         MOV     R0,#?V0
   \   000034   12....       LCALL   ?L_ADD_C
   \   000037   E581         MOV     A,SP
   \   000039   24FD         ADD     A,#-0x3
   \   00003B   F8           MOV     R0,A
   \   00003C   74..         MOV     A,#?V0
   \   00003E   12....       LCALL   ?L_MOV_A
   \   000041   E5..         MOV     A,?V4
   \   000043   45..         ORL     A,?V5
   \   000045   45..         ORL     A,?V6
   \   000047   45..         ORL     A,?V7
   \   000049   70CE         JNZ     ??delay_0
     10          //        __no_operation();
     11          }
   \   00004B   1581         DEC     SP
   \   00004D   1581         DEC     SP
   \   00004F   1581         DEC     SP
   \   000051   1581         DEC     SP
   \   000053   7F08         MOV     R7,#0x8
   \   000055   02....       LJMP    ?FUNC_LEAVE_SP
void delay(unsigned long n)
{
    while( n-- > 0 ); 
//        __no_operation();
}
      7          void delay(unsigned long n)
   \                     delay:
      8          {
   \   000000                REQUIRE ?V0
   \   000000                REQUIRE ?V1
   \   000000                REQUIRE ?V2
   \   000000                REQUIRE ?V3
   \   000000                ; Saved register size: 4
   \   000000                ; Auto size: 0
      9              while( n-- > 0 ); 
     10          //        __no_operation();
     11          }
   \   000000   22           RET
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII