4.2 Разработка алгоритма ПО
Шаги разработок программного обеспечения следующие:
постановка задачи;
разработка последовательности действий микропроцессора, обеспечивающей выполнение поставленных задач;
написание текстов программ по готовому алгоритму и подготовка их к трансляции с помощью текстового редактора;
компиляция программы ;
исправление ошибок, выявленных компилятором, с помощью текстового редактора, перетрансляция;
создание и сохранение библиотек часто используемых объектных модулей с именем LIB-51;
линковка результирующих перемещаемых объектных модулей и распределение памяти под объектную программу с помощью RL51;
если требуется использование программируемого ПЗУ, программа, прожигаемая в ПЗУ, создается ОН;
проверка результирующей программы осуществляется символьным отладчиком или другими программными средствами.
Выбираем следующий алгоритм работы RAM-диска:
основная программа представляет собой бесконечный цикл, в теле которого осуществляется опрос состояния байта статуса;
в зависимости от значения байта статуса выполняется вызов соответствующей подпрограммы обработки данного события и последующий возврат в основной цикл.
Таблица 4.1Значения байта статуса
Значение байта status |
Значение события |
|
01 |
Чтение байта из SDRAM. Адрес читаемого байта хранится в специальной переменной Adr_Read |
|
02 |
Чтение блока байт из SDRAM. Адрес читаемого первого байта хранится в специальной переменной Adr_Read_From, адрес читаемого последнего байта хранится в специальной переменной Adr_Read_To |
|
03 |
Запись байта в SDRAM. Адрес записываемого байта хранится в специальной переменной Adr_Write |
|
04 |
Запись блока байт в SDRAM. Адрес первого записываемого байта хранится в специальной переменной Adr_Write_From, адрес последнего записываемого байта хранится в специальной переменной Adr_Write_To |
На рисунках 4.1 и 4.2 приведены блок-схемы алгоритмов основной программы и прерывания от внешнего устройства RI соответственно.
Рисунок 4.1 Алгоритм основной программы
Рисунок 4.2 Алгоритм прерывания RI
Выводы
В рамках курсового проекта было разработано устройство RAM-диск, позволяющее считывать, записывать и хранить информацию в модулях динамической памяти типа SDRAM под управлением микроконтроллера.
Разработаны структурная и принципиальная схемы устройства.
Выполнен обоснованный выбор элементной базы.
Разработано программное обеспечение.
Приложение А Текст программы
компьютерное устройство диск память
GKI: PROCEDURE (V_ADR,V_END) BYTE;
DECLARE I BYTE;
DO I=0 TO V_END;
P2=V_ADR;
CALL TIME (30);
P1=01H;
V_ADR=V_ADR+1;
END;
END GKI;
SET_STATUS: PROCEDURE;
IF ADR_REC=01H THEN
DO;
STATUS=01H;
ADR_READ=ADR_REC-1;
END;
IF ADR_REC=02H THEN
DO;
STATUS=02H;
ADR_READ_FROM=ADR_REC-1;
ADR_READ_TO=ADR_REC-2;
ADR_READ=ADR_READ_FROM;
END;
IF ADR_REC=03H THEN
DO;
STATUS=03H;
ADR_WRITE=ADR_REC-1;
V_WRITE=ADR_REC-2;
END;
IF ADR_REC=04H THEN
DO;
STATUS=04H;
ADR_WRITE_FROM=ADR_REC-1;
ADR_WRITE_TO=ADR_REC-2;
ADR_WRITE=ADR_WRITE_FROM;
END;
END SET_STATUS;
RECEIVE_INT: PROCEDURE;
DECLARE I BYTE;
DECLARE V BYTE;
ADR_REC=SBUF;
IF SBUF=FFH THEN CALL SET_STATUS;
ELSE ADR_REC=ADR_REC+1;
END RECEIVE_INT;
RECEIVE_INTV:PROCEDURE INTERRUPT 5;
CALL RECEIVE_INT;
END KEY_INTV;
INIT_GKI: PROCEDURE;
DECLARE I BYTE;
CALL TIME (150);/* DELAY OF TIMER 15MS*/
P2=0CH; /*SET PARAM*/
CALL TIME (100);
P2=0CH;
CALL TIME (30);
P2=08H;
DO I=1 TO 10;
CALL TIME (100);
END;
P2=20H;
DO I=1 TO 10;
CALL TIME (100);
END;
P2=20H;
DO I=1 TO 10;
CALL TIME (100);
END;
P2=04H;
CALL TIME (40);
P2=18H;
END INIT_GKI;
STATUS_01 PROCEDURE;
CALL GKI (90H,94H);
SBUF=ADR_READ;
END STATUS_01;
STATUS_02 PROCEDURE;
DECLARE I BYTE;
CALL GKI (90H,94H);
D0 I=ADR_READ_FROM TO ADR_READ_TO;
SBUF=ADR_READ;
ADR_READ=ADR_READ+1;
END;
END STATUS_02;
STATUS_03 PROCEDURE;
CALL GKI(95H,98H);
ADR_WRITE=V_WRITE;
END STATUS_03;
STATUS_04 PROCEDURE;
DECLARE I BYTE;
CALL GKI(95H,98H);
DO I=ADR_WRITE_FROM TO ADR_WRITE_TO;
ADR_WRITE=V_WRITE;
ADR_WRITE=ADR_WRITE+1;
END;
END STATUS_03;
MAIN_PROG:DO;
DECLARE STATUS BYTE PUBLIC;
DECLARE V_TMOD BYTE AT (89H) MAIN PUBLIC;
DECLARE V_TCON BYTE AT (88H) MAIN PUBLIC;
DECLARE V_TH0 BYTE AT (8CH) MAIN PUBLIC;
DECLARE V_TL0 BYTE AT (8AH) MAIN PUBLIC;
DECLARE V_TH1 BYTE AT (8DH) MAIN PUBLIC;
DECLARE V_TL1 BYTE AT (8BH) MAIN PUBLIC;
DECLARE ADR_READ BYTE PUBLIC;
DECLARE ADR_WRITE BYTE PUBLIC;
DECLARE ADR_READ_FROM BYTE PUBLIC;
DECLARE ADR_READ_TO BYTE PUBLIC;
DECLARE ADR_WRITE_FROM BYTE PUBLIC;
DECLARE ADR_WRITE_TO BYTE PUBLIC;
DECLARE V_WRITE BYTE PUBLIC;
DECLARE MSG(9) BYTE AT (90H) MAIN;
MSG(0)=25H;/*R*/
MSG(1)=54H;/*E*/
MSG(2)=14H;/*A*/
MSG(3)=44H;/*D*/
MSG(4)=75H;/*W*/
MSG(5)=25H;/*R*/
MSG(6)=94H;/*I*/
MSG(7)=45H;/*T*/
MSG(8)=54H;/*E*/
STATUS=00H;
CALL INIT_GKI;
ENABLE;
CHECK_STATUS:DO WHILE STATUS<10H;
IF STATUS=00H THEN CALL STATUS_00;
IF STATUS=01H THEN CALL STATUS_01;
IF STATUS=02H THEN CALL STATUS_02;
IF STATUS=03H THEN CALL STATUS_03;
END CHECK_STATUS;
END MAIN_PROG;
Приложение В Таблица символьной кодировки
Приложение С Принципиальная схема устройства
- Оперативная память. Sram, dram, sdram.
- Микроконтроллеры с внешней памятью
- 4.2.3. Оперативная память (ram).
- 16-И 32-разрядные микроконтроллеры (микроконтроллеры с внешней памятью).
- Принцип работы памяти sdram
- 35) Синхронные динамические озу (sdram)
- 1.4.4. Оперативная память (озу или ram)
- Оперативная память (sdram)
- Параметры управления ram-диском