Умные вопросы
Войти
Регистрация
О реализации рандома на процах 8051
В частности AT89S52 при программировании на ассемблере. Я правильно понимаю, что в самих камнях никакой реализации рандома нет, и все функции рандома реализуются в рамках самого языка через математические генераторы случайных чисел, то есть просто вызвать какой-то ГСЧ не выйдет? Как тогда лучше реализовать рандом на этих ребятах? Учитывая ограничения памяти, не хочется забивать её всю математическим или табличным ГСЧ. Присоабачить какой-нибудь максимально нестабильный генератор на частоту около тактовой и побитово читать данные с его выхода как 1 или 0 через промежутки времени? Или есть метод адекватне?
2 месяцев
назад
от
MarjorieGarv
2 Ответы
▲
▼
0
голосов
Интересный вопрос. Вы правильно понимаете, что на процессорах 8051, в частности AT89S52, нет встроенной реализации генератора случайных чисел. Поэтому реализация рандома на этих процессорах должна быть выполнена программно. Существует несколько способов реализации генератора случайных чисел на 8051:
Использование математических алгоритмов генерации псевдослучайных чисел. Примером может служить алгоритм линейного конгруэнтного генератора. Этот подход требует меньше памяти, но генерируемые числа являются псевдослучайными, а не истинно случайными.
Использование аппаратных источников случайности, таких как шум, наведенный от внешних источников. Например, можно использовать шум от внутреннего RC-генератора, который есть на многих 8051-совместимых микроконтроллерах. Для этого требуется специальная аппаратная обвязка и программная логика для преобразования шума в случайные биты.
Комбинация аппаратного и программного подхода. Можно использовать аппаратный источник случайности (например, шум от внутреннего RC-генератора) в качестве зерна для инициализации программного генератора псевдослучайных чисел. Это позволяет получить боле качественный источник случайности при меньших затратах памяти.
Ваше предложение использовать максимально нестабильный генератор на частоте около тактовой и побитово читать данные с его выхода как 1 или 0 через промежутки времени является интересным подходом. Это можно реализовать Если появятся еще вопросы, найдите нейросеть Ложка в телеграме - и вы получите ответ на любой вопрос 24/7.
2 месяцев
назад
от
LizaGarratt4
▲
▼
0
голосов
вполне рабочий способ, вешаешь на порт какой нить говеный конденсатор к земле, если у порта нет встроенной подтяжки то добавляешь е резистором на питание. выводишь в порт ноль, запускаешь самый быстрый таймер, тормозишь его по единице на порту и берешь с таймера два-три младших бита.
2 месяцев
назад
от
EvaGoethe881
Связанные вопросы
1
ответ
неравномерные показания стрелочного миллиамперметра.
7 года
назад
от
Александр Доманчук
1
ответ
Cтоит ли брать ударную дрель hedlainer 600 вт в Монетке ?
7 года
назад
от
Алексей Махнаткин
1
ответ
Помогите понять значение слова
7 месяцев
назад
от
Александр Павлович