Если кристалл заблокирован, НО ИМЕЕТ ВОЗМОЖНОСТЬ ПЕРЕПРОШИВКИ делаем программатор соответствующий (параллельный!!!) даем команду ОБЩЕЕ СТИРАНИЕ и... далее пишем во внутреннюю память программ свой "биос". Если кристалл ОДНОКРАТНО ПРОГРАММИРУЕМЫЙ или МАСОЧНЫЙ (разновидности OTP) делаем биос/собственную прожку во внешней памяти данных и схемотехнический (с программной поддержкой) переключатель/селектор адресного пространства ВПП/ВПД. Работа ВСЕХ МК из семейства MCS51 подчиняется интеловскому СТАНДАРТУ - в модификациях может применяться все, что НЕ ОПРЕДЕЛЕНО тем стандартным минимумом ИЛИ ОПИСАНО ДОПОЛНЕНИЕМ В КОНКРЕТНОМ ДАТАШИТЕ НА МК. А все, чего там нету соответствует интеловской концепции "по умолчанию". Посему... При работе с MCS51держим под лапой исходный референс интела и/или его русскоязычные трактовки (весьма много разнообрахных, в том числе и в сундуке КОТА) и даташит на имеющийся МК.
Вариант распределения памяти в одной из старых конструкций http://img.radiokot.ru/files/20529/kft9glhpo.gif может использоваться и как возможность работы с двумя микрухами памяти - ПЗУ (ВПП) в 32к и ОЗУ (ВПП/ВПД) 32к
Одно огорчение... частота с ВПП ограничена 12МГЦ... и требует повышенной аккуратности в отношении трассировки монтажа.
ОТКУЛЬ ТАКОЕ ОГРАНИЧЕНИЕ? В СМЫСЛЕ 12МЕГ САМИ НЕКОТОРЫЕ 51 УМЕЮТ РАБОТАТЬ И С 25 М КРИСТАЛОМ КВАРЦА
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Одно дело - внутренняя шина и совсем другое - внешняя... Плюс защелка адреса в дополнение. Да еще как исполнена в железе - иногда сами шинки могут подарки преподнести. Где-то раньше попадалось - уже не помню... Это у тех кристаллов, где только внешняя память программ применяется между напечатанном на кристале и реалом соответствие будет. Да и всегда проверить не помешает - реальных конструкций с внешней микрухой и кварцем выше 11,..... /12МГц таки не попадалось... А более поздние - все со встроенным ПЗУ - там быстродействие на максимуме.
снова практический вопрос (по всё той же гарвардской архитектуре)
Есть ли хоть одна причина, почему нельзя поменять (произвольно) местами Addres-ные pin-ы ROM или RAM (внешних), например, при разводке платы удобнее и короче получатся дорожки, не соблюдающие адресный "вес" по даташит-версии? Разумеется, при заливке ПЗУ-шки, всю эту ре-адресацию учитывать - в пользу того, как их будет видеть МК...
_________________ ..всего две 6Ф1П, включенные последовательно, высушат обое ваших сапог даже в автомобиле..
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
МОЖНО. Только вот... тогда в случеа использования внешнего ПЗУ программ нужно будет дамп памяти перед программированием также соответственно препарировать. Не все программаторы такую издевку обеспечить могут. А "совместное" применение ПЗУ и ОЗУ для микропроценссоров/микроконтроллеров - ТИПИЧНОЕ ЯВЛЕНИЕ (по крайней мере в те времена, когда внутренний флеш проблемой был). Если схема рассчитана на применение внешней памяти программ в виде УФ ПЗУ (сейчас уже и флешки есть) и кристалла ОЗУ мудрить с разводкой можно лишь в случае наличия программатора той ПЗУшки (или прожки в ПК), которая сделает необходимую перестановку байт кода перед записью в ПЗУ.
Кстати.... этот прием (перестановка адресных линий и/или линий данных) в недавнем прошлом часто использовался для затруднения дешифровки программного кода.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Подобный вариант (разрабатывался как многоцелевая платформа между прикладушкой и ПК "из подручно-доступного материала) viewtopic.php?p=3167597#p3167597
Такая запись в ассемблерном исходнике с диска прилагавшемуся к китайской education board c камнем STC89C52
Код:
seach: mov r0,#-2 ;pointer mov r1,#-1 ;counter
В моей iDE c ассемблером ASEM51 такая запись ("mov R0, #-2") является ошибочной. (Notice at 2 in test-2.asm: Overflow `-2' -> `65534'). Что имели в виду китайцы?
Вы в курсе какие форматы данных "понимают" данные программы ? Я не совсем в курсе, но предполагаю, что ошибка сия чисто формальная по "непониманию" отрицательного ,а реально hex-число там правильное, как легко догадаться.
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Сие есмь формат представления отрицательных целых чисел. Так что всё получилось правильно. ( В зависимости от разрядности регистров в конкретных системах представление тех же например -2 и -1 в hex будет выглядеть по разному. 0FEh и 0FFh для 8бит , 0FFFEh и 0FFFFh для 16 бит ,ну и т.д. .. )
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Запись отрицательного значения (как и вычисления значений для подстановки) - зависит от компилятора/препроцессора. Читать надо Uzers guide конкретной IDE/компилятора.
Как частность - отрицательное значение может представлятся компилятором в "полном диапазоне" т.е. если у нас 2 - размерностью в байт, то -2 размерностью В БАЙТ будет 0хFE ... однако препроцессор компилятора ограничение в байт МОЖЕТ НЕ ВОСПРИНИМАТЬ - выполнит преобразование автоматически для полного диапазона представления (что в него разработчиком заложено)... и... Будем -2 иметь как...
0xFFFE в лучшем случае... (а можеть и подлиннее...) при таком подходе выручит mov r0,#low (-2)
Вопрос по ассемблеру MCS-51 Ковырялся я однажды в неких исходниках, и видел я там такую штуку. Но упустил (не сохранил) а сейчас не могу найти. Некое макровыражение, вычисляющее длину, и помещающее ее в указанный регистр. Например, есть набор байтов, определенный директивой DB в памяти программ string: db 'abcdef' выражение mov dptr. #string - поместит в DPTR адрес первого элемента таблицы. Но есть что-то очень похожее по написанию, но вместо адреса, помещающее размер самой таблицы. Для указанного примера, поместит двоичную 6. Число 16-битное, #high() и #low() применимы.
Используем свойства препроцессора, которые позволяют производить подобные вычисления mov dptr,#(mteka_h - metka_l) загрузит в DPTR разницу между конечным адресом и начальным. Конечный адрес - метка следующая за последним байтом строки (ставим произвольно самостоятельно).
string: db 'abcdef' mark: .............. = mov dptr,#(mark - string)
Объясните как записать массив[16][40] в память МК 8051. Программу пишу на Си в Kell uVision. Вылазиет что то вроде ошибки TEXT1.C(77): error C241: 'main': auto segment too large.
PS. Разобрался что переменную можно записать в char xdata но при попытки ее использовать в какой либо функции ничего не получается. ее как будто нету. в памяти data она отлично читается.
PS. Разобрался что переменную можно записать в char xdata но при попытки ее использовать в какой либо функции ничего не получается. ее как будто нету. в памяти data она отлично читается.
сегмент XDATA - это внешняя оперативная память МК. Если ее физически нет (а это регистр-защелка и микросхема памяти), то естественно, там не может быть ничего сохранено.
Для компилятора без разницы - есть физически память или нету. Главное правильно указать модель МК в соответствующих опциях/заголовочном файле. С ассемблером легче, а вот в специфике СИ не смогу подсказать. В принципе смотреть надо описание на компилятор. Ежли не указана конкретная модель МК по умолчанию должна запускаться "классика" - но в ней нету места флешке - считается, что применена внешняя память как для программ, так и для данных. Если в исходнике указана конкретная модель МК то начнутся матюки при несоответствии заданного в *.inc файле распределения памяти заданному пользователем типу МК (особо, ежли МК не работает с внешней памятью данных - типа AT89C2051/AT89C4051).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения