Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/35: Рейтинг темы: голосов - 35, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 10

(МК51) Расчет задержки на Assembler

20.05.2012, 01:57. Показов 6753. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В вложении программа управлении светодиодами на макете, и там мы выставляем задержку между свечением диодов.
mov R1,#0FFh
C1: mov R2,#0FFh
C3: djnz R2, C3
djnz R1, C1
задержку выставляем именно в эти строчках.
Прошу, объясните, как высчитывать задержку, а то что то вообще не понял...!
Растолкуйте, знаю только что эта задержка у нас равна 0,2 с, а почему так ни малейшего понятия.
Миниатюры
(МК51) Расчет задержки на Assembler  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2012, 01:57
Ответы с готовыми решениями:

Программа в assembler на контроллере МК51
Программа должна выводить цифру 7 на матричном инидкаторе 8х8 при замыкании ключа 7 на матричной клавиатуре (на скрине обозначена...

Расчет задержки Atmel Studio 6 (C#)
Добрый день! В AVR я навичек и код мой возможно у кого вызовет рвоту и понос, но всеже прошу направить меня на путь истинный. Знаю что...

Организация задержки на Flat Assembler и проверки нажата ли клавиша
Друзья, прошу помощи у вас. Во время ожидания нажатия клавиши программа должна поочерёдно выводить на экран '*', но как только будет...

7
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
20.05.2012, 02:03
Цитата Сообщение от X_Falkone Посмотреть сообщение
mov R1,#0FFh
C1: mov R2,#0FFh
C3: djnz R2, C3
djnz R1, C1
задержку выставляем именно в эти строчках.
судя по синтаксису это 51
тогда тактовую частоту делишь на 12 получаешь время 1 "тика"
потом смотришь по справочнику сколько "тиков" занимает каждая команда
умножаешь на 65535(это размер твоего цикла)
ну как то так

Добавлено через 1 минуту
"тик" это я так обзываю машинный такт
0
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 10
20.05.2012, 02:13  [ТС]
да, МК51.
а тактовая частота какова?
справочник есть.
умножаешь на 65535(это размер твоего цикла). можно тут поподробнее рассказать как мы это узнали?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
20.05.2012, 02:21
Цитата Сообщение от X_Falkone Посмотреть сообщение
а тактовая частота какова?
А я знаю????
какой у тебя кварц стоит ?
Цитата Сообщение от X_Falkone Посмотреть сообщение
умножаешь на 65535(это размер твоего цикла). можно тут поподробнее рассказать как мы это узнали?
Цитата Сообщение от ValeryS Посмотреть сообщение
умножаешь на 65535(это размер твоего цикла)
здесь я описался надо 65536
у тебя два цикла один вложен в другой
у одного 256(итераций) и у другого
256*256=65536
0
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 10
20.05.2012, 03:47  [ТС]
Правильно ли я понимаю как тут работает цикл.
сначала выполняется команда mov R1,#0FFh
потом djnz R1, C1 и после того как R1 будет значение 0 переходит на метку С1
там заносим значения в R2 и дальше выполняется команда djnz R2, C3
и после того как в R2 будет 0, идет завершения цикла или переход снова на метку C3?

На сколько я помню, этот цикл реализует задержку в 0,2 с.

Добавлено через 17 минут
или такой принцип, заносим значение R1 и R2, потом выполняется C3:djnz R2,C3, после обнуления R2 переходим на метку C3 видим что R2 уже равно 0 и идем дальше, выполняем djnz R1,C1, после того как R1 равно нулю, переходим на метку C1 и снова заносим в R2 значение FF после чего снова выполняется C3:djnz R2,C3 и уже после этого у нас выходит что R1 и R2 равны нулю и автоматически выходим с цикла?
А FF=256 тоесть F=16 16*16=256. Верно?
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
20.05.2012, 06:18
Цитата Сообщение от X_Falkone Посмотреть сообщение
А FF=256 тоесть F=16 16*16=256. Верно?
Нет, FF = 255 то есть F=15 15*16+15 = 255 )))))))))))))))))))))))))))))))
0
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 10
20.05.2012, 08:22  [ТС]
да, F=15
но почему 15*16+15?
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
20.05.2012, 16:17
X_Falkone, смотри, основание 16-ричной системы 16, значит вторая позиция значит 16, а первая - 1, F=15, FF =

15 15 значения позиций
_________________
16 1 коэффицент позиций, равен основание (16)^(номер-1)

15*16+15 = 15*17 = (16-1)(16+1) = 16^2 - 1 = 255.
Теперь понятнее?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2012, 16:17
Помогаю со студенческими работами здесь

Расчет общего времени задержки в блоке Service
Добрый вечер всем! В курсовом проекте требуется найти кпд рабочих. Для решения этой задачи мне необходимо знать общее время задержки в...

Расчет на Assembler
Привет всем! Ребят помогите. Задачка не сложная. Задачка на java, но с вставкой из ассемблера. Нужно вычислить: ((A*X) div (B*X*Y)) div...

Разработайте функцию, реализующую для момента времени t расчет выхода y для устройства задержки
Разработайте функцию, реализующую для момента времени t расчет выхода y для устройства задержки: на входе – значения сигнала x(i) в...

Разработайте функцию, реализующую для момента времени t расчет выхода y для устройства задержки: на входе – значения
Разработайте функцию, реализующую для момента времени t расчет выхода y для устройства задержки: на входе – значения сигнала x(i) в...

[МК51] Кодопреобразователь
Здравствуйте! Нужно реализовать кодопреобразователь для микроконтроллера KM1816BE51 на языке Ассемблера. Есть таблица истинности. Как такое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru