Счетчик обратного отсчета - Курсовая работа

бесплатно 0
4.5 48
Разработка программы на языке Assembler, отсчитывающую время от заданного значения до 0. Осуществление ввода с помощью стандартной шестнадцатикнопочной терминальной клавиатуры, подключаемой к параллельному порту (P1). Логика построения программы.


Аннотация к работе
Кафедра электронно-вычислительной аппаратуры Курсовая работа по дисциплине «Микропроцессорные системы» Тема “Счетчик обратного отсчета” Москва - 2007 Оглавление Техническое задание Описание работы программы Текст программы Техническое задание Разработать программу на языке Assembler, отсчитывающую время от заданного значения до 0. Переход в режим установки времени необходимо осуществлять нажатием клавиши 0. Описание работы программы Логика построения программы Исходя из ТЗ сформируем следующую блок-схему работы основной программы: Устройства ввода Для ввода данных используется стандартная шестнадцатикнопочная клавиатура, подключаемая к параллельному порту (P1). Особенностью данной клавиатуры, которую надо учитывать при программировании, является наличие переходного процесса (дребезга) с длительностью в несколько раз большей, чем время машинного цикла ОМЭВМ МК8051: Текст программы ORG 8000h; jmp lbMain ORG 800Bh; jmp intTF0 lbMain: ; конфигурируем таймер T0: anl TMOD, #0F0h; обнуляем младшую тетраду orl TMOD, #01h; младшую тетраду приводим к виду 0001 clr TR0; остановка таймера T0 (таймер - не считает) ; загружаем старший и младший байты регистра таймера T0 нулями: mov TH0, #0 mov TL0, #0 ; настраиваем систему прерываний: mov IP, #0; все прерывания (пока) - с одинаковым низким уровнем приоритета mov IE, #10000010b; IEN0: выставили биты EA(7),ES(4),ET0(1) ;mov 0E8h, #00001011b; IEN1: выставили биты 0,1,3 mov P1, #00001111b mov 0EBh,#0FFh; ;;;; ОПИСАНИЕ ПЕРЕМЕННЫХ: ;;;; ;регистр R0 - единицы ;регистр R1 - десятки ;регистр R2 - сотни ;регистр R3 - тысячи ;регистры R4, R5, R6 - для разных промежуточных значений ;регистр R7 - буфер для хранения значения нажатой клавиши [#0..#9] или ; значения #FFh, если клавиша не нажата CR equ 0Dh; возврат каретки LF equ 0Ah; перевод строки ESC equ 1Bh; конец сообщения Buf_R0 equ 20h Buf_R1 equ 21h Buf_R2 equ 22h Buf_R3 equ 23h ;;;; ТЕЛО ПРОГРАММЫ: ;;;; ;задаём начальное время: mov R0, #0; mov R1, #2; mov R2, #1; mov R3, #0; mov Buf_R0, R0 mov Buf_R1, R1 mov Buf_R2, R2 mov Buf_R3, R3 mov DPTR, #msgShowTime_Mode call prShowMessage; вывод сообщения msgShowTime_Mode setb TR0 mov R4, #13 lbMainLoop: nop clr A add A, R0 add A, R1 add A, R2 add A, R3 jz lbFinal call prIs_SetTime_Mode; jmp lbMainLoop ;call prDelay; ;call prDisplay; ;call prIs_SetTime_Mode; intTF0: clr TF0 djnz R4, lbTF0_End; ; реализация обратного отсчёта: dec R0 cjne R0, #0FFh, lbTF0_Next1; mov R0, #9 dec R1 cjne R1, #0FFh, lbTF0_Next1; mov R1, #9 dec R2 cjne R2, #0FFh, lbTF0_Next1; mov R2, #9 dec R3 cjne R3, #0FFh, lbTF0_Next1; lbTF0_Next1: mov R4, #13 lbTF0_End: call prDisplay reti lbFinal: clr TR0 mov DPTR, #msgFinal call prShowMessage ;call prIs_SetTime_Mode; jmp $ ;;;; ОПИСАНИЕ ПРОЦЕДУР: ;;;; ;; процедура prDelay: ; lb5: mov R5, #1; ; ; lb3: djnz R6, lb3 ; djnz R4, lb3 ; djnz R5, lb3 ; ; ret ; ; prDelay: ; mov R6, #0 ; mov R4, #0 ; mov R5, #6 ; call lb3 ; ; mov R4, #244; (!!!) ; call lb5 ; ; mov R4, #1 ; mov R6, #118; (!!!) Это следует менять для подстройки задержки!!!.
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?