Автор работы: Пользователь скрыл имя, 09 Сентября 2011 в 08:05, курсовая работа
В курсовой работе разрабатывается калькулятор на выполнение арифметических функций («+», «-», «*», «/») в 16-ой системе. В работе использовались прерывания от последовательного порта и таймера. Работа выполняется на системе “прототип” на основе микроконтроллера 51 семейства.
1. Техническое задание
2. Анализ технического задания
3. Алгоритм основной программы
4. Алгоритмы обработчиков прерываний
4.1 Алгоритм обработчика com порта
4.2 Алгоритм обработчика прерываний от таймера T2
5. Основная программа
6. Программа прерывания от клавиатуры ПК
7. Программа прерывания от матричной клавиатуры
8. Заключение
9. Литература
call VIVOD_SECOND_NUM
call WAIT_TI
call SLEEP
jmp END_KEY_1
;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;
NUM2_1:
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R4, #00000000b, ONFIRSTNUM1_2
mov A, #1h
swap A
mov R4,A
call VIVOD_FIRST_NUM
call WAIT_TI
call SLEEP
jmp END_KEY_1
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUM1_2:
mov A, R4
add A, #1h
mov R4, A
mov R5, #00000001b
call VIVOD_SECOND_NUM
call WAIT_TI
call SLEEP
END_KEY_1:
ret
key0:
cjne R5, #00000000b, SECOND_NUM
mov A, R3
call VIVOD_SECOND_NUM
call WAIT_TI
call SLEEP
mov R5, #00000001b
jmp END_KEY_0
SECOND_NUM:
mov A, R4
call VIVOD_SECOND_NUM
call WAIT_TI
call SLEEP
jmp END_KEY_0
END_KEY_0:
ret
key7:
cjne R5, #00000000b, NUM2_7
;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R3, #00000000b, ONFIRSTNUM7_1
mov A, #7h
swap A
mov R3,A
call VIVOD_FIRST_NUM
call WAIT_TI
call SLEEP
jmp END_KEY_7
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUM7_1:
mov A, R3
add A, #7h
mov R3, A
mov R5, #00000001b
call VIVOD_SECOND_NUM
call WAIT_TI
call SLEEP
jmp END_KEY_7
;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;
NUM2_7:
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R4, #00000000b, ONFIRSTNUM7_2
mov A, #7h
swap A
mov R4,A
call VIVOD_FIRST_NUM
call WAIT_TI
call SLEEP
jmp END_KEY_7
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUM7_2:
mov A, R4
add A, #7h
mov R4, A
mov R5, #00000001b
call VIVOD_SECOND_NUM
call WAIT_TI
call SLEEP
END_KEY_7:
ret
keyB:
cjne R5, #00000000b, NUM2_B
;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R3, #00000000b, ONFIRSTNUMB_1
mov A, #0bh
swap A
mov R3,A
call VIVOD_FIRST_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_B
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUMB_1:
mov A, R3
add A, #0bh
mov R3, A
mov R5, #00000001b
call VIVOD_SECOND_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_B
;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;
NUM2_B:
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R4, #00000000b, ONFIRSTNUMB_2
mov A, #0bh
swap A
mov R4,A
call VIVOD_FIRST_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_B
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUMB_2:
mov A, R4
add A, #0bh
mov R4, A
mov R5, #00000001b
call VIVOD_SECOND_HEX
call WAIT_TI
call SLEEP
END_KEY_B:
ret
keyA:
cjne R5, #00000000b, NUM2_A
;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R3, #00000000b, ONFIRSTNUMA_1
mov A, #0ah
swap A
mov R3,A
call VIVOD_FIRST_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_A
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUMA_1:
mov A, R3
add A, #0ah
mov R3, A
mov R5, #00000001b
call VIVOD_SECOND_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_A
;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;
NUM2_A:
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R4, #00000000b, ONFIRSTNUMA_2
mov A, #0ah
swap A
mov R4,A
call VIVOD_FIRST_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_A
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUMA_2:
mov A, R4
add A, #0ah
mov R4, A
mov R5, #00000001b
call VIVOD_SECOND_HEX
call WAIT_TI
call SLEEP
END_KEY_A:
ret
keyD:
cjne R5, #00000000b, NUM2_D
;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R3, #00000000b, ONFIRSTNUMD_1
mov A, #0dh
swap A
mov R3,A
call VIVOD_FIRST_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_D
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUMD_1:
mov A, R3
add A, #0dh
mov R3, A
mov R5, #00000001b
call VIVOD_SECOND_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_D
;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;
NUM2_D:
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R4, #00000000b, ONFIRSTNUMD_2
mov A, #0dh
swap A
mov R4,A
call VIVOD_FIRST_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_D
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUMD_2:
mov A, R4
add A, #0dh
mov R4, A
mov R5, #00000001b
call VIVOD_SECOND_HEX
call WAIT_TI
call SLEEP
END_KEY_D:
ret
keyC:
cjne R5, #00000000b, NUM2_C
;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R3, #00000000b, ONFIRSTNUMC_1
mov A, #0ch
swap A
mov R3,A
call VIVOD_FIRST_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_C
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla
ONFIRSTNUMC_1:
mov A, R3
add A, #0ch
mov R3, A
mov R5, #00000001b
call VIVOD_SECOND_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_C
;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;
NUM2_C:
;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla
cjne R4, #00000000b, ONFIRSTNUMC_2
mov A, #0ch
swap A
mov R4,A
call VIVOD_FIRST_HEX
call WAIT_TI
call SLEEP
jmp END_KEY_C
;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla