Только будет ли Вам толк с той информации? Практически большинство программ под динамикудля 51х или весьма почтенного возраста или с использованием для сегментного кода параллельного порта - их надо адаптировать под последовательную пересылку. А это заметный пересчет временных интервалов и структуры программы. Практически равноценно работы по написанию программы согласно алгоритма. Чаще всего динамика совмещена еще и с клавиатурой - ее (опрос клавиатуры) за ненадобностью то удалить надо будет. Как вариант - выкладывать схему - может кто и предложит готовое (если с P89LPC915FN уже работать приходилось). К примеру... вот этот древний проект Вам чем нибудь поможет?
инвертируем оба байта по отдельности и затем сложение с 1 младшего байта и сложение с 1 с учетом переноса для старшего байта.
Можно и так, но я чуть переработал тот код, и в принципе получил то же самое. Может несколько больше получилось, но запас места для программы был.
Всё проверил - работает, сделал второй полноценный, законченный проект на 51ом семействе. Первый был часами в мотоцикл, нынешний - бортовой комп в него же. Освоил таки 18b20 на одной линии. Удобный микроконтроллер, но всё равно, вечно чего-то не хватает в командах после процессоров.
А динамическая индикация через последовательный вывод - это не так и сложно, особенно если не нужен последовательный порт - то проще через него выводить, как раз будут данные и строб. Я так для вывода на панель сделал, ибо программный вывод там не подходил от слова совсем, и теперь надо думать за внешний последовательный порт. Программный вывод медленнее и сложнее, у меня получилось сделать вывод на 16 знакомест, на больше не разбирался, да и вряд ли оно и требуется. Вывести символ не проблема, а вот преобразовать номер знакоместа в позиционный код - уже сложнее.
У любого 51го уарт может работать в режиме ведущего для последовательной выгрузки данных в сдвиговых регистр. Но там привязка к формату данных и типу пересылки фиксирована. Да и карт жалко - связь по rs232/сом порту может понадобиться. По номер/позиция есть "табличное чтение/запись" По тем же DPTR, и R0/R1.
По номер/позиция есть "табличное чтение/запись" По тем же DPTR, и R0/R1.
Можно и так, но я пошёл другим путём - сдвиг единицы и декремент адреса. Для 8 разрядов это очень просто, если больше - то тут уже надо делать программную отметку по достижению переноса, что первый байт - нули, и повторять сдвиг по новой. Не слишком я люблю табличные значения. Хотя преобразование той же температуры 18b20 сделал именно табличным методом, так оказалось проще.
А насчёт юарта - да, нужен, но выводить 160 байт 50 раз в секунду может только он, в данном случае пришлось пожертвовать.
Спасибо ! Инструкция. STC15F2K60S2 - en. pdf. Стр 320 - 327. Нарисована схема и даны листинги на Си и Ассемблер. Посмотрите пож-ста. Сюда загрузить эту инструкцию не получилось Спасибо Вам
Так у той STC15F2K60S2 есть свой аппаратный SPI. Под него и пример сделан. (да и не у всех эта даташитина имеется) Плюс там или перегрузка по катодам будет или таки замутили посегментное сканирование (еще та заморочка по времени и качеству свечения)...Бегло ту схемку просмотрел, в программу не вникал. В другом МК будет все по другому. Можно или ногодрыг или уарт использовать в случае "классики" (на 4-8 позиционные дисплеи и ногодрыга хватает при современных матрицах). Или Вам вашу схему с программой надо выкладывать в таком случае- тогда о чем то конкретном можно говорить. Но то уже или в отдельной теме или пожалуйте в мою котуинку viewtopic.php?f=62&t=156720 чтоб тему ассемблера разборками с конкретной самоделкой не перегружать.
Снова имеется вопрос. Ближайший брат 51 - 52 имеет таймер Т2. Какой адрес вектора его прерывания? Не могу найти, логика подсказывает, что это 2Bh, но кто знает.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Это как основа... Шаг векторов в LCALL addr. Но в то же время лучше всего посмотреть в даташит конкретной микросхемы конкретного производителя по системе прерываний. Адрес 0х002B может также или совмещаться с другими источниками прерываний (как у атмела T2 ИЛИ EXF2 к примеру) или замещаться другими источниками полностью (при отсутствии на кристалле Т2).
Здравствуйте. Заинтересовали микроконтроллеры STC на СИ. Использую Кейл C51, как собственно и рекомендует производитель. Раньше с компилятором C51 дела не имел. Никак не могу понять, есть ли возможность использовать inline функции? Пока создалось такое ощущение, что нет от слова совсем.
А динамическая индикация через последовательный вывод - это не так и сложно, особенно если не нужен последовательный порт - то проще через него выводить, как раз будут данные и строб. Я так для вывода на панель сделал, ибо программный вывод там не подходил от слова совсем, и теперь надо думать за внешний последовательный порт.
Долго я не занимался этим проектом, люминисцентной панелью 20*4, 5*7 знакоместо, это я про неё говорил, что программный выход не подходит. Однако, внешний порт делать не хотелось, пришлось всё же программно выводить данные и освободить УАПП. И всё получилось. Правда, тут уже пошли ограничения на частоту кварца. И вот за что я люблю 89с2051 - работают при оверклокинге. Если с кварцем 22.1184МГц всё еле жило, то увеличив частоту до (ближайшей кратной частоты, что есть в наличии) 58.9824МГц всё продолжило работать, и хватать времени на всё.
STC на СИ. ... есть ли возможность использовать inline функции?
Используйте С++, в котором это есть изначально. И глубина проверки кода при компиляции в С++ больше, чем в С. Заметьте, что никто не обязывает использовать в С++ классы, он полноценно поддерживает парадигму функционального программирования.
Electricman писал(а):
увеличив частоту до (ближайшей кратной частоты, что есть в наличии) 58.9824МГц
То есть вместо того, чтобы взять подходящие МК, вы ставите в позу членистоногого малыша 2051. Вас бы так. Возьмите хотя Cygnal (Silicon Labs), работающие на 100МГц, а ещё лучше переходите на RISC-V или ARM.
Что поделать, я использую то, что могу запрограммировать на коленке и к чему знаю машкоды.
Ну а так да, 59МГц - много, 36.864 хватит за глаза, да даже 33.1776. Уже небольшое превышение, хотя и тут глюков не замечено, разве что надо сброс нажимать через раз при включении.
Используйте С++, в котором это есть изначально. И глубина проверки кода при компиляции в С++ больше, чем в С. Заметьте, что никто не обязывает использовать в С++ классы, он полноценно поддерживает парадигму функционального программирования.
Не совсем понял. Вопрос был про то, что не получается заставить компилятор C51 для keil использовать встроенные функции. Вы же предлагаете использовать С++. А какой компилятор предлагаете использовать? И какую среду разработки?
Прошу прощение за опечатку, не встроенных, а встраиваемых, хотя первоначально я написал правильно именно inline. Проблема в том, что тот компилятор, который идёт в комплекте с кейл для msc-51, воспринимает объявления inline функций как ошибку. А другого компилятора вроде и нет. Поэтому не могу понять, при чем тут С++. Или все таки другой компилятор есть и его можно подключить?
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения