СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть
Это сообщение показано отдельно, перейти в тему, где размещено сообщение: Дешифратор АБ
Старый 03.12.2013, 09:28   #11 (ссылка)
ЛИИЖТ АТ-103 (1981-1986)
 
Аватар для Просто инженер АиТ

Регистрация: 16.10.2012
Адрес: Где резной палисад
Возраст: 64
Сообщений: 980
Поблагодарил: 220 раз(а)
Поблагодарили 140 раз(а)
Фотоальбомы: не добавлял
Репутация: 380
"С" подходит для написания большого круга программного обеспечения. Как-то мы создавали "Надтональный модем", часть обрабатывалась Программируемой Логической Матрицей (большое быстродействие, возможность параллельной обработки) (можно сказать ПЛМ была сопроцессором), другая часть процессором (Zilog (Z8F6423)). Первоначально ПО делалось на ассемблере (2года)(большое время написания, большие сложности отладки). Затем потребовалось переписать полностью ПО и мне пришлось его переписывать (я не был разработчиком ПО на ассемблере), я решил сделать ПО на "С" (классический "С") - 2 месяца!, хотя многие утверждали, что для ПО на "С" не хватить быстродействия процессора и ОЗУ.
"С" - замечательный язык, кроме того, там где требуется большое быстродействие (например, обработчик прерывания), без проблем можно сделать ассемблерную вставку прямо в "С" исходнике. "С++" - еще более интересный, но тут надо поменять подход к программированию.
Многие ОС написаны на "С" (Linux, QNX).
Всего Вам доброго и удачи!

Просто инженер АиТ добавил 03.12.2013 в 10:28
Цитата:
Алгоритм КПТШ с горем пополам написан.
Есть два основных подхода к программированию:
- от алгоритма (классический, общепринятый),
- от данных.
Если правильно структурировать данные, то может получится очень простой алгоритм. Например. для КПТШ делаем таблицу изменения состояния с установлением времени изменения. На прерывании от таймера проверяем пришло ли время изменения, если да, то меняем состояние выхода (Out^=0x01, сбрасываем счетчик времени и увеличиваем индекс (++Index%=N; где N - количество состояний кода) чтения таблицы. Примерно так. Программа получается на три страницы (одна на таблицу, другая на программирование таймера
struct StCode { // Структура задания Кода.
unsigned short Green[6];
unsigned short Yellow[4];
unsigned short Red[2];
};
// Задание кода для КПТШ 5/8
StCode KPTSH59 = { {350, 120, 220, 120, 570}, // Код З
{380, 120, 380, 720}, // Код Ж
{230, 570}, }; // Код КЖ

// Старт ПО.
void main ()
{
SetIntTime (): // Программирование Таймера.
for ( ; ; ); // Бесконечный цикл.
}
viod SetIntTime ()
{
// Программирование Таймера на Прерывания 1 мс.
... // Зависит от CPU.
}, третья на обработчик).
Вообще-то может и страницы хватить.
Удачи.
__________________
Не важна реальность, важно как мы к ней относимся!

Последний раз редактировалось Просто инженер АиТ; 03.12.2013 в 09:28. Причина: Добавлено сообщение
Просто инженер АиТ вне форума   Цитировать 0
 Нажмите здесь, чтобы написать комментарий к этому сообщению  
 

Яндекс.Метрика