Только будет ли Вам толк с той информации? Практически большинство программ под динамикудля 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 функций как ошибку. А другого компилятора вроде и нет. Поэтому не могу понять, при чем тут С++. Или все таки другой компилятор есть и его можно подключить?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения