|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 114
|
|||||||||||
Стэк asm 8051 AT89C5216.11.2021, 12:10. Показов 4810. Ответов 22
Метки нет (Все метки)
Добрый день, коллеги!
Делаю лабу в ВУЗе по микроконтроллерам. Накопилось несколько вопросов, если кто-то может кратко помочь, буду безмерно благодарен.
Перед этим
0
|
|||||||||||
| 16.11.2021, 12:10 | |
|
Ответы с готовыми решениями:
22
С BASIC на ASM, 8051 8051+asm, нужна подсказка 8051. Сравнение скорости ASM и С в симуляторе |
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
|||
| 16.11.2021, 18:56 | |||
|
(SP):=(SP)+1 ((SP)):=(direct) Т е чтобы использовать все ячейки памяти (чтобы не было одного "лишнего" байта) в то время как старшие 128 байт IDATA (операции PUSH POP MOV @R0 и т д) как раз используют "нормальную" память. Удобно использовать стек, загрузив туда например 127 и имея целых 128 байт стека. Но повторяю, это только в поздних моделях МК, надо смотреть документацию.
0
|
|||
|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 114
|
|||||||||||
| 16.11.2021, 21:37 [ТС] | |||||||||||
|
Круто, спасибо!
У меня есть такое задание на лабу: требуется задействовать таймер-счетчик ТС1; длительность формируемого импульсного сигнала составляет 45 мс, пауза – 25 мс, коэффициент K не задан; частота тактового генератора Fosc = 12 МГц; кол-во повторений импульсов N равно 15. Я взял пример готовой программы, которую предоставил преподаватель. И вот в момент инициализации контроллера уже не понимаю что приосходит:
И второй вопрос. Как определяется куда положить сегмент кода по умолчанию, если не задан очерез CSEG AT. У меня был OVERLAP и я в одном из модулей руками определил с какого места в этом модуле начинать складывать инструкции. Но помимо этого у меня есть ещё два модуля, в которых ничего не определено, но там сегмент кода лежит нормально. И ещё связанный с этим вопрос:
0
|
|||||||||||
|
4043 / 2654 / 583
Регистрация: 11.09.2009
Сообщений: 9,487
|
|||
| 17.11.2021, 01:39 | |||
|
Команда ANL TMOD, #0F0H сбросит в "0" младшие 4 бита регистра TMOD, старшие 4 бита при этом не изменятся. Команда ORL TMOD, #09 установит в "1" биты 0 и 3 регистра TMOD, остальные биты при этом не изменятся. То, что при такой последовательности команд биты 0 и 3 сначала сбрасываются в "0", потом устанавливаются в "1", - наверное так требуется для запуска чего-то. Нужно так, или нет, - в этом разберитесь сами по даташиту в описании назначения битов управляющего регистра TMOD.
1
|
|||
|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 114
|
|
| 18.11.2021, 12:36 [ТС] | |
|
Спасибо! А как генерируются эти самые прерывания в коде?
0
|
|
|
4043 / 2654 / 583
Регистрация: 11.09.2009
Сообщений: 9,487
|
|
| 18.11.2021, 14:44 | |
|
Аппаратно.
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 114
|
|
| 18.11.2021, 20:18 [ТС] | |
|
Как тогда препод даёт мне задание на генерацию импульсов?)
У меня из оборудования только Keil uVision 4
0
|
|
|
4043 / 2654 / 583
Регистрация: 11.09.2009
Сообщений: 9,487
|
||
| 19.11.2021, 00:00 | ||
|
По окончании отсчёта таймером заданного временного интервала устанавливается флаг прерывания от таймера, так же автоматически прерывается выполнение основного цикла программы и происходит вызов подпрограммы обработки этого прерывания. Вызов происходит по фиксированному адресу, назначенному этому прерыванию (см. выше). Команда вызова подпрограммы, включая загрузку в стек адреса возврата, так же выполняется аппаратно, нигде в коде её писать не надо. В обработчике прерывания пишутся необходимые манипуляции по управлению выходами. В конце обработчика прерывания пишется команда возврата из прерывания, при её выполнении из стека достаётся адрес возврата, и основной цикл программы продолжается дальше. Так на выходе можно формировать импульсную последовательность, т.е. сделать генератор импульсов.
0
|
||
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
|
|||
| 19.11.2021, 02:42 | |||
Сообщение было отмечено BuJIJI как решение
Решение
Можно и без прерываний. Достаточно в цикле проверять флаг TF0.
Зависит от точной задачи. А в "задании на лабу" из поста #3 есть непонятные слова Ну и в целом по поводу прерываний. BuJIJI ну почитали бы вы хоть какую-нибудь умную книжку. Форум всё-таки существует не для того, чтобы разжёвывать азбучные истины для всех тех, кто не хочет нормально учиться.
0
|
|||
|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 114
|
||
| 19.11.2021, 09:45 [ТС] | ||
|
Точная задача звучит так:
Закодируйте программу на языке Ассемблер согласно приведенному далее условию. Составьте программу на ассемблере для формирования с помощью встроенного в МК таймера-счетчика (Т/С) прямоугольных импульсов положительной полярности длительностью … и паузой … (или указывается отношение длительности импульса к длительности паузы сигнала как коэффициент K) соответственно при установленной частоте тактирования МК Fosc = … . Число повторений импульсов N = … . Протестируйте работу программы. СПО_Б-ТС1-45-25-х-12-15 Расшифровка: задание типа «Б» – требуется задействовать таймер-счетчик ТС1; длительность формируемого импульсного сигнала составляет 45 мс, пауза – 25 мс, коэффициент K не задан; частота тактового генератора Fosc = 12 МГц; кол-во повторений импульсов N равно 15. Добавлено через 5 минут
0
|
||
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
||||||||
| 19.11.2021, 14:07 | ||||||||
|
Магда Ю С
МИКРОКОНТРОЛЛЕРЫ СЕРИИ 8051: ПРАКТИЧЕСКИЙ ПОДХОД
0
|
||||||||
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
|
||
| 20.11.2021, 02:30 | ||
|
По описанию задачи не требуются прерывания от таймера. Буде у меня время в выходные, набросаю два варианта решения. С прерыванием и без.
0
|
||
|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 114
|
|
| 20.11.2021, 09:34 [ТС] | |
|
Спасибо большое!
Это учёба в ВУЗе. Я учусь в ВУЗе на дистанционной форме, когда на сессию даже ходить не надо. Соответственно и обратную связь от преподавателей сложно получать. Вообще учеба в ВУЗе больше для корочки, но так как я по профессии программист и мне это нравится, то решил сам выполнять эти задания чтобы поизучать ассемблер, подтянуть свои знания в микропроцессорах, узнать как всё это низкоуровнего устроено.
0
|
|
|
0 / 0 / 0
Регистрация: 21.11.2021
Сообщений: 2
|
|
| 21.11.2021, 13:35 | |
|
BuJIJI, Коллега, Вы учитесь в известном ВУЗе на Авиамоторной? Можно с Вами лично связаться?
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|
| 21.11.2021, 15:51 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 21.11.2021
Сообщений: 2
|
|
| 21.11.2021, 16:24 | |
|
ValeryS, не МТУСИ. Думаю, что топикстартер поймет. Я вижу, что BuJIJI уже сильно продвинулся в решении заданий.
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 114
|
|
| 21.11.2021, 16:29 [ТС] | |
|
Конечно можно лично связаться, где вам удобнее? Оставляйте контакты свои
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 114
|
||||||
| 23.11.2021, 16:30 [ТС] | ||||||
|
Еее я разобрался!
Защитил преподу на 5 эту лабу. Осталась последняя. Вот какую программу я написал:
0
|
||||||
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
||||||
| 23.11.2021, 18:30 | ||||||
|
Непонятна строка
А если P1.0 это вход, то возможно надо установить его в 1, а затем только читать.
0
|
||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||
| 23.11.2021, 18:55 | ||
|
выход транзистора соединён со входом триггера Шмидта, соответственно считывая порты можешь определить , ноги в каком состоянии
0
|
||
| 23.11.2021, 18:55 | |
|
Помогаю со студенческими работами здесь
20
Определение минимального элемента в массиве (Intel 8051, ASM, Keil uVision4) Asm 8051 | найти количество элементов, значение которых четное или меньше 110 AT89C52 24Pi чем программировать?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
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-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|