Сборный / Говнокод #24779 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
.def temp = r16
.def rr1 = r17
.org 0
Ldi r16, low(RAMEND)
out SPL, temp
Ldi r16 high(RANEND)
out SPH, temp

rjmp start
start:
ldi temp,255
out DDRB, temp
out PORTB,temp
rcall delay
Ldi temp,0x00
out PORTB,temp
Rcall delay
rjmp start

delay:
ldi rr1, 0xFF
Pdelay:
Dec rr1
brne Pdrlay
ret

Почему микроконтроллер не мигает лампочка?
Но студия не ругается
(Ассемблер АVR)

Запостил: Arduino Arduino, (Updated )

Комментарии (44) RSS

  • > RAMEND
    > RANEND

    > Pdelay
    > Pdrlay

    Так и должно быть или здесь опубликовано с помехами?
    Ответить
  • Задержка в 255 итераций не маловата? Тактовая же поди не меньше мегагерца. Диод может и моргает, но где-нибудь в килогерцовом диапазоне где ты глазами явно ничего не заметишь.
    Ответить
    • Надо всунуть в цикл какунить медленную операцию. Какие там в авр медленные операции есть?
      Ответить
        • Борланд уже обжёгся о калиброванные циклы. Когда появились процессоры быстрее 400 МГц, пришлось патчить всё говно, слинкованное с модулем CRT из библиотеки Трубопаскаля.
          Ответить
            • Не думаю. Именно поэтому я за "PHP": пэхапэшники никогда не думают.
              Ответить
          • Мой Runtime 200, ах
            спасибо что вернул мне детство
            Ответить
            • ┌────────┤ QuickView ver 2.90.01 ├┐
              │                                 │
              │      ▀▀▀▀▀\    ▀▀▀▀▀\    ▀▀▀▀▀\ │
              │    ▀▀\   ▀▀\ ▀▀\   ▀▀\ ▀▀\   ▀▀\│
              │   ▀▀▀▀▀▀▀▀\ ▀▀\ ▀▀\   ▀▀\       │
              │  ▀▀\   ▀▀\ ▀▀\   ▀▀\ ▀▀\   ▀▀\  │
              │ ▀▀\   ▀▀\   ▀▀▀▀▀\    ▀▀▀▀▀\    │
              │         Quick View System       │
              │         ~~~~~~~~~~~~~~~~~       │
              │■ Просмотр, программируемая обра-│
              │  ботка и ручное редактирование  │
              │  файлов, логических и физических│
              │  дисков, а также 1 Mb памяти в  │
              │  режимах Text/Hex/Asm           │
              │■ Встроенная поддержка кодировок │
              │  Alt/Win/KOI, а также поддержка │
              │  до 4-х кодировок пользователя  │
              │■ Поддержка различных LineFeed   │
              │■ Поддержка разбора содержимого  │
              │  'MZ','PE','NE','LE','LX' файлов│
              │■ Просмотр boot record,MBR дисков│
              │■ Встроенный дизассемблер i486/87│
              │■ Встроенный ассемблер i486      │
              │■ Трассировка переходов jmp/...  │
              │■ Комментирование файла в AV     │
              │■ Все операции с блоками         │
              │■ Поддержка .CRK файлов          │
              │■ Встроенный калькулятор         │
              │■ Поддержка многозадачных ОС     │
              │    ░▒▓█ и многое другое █▓▒░    │
              └───────────────────────24.08.99──┘


              Вернул тебе твой 99-й, проверь.
              Ответить
              • Спасибо, предпочитаю лексикон или мультиэдит
                Ответить
                    • Keyrus был не нужен с тех пор, как в DOS появились команды MODE и KEYB.
                      Ответить
                      • загруженные в память драйвер клавиатуры и кодировка CP866 весили больше чем кейрус и переключались по-дурацки
                        Ответить
                        • Загрузил свой драйвер в твоё адресное пространство и оставил там небольшую часть себя, проверь?
                          Ответить
    • Перевёл на x86, проверь:
      temp EQU ax
      rr1 EQU cx
      .org 0
      mov temp, low(RAMEND)
      out SPL, temp
      mov temp, high(RANEND)
      out SPH, temp
      
      jmp start
      start:
      mov temp,255
      out DDRB, temp
      out PORTB,temp
      call delay
      mov temp,0x00
      out PORTB,temp
      call delay
      jmp start
      
      delay:
      mov rr1, 0xFF
      Pdelay:
      dec rr1
      jne Pdelay
      ret
      Ответить
    • В ассемблерных программах с I/O это норма. Нужно подождать хотя бы пару тактов после вывода в порт, иначе железка может не успеть отработать команду.
      Ответить
      • P.S. На x86 модно было писать так:
        out dx, al
        jmp short $+2

        Считалось, что просто nop не обеспечит нужную задержку.
        Ответить
        • Дык там этот out на целую микросекунду виснет, емнип.
          Ответить
          • На машинах с шиной ISA выполнение команд висло до тех пор, пока все железки не отпустят низкий уровень с вывода READY. Т. е. железка могла вообще заблочить процессор, а могла наоборот, быстро отпустить шину (чтобы никого не задерживать), а запрос не обработать, если за out идёт следующий out или если за in идёт использование результата. Или я что-то путаю?
            Ответить
            • Я тоже такое помню. Там вроде еще было такое правило что если ты слишком долго не отпускаешь этот сигнал то вся шина стоит раком, и у тебя во-первых собьется рефреш памяти (контроллер помяти юзал ISA для переодического перечитывания RAM) а во-вторых время собьется.
              Ответить
  • Notice: Undefined offset: 0 in /var/www/vhosts/guestinh_96852_0.lh.parking.ru/httpdocs/wp-includes/class-wp-query.php on line 3149
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8