- привести значение скорости к цене младшего разряда;
занести по адресам 8-9 в слове индификатор от УСВИЦ-250;
занести по адресам 30-29 в слове о достоверности слова;
подсчитать четность слова и занести по адресу 31 в слове.
Занести по адресам 0-8 в слове адрес слова;
4. Подпрограмма, осуществляющая выдачу слова в магистраль с частотой 12.5КГц, должна выполнять следующие возложенные на нее функции:
- обеспечивать частоту вывода 12.5КГц;
обеспечивать выдачу последовательно 206, 207 и 271 слова;
Подпрограмма, осуществляющая выдачу приборной скорости в аналоговом виде и должна выполнять следующие возложенные на нее функции:
записи в регистр ЦАП приборной скорости;
сделать паузу для записи в регистр;
установить флаг в ЦАП о записи в регистр.
Файловая структура подсистемы представляет собой совокупность шести файлов, один из которых содержит основной текст программы SPEED.C , со всеми вышеперечисленными основными и вспомогательными подпрограммами. Другие файлы - содержат подпрограммы написаны на ассемблере используемых в основной программе. При помощи интегрированной среды Project-51 программа компилируется и, в случае, успешного результата обработки, создает файл SPEED.HEX, содержащий исходный код программы в шестнадцатиричном виде. Полученный исполняемый программный код при помощи программатора, подключенного к компьютеру, заносится в микроконтроллер для последующего выполнения и тестирования, обнаружения возможных допущенных при программировании ошибок.
Для отладки созданного программного кода, внутрисхемный эмулятор устанавливался на опытный образец печатной платы с напаянными на ней всеми необходимыми для корректной работы микросхемами и навесными элементами (резисторы, конденсаторы). Все микросхемы, установленные на плате, в совокупности с микроконтроллером и его программным обеспечением, составляют разрабатываемый контроллер. Подобная отладка, с применением осциллографа, контрольного пульта ПК-10, дает вполне ясную картину программно генерируемых сигналов с микроконтроллера. Осциллограф позволяет в удобной форме проследить периодичность генерации сигналов и длительность процессов, которые они вызывают в схеме, а ПК-10 достоверность выходного слова. Также довольно легко наблюдать принимаемые микроконтроллером на обработку сигналы, поступающие с других микросхем. Применение осциллографа и ПК-10, при отладке программы на реальной аппаратуре, необходимо, и безусловно, значительно облегчает отладку и доработку исходного текста программы.
Описание структуры полей программы
Переменные для временных обработак и константы с их адресами
const int speed=172 - служит для добавления при наземном контролле контроллера;
const int test_speed=2 - служит для добавления при проверки масок приборной и максимальной скорости;
static int a @ 0x18 - временная преременная;
static int flag @ 0x18 - временная преременная;
static int flag1 @ 0x1a - временная преременная;
Переменные для выходного слова адрес 206 по РТМ с их адресами
static unsigned long SlVmd @ 0x10;
static unsigned char SlVmd_1 @ 0x10;
static unsigned char SlVmd_2 @ 0x11;
static unsigned char SlVmd_3 @ 0x12;
static unsigned char SlVmd_4 @ 0x13;
Переменные для выходного слова адрес 207 по РТМ с их адресами
static unsigned long SlVpr @ 0x3c;
static unsigned char SlVpr_1 @ 0x3c;
static unsigned char SlVpr_2 @ 0x3d;
static unsigned char SlVpr_3 @ 0x3e;
static unsigned char SlVpr_4 @ 0x3f;
Переменные для выходного слова адрес 271 по РТМ с их адресами
static unsigned long SlDs @ 0x38;
static unsigned char SlDs_1 @ 0x38;
static unsigned char SlDs_2 @ 0x39;
static unsigned char SlDs_3 @ 0x3a;
static unsigned char SlDs_4 @ 0x3b;
Переменная для выдачи на ЦАП с его адресом
static unsigned int CapSlowo @ 0x14;
Переменные для рабочих областей стеков с их адресами
static unsigned long Stec @ 0x28;
static unsigned int Stec1 @ 0x28;
static unsigned int Stec2 @ 0x2a;
Переменные для сохранение переведенных скоростей с их адресами
static unsigned int StecVprd @ 0x30;
static unsigned int StecVmdd @ 0x32;
Переменные вводимых скорости с приборной скорости маски с их адресами
static unsigned int Vprg @ 0x20;
static unsigned int Vmdg @ 0x24;
Переменные вводимых скорости с максимальной скорости маски с их адресами
static unsigned int Vprd @ 0x22;
static unsigned int Vmdd @ 0x26;
Переменные рабочее слово SlRab расписаны в битовой резидентной памяти по битам и словам с их адресами
static unsigned long SlRab @ 0x2c;
static unsigned char SlRab_4 @ 0x2c;
static unsigned char SlRab_3 @ 0x2d;
static unsigned char SlRab_2 @ 0x2e;
static unsigned char SlRab_1 @ 0x2f;
static unsigned char Adress @ 0x2f - по этому адресу находится адрес выходного слова;
static bit unsigned char SlRab_bit31 @ 0x67;
static bit unsigned char SlRab_bit30 @ 0x66;
static bit unsigned char SlRab_bit29 @ 0x65;
static bit unsigned char SlRab_bit28 @ 0x64;
static bit unsigned char SlRab_bit27 @ 0x63;
static bit unsigned char SlRab_bit26 @ 0x62;
static bit unsigned char SlRab_bit25 @ 0x61;
static bit unsigned char SlRab_bit24 @ 0x60;
static bit unsigned char SlRab_bit23 @ 0x6f;
static bit unsigned char SlRab_bit22 @ 0x6e;
static bit unsigned char SlRab_bit21 @ 0x6d;
static bit unsigned char SlRab_bit20 @ 0x6c;
static bit unsigned char SlRab_bit19 @ 0x6b;
static bit unsigned char SlRab_bit18 @ 0x6a;
static bit unsigned char SlRab_bit17 @ 0x69;
static bit unsigned char SlRab_bit16 @ 0x68;
static bit unsigned char SlRab_bit15 @ 0x77;
static bit unsigned char SlRab_bit14 @ 0x76;
static bit unsigned char SlRab_bit13 @ 0x75;
static bit unsigned char SlRab_bit12 @ 0x74;
static bit unsigned char SlRab_bit11 @ 0x73;
static bit unsigned char SlRab_bit10 @ 0x72;
static bit unsigned char SlRab_bit9 @ 0x71;
static bit unsigned char SlRab_bit8 @ 0x70;
static bit unsigned char SlRab_bit7 @ 0x7f;
static bit unsigned char SlRab_bit6 @ 0x7e;
static bit unsigned char SlRab_bit5 @ 0x7d;
static bit unsigned char SlRab_bit4 @ 0x7c;
static bit unsigned char SlRab_bit3 @ 0x7b;
static bit unsigned char SlRab_bit2 @ 0x7a;
static bit unsigned char SlRab_bit1 @ 0x79;
static bit unsigned char SlRab_bit0 @ 0x78;
Переменные приборной скорости в коде Грея расписаны в битовой резидентной памяти по битам с их адресами
static bit unsigned char Vprg_bit9 @ 0x01;
static bit unsigned char Vprg_bit8 @ 0x00;
static bit unsigned char Vprg_bit7 @ 0x0f;
static bit unsigned char Vprg_bit6 @ 0x0e;
static bit unsigned char Vprg_bit5 @ 0x0d;
static bit unsigned char Vprg_bit4 @ 0x0c;
static bit unsigned char Vprg_bit3 @ 0x0b;
static bit unsigned char Vprg_bit2 @ 0x0a;
static bit unsigned char Vprg_bit1 @ 0x09;
static bit unsigned char Vprg_bit0 @ 0x08;
Переменные приборной скорости в двоичном коде расписаны в битовой резидентной памяти по битам с их адресами
static bit unsigned char Vprd_bit9 @ 0x11;
static bit unsigned char Vprd_bit8 @ 0x10;
static bit unsigned char Vprd_bit7 @ 0x1f;
static bit unsigned char Vprd_bit6 @ 0x1e;
static bit unsigned char Vprd_bit5 @ 0x1d;
static bit unsigned char Vprd_bit4 @ 0x1c;
static bit unsigned char Vprd_bit3 @ 0x1b;
static bit unsigned char Vprd_bit2 @ 0x1a;
static bit unsigned char Vprd_bit1 @ 0x19;
static bit unsigned char Vprd_bit0 @ 0x18;
Переменные максимальной скорости в коде Грея расписаны в битовой резидентной памяти по битам с их адресами
static bit unsigned char Vmdg_bit9 @ 0x21;
static bit unsigned char Vmdg_bit8 @ 0x20;
static bit unsigned char Vmdg_bit7 @ 0x2f;
static bit unsigned char Vmdg_bit6 @ 0x2e;
static bit unsigned char Vmdg_bit5 @ 0x2d;
static bit unsigned char Vmdg_bit4 @ 0x2c;
static bit unsigned char Vmdg_bit3 @ 0x2b;
static bit unsigned char Vmdg_bit2 @ 0x2a;
static bit unsigned char Vmdg_bit1 @ 0x29;
static bit unsigned char Vmdg_bit0 @ 0x28;
Переменные максимальной скорости в двоичном коде расписаны в битовой резидентной памяти по битам с их адресами
static bit unsigned char Vmdd_bit9 @ 0x31;
static bit unsigned char Vmdd_bit8 @ 0x30;
static bit unsigned char Vmdd_bit7 @ 0x3f;
static bit unsigned char Vmdd_bit6 @ 0x3e;
static bit unsigned char Vmdd_bit5 @ 0x3d;
static bit unsigned char Vmdd_bit4 @ 0x3c;
static bit unsigned char Vmdd_bit3 @ 0x3b;
static bit unsigned char Vmdd_bit2 @ 0x3a;
static bit unsigned char Vmdd_bit1 @ 0x39;
static bit unsigned char Vmdd_bit0 @ 0x38;
Форматы 206, 207 слова состоят из 32 разрядов который показан в таблице 2.2 .
Таблица 2.2
31 | 30 | 29 | 28 | 27-11 | 10 | 9 | 8 | 7-0 |
CRC | состояние | Знак | данные | Точность | Идентификатор | адрес |
Матрица состояния информации параметров.
Разряды в слове | Наименование функции | |
31 | 30 | |
0 | 0 | Предупреждение об отказе |
0 | 1 | Нет вычисленных данных |
1 | 0 | Функциональный тест |
1 | 1 | Нормальная работа |
Алгоритм функционирования контроллера
Контроллер включает в себя следующие функции :
- Сброс сторожевого таймера;
- Очстка всех областей переменных;
- Подготовка вывода слова 206 с признаком "нет вычисленных данных";
- Подготовка вывода слова 207 с признаком "нет вычисленных данных";
- Заполнение сохраненного значения приборной скорости;
- Заполнение сохраненного значения максимальной скорости;
- Цикл проверки на отказ маски приборной скорости;
- Цикл проверки на отказ маски максимальной скорости;
- Проверка на наличие разовой команды тест контроля;
- Маштабирование приборной скорости для выдачи в ЦАП;
- Тестирование ПО;
- Формирование слова адрес 271 в соответствии с признаками об тестирования ПО;
- Формирование выходного слова адрес 206 в соответствии с РТМ, изм,3;
- Формирование выходного слова адрес 207 в соответствии с РТМ, изм,3;
- Сброс сторожевого таймера.
В настоящем разделе выпускной работы были проведены
следующие работы:
- был проведен анализ структуры программы контроллера;
- был рассмотрен алгоритм функционирования контроллера.
Описание функций основных модулей системы.
Основной файл системы является проэктный файл - SPEED.PRJ, в которой: указывается путь к файлам системы, установка адресов ПЗУ, ОЗУ, стека, векторов прерывания и параметров контроллера, список компилируемых файлов.
voidmain(void)
{
/*---------- Запуск таймера на вывод --------------------------------------*/
set_vector(TIMER0,Timer);
Zapusk();
/*-------- Сброс сторожевого таймера --------------------------------------*/