;яті під об'єктну програму за допомогою RL51;
якщо потрібне використання програмованого ПЗУ, програма, пропалює в ПЗУ, створюється ОН;
перевірка результуючої програми здійснюється символьним отладчиком або іншими програмними засобами.
Вибираємо наступний алгоритм роботи RAM-диска:
основна програма являє собою нескінченний цикл, в тілі якого здійснюється опитування стану байта статусу;
залежно від значення байта статусу виконується виклик відповідної підпрограми обробки даної події і наступне повернення в основний цикл.
Таблиця 4.1Значенія байта статусу
Значення байта statusЗначеніе собитія01Чтеніе байта з SDRAM. Адреса читаного байта зберігається в спеціальній змінній Adr_Read02Чтеніе блоку байт з SDRAM. Адреса читаного першого байта зберігається в спеціальній змінній Adr_Read_From, адреса читаного останнього байта зберігається в спеціальній змінній Adr_Read_To03Запісь байта в SDRAM. Адреса записуваного байта зберігається в спеціальній змінній Adr_Write04Запісь блоку байт в 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; I BYTE; I = 0 TO V_END; = V_ADR; TIME (30); = 01H; _ADR = V_ADR +1;; GKI; _STATUS: PROCEDURE ; ADR_REC = 01H THEN; = 01H; _READ = ADR_REC-1;; ADR_REC = 02H THEN; = 02H; _READ_FROM = ADR_REC-1; _READ_TO = ADR_REC-2; _READ = ADR_READ_FROM;; ADR_REC = 03H THEN; = 03H; _WRITE = ADR_REC-1; _WRITE = ADR_REC-2;; ADR_REC = 04H THEN; = 04H; _WRITE_FROM = ADR_REC-1; _WRITE_TO = ADR_REC-2; _WRITE = ADR_WRITE_FROM;; SET_STATUS; _INT: PROCEDURE; I BYTE; V BYTE; _REC = SBUF; SBUF = FFH THEN CALL SET_STATUS; ADR_REC = ADR_REC +1; RECEIVE_INT; _INTV: PROCEDURE INTERRUPT 5; RECEIVE_INT; KEY_INTV; _GKI: PROCEDURE; I BYTE; TIME (150) ;/ * DELA...