Для коректної роботи програми необхідно в її код ввести підпрограми затримок, які будуть імітувати очікування проходження певного заданого інтервалу часу. Ці підпрограми будуть у циклі декрементувати значення регістрів, відраховуючи потрібну нам кількість машинних тактів.
Затримка в 0.3 секунди реалізована у підпрограмі REDRAW. Алгоритм роботи якої зображений на рисунку 19.
Рис 19. Алгоритм роботи підпрограми затримки DELL.
1. Заносимо в R2 значення, необхідні для реалізації потрібного інтервалу затримки,
2. Заносимо в R3 значення, необхідні для реалізації потрібного інтервалу затримки
Враховуємо, що затримка буде (R2)* (R3)* 3 мкс.
4. Декрементуємо R3 поки він не буде рівний 0.
5. Декрементуємо R2.
6. Якщо R2 рівний 0 переходимо до п.3.
Дана підпрограма за час роботи використовує 256 * 256 * 3 = 196608 машинних тактів тривалістю по 1 мкс, тобто створює затримку приблизно рівну 0.2 секунді.
Код програми
IE DATA 0A8H;
IP DATA 0B8H;
P3 DATA 0B0H;
ORG 0
JMP MAIN;
ORG 03H;
JMP SW_15;
ORG 013H;
JMP SW_16;
ORG 100;
MAIN:
MOV DPTR, #0A004h;Гасіння статичного індикатора
MOV A, #0Fh;
MOVX @DPTR, A;
;Дозвіл переривань
MOV IE, #010001111b;
MOV IP, #000000100b;
;Встановлення стратового стану стрічок - вимкнено
MOV R0, #00b; DYNAMIC
MOV R1, #00b; LEDS
LOOPER:
CALL REDRAW;
JMP LOOPER;Зациклення програми
REDRAW:;підпрограма індикації стану стрічок
MOV DPTR, #0A006h;Вивід стану стрічки 2 на світлодіодний індикатор
MOV A, R1;
RL A;
MOVX @DPTR,A;
MOV R1, A;
;Генерування коду світіння знакосинтизуючого індикатора із значення;стану стрічки 1 в регістрі R0
CJNE R0, #010000001b, NO_1;
MOV DPTR, #08000h;
MOV A, #011000b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111101b;
MOVX @DPTR, A; 11000
JMP END_F; 00000
NO_1:
CJNE R0, #011b, NO_2;
MOV DPTR, #08000h;
MOV A, #01100b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111101b;
MOVX @DPTR, A; 01100
JMP END_F; 00000
NO_2:
CJNE R0, #0110b, NO_3;
MOV DPTR, #08000h;
MOV A, #0110b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111101b;
MOVX @DPTR, A;; 00110
JMP END_F; 00000
NO_3:
CJNE R0, #01100b, NO_4;
MOV DPTR, #08000h;
MOV A, #011b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111101b;
MOVX @DPTR, A; 00011
JMP END_F; 00000
NO_4:
CJNE R0, #011000b, NO_5;
MOV DPTR, #08000h;
MOV A, #011b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111110b;
MOVX @DPTR, A; 00000
JMP END_F; 00011
NO_5:
CJNE R0, #0110000b, NO_6;
MOV DPTR, #08000h;
MOV A, #0110b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111110b;
MOVX @DPTR, A; 00000
JMP END_F; 00110
NO_6:
CJNE R0, #01100000b, NO_7;
MOV DPTR, #08000h;
MOV A, #01100b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111110b;
MOVX @DPTR, A; 00000
JMP END_F; 01100
NO_7:
CJNE R0, #011000000b, NO_8;
MOV DPTR, #08000h;
MOV A, #011000b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111110b;
MOVX @DPTR, A; 00000
JMP END_F; 11000
NO_8:
CJNE R0, #00b, NOTHING;
MOV DPTR, #08000h;
MOV A, #00b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111110b;
MOVX @DPTR, A;
JMP END_F;
NOTHING:
MOV DPTR, #08000h;
MOV A, #010101b;
MOVX @DPTR, A;
MOV DPTR, #08002h;
MOV A, #011111110b;
MOVX @DPTR, A; 00000
JMP END_F; 10101 – код помилки
END_F:
MOV A, R0;
RL A;
MOV R0, A;
MOV R3, #0FFh; Затримка в 0.2 сек
C1:
MOV R2, #0ffh;
C2:
DJNZ R2, C2;
DJNZ R3, C1;
RET;
SW_15:;Пуск транспортера
MOV R1, #011b;
MOV R0, #00h;
MOV R4, #012h;
PUSK_DYN:
LCALL REDRAW;
DJNZ R4, PUSK_DYN;
MOV R0, #011b;
RETI;
SW_16:; Зупин транспортера
MOV R0, #00h;
MOV R4, #048h;
STOP_DYN:
LCALL REDRAW;
DJNZ R4, STOP_DYN;
MOV R1, #00b;
RETI;
END
Висновок
В результаті виконання курсової роботи ми вивчили та проаналізували апаратне і програмне забезпечення стенду EV8031/AVR, що дало змогу використовувати його для виконання даної роботи, поставили і виконали задачу автоматизації процесу проявки фотоплівки, розробили і описали алгоритм цього процесу та виконуваної програми.
Все це дало нам змогу краще ознайомитися зі стендом та його можливостями, вдосконалити свої навики роботи з мікропроцесором та покращити знання з мови програмування Асемблер.
Література
1. Методичні вказівки до виконання лабораторних робіт з курсу “Мікропроцесорна техніка“
2. Додатки до методичних вказівок
3. Освітній інтернет ресурс «Вільна Енциклопедія» wikipedia.org