Калькулятор на основе микропроцессора

Автор работы: Пользователь скрыл имя, 09 Сентября 2011 в 08:05, курсовая работа

Описание

В курсовой работе разрабатывается калькулятор на выполнение арифметических функций («+», «-», «*», «/») в 16-ой системе. В работе использовались прерывания от последовательного порта и таймера. Работа выполняется на системе “прототип” на основе микроконтроллера 51 семейства.

Содержание

1. Техническое задание
2. Анализ технического задания
3. Алгоритм основной программы
4. Алгоритмы обработчиков прерываний
4.1 Алгоритм обработчика com порта
4.2 Алгоритм обработчика прерываний от таймера T2
5. Основная программа
6. Программа прерывания от клавиатуры ПК
7. Программа прерывания от матричной клавиатуры
8. Заключение
9. Литература

Работа состоит из  1 файл

Калькулятор на основе микропроцессора.doc

— 102.50 Кб (Скачать документ)

     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

Информация о работе Калькулятор на основе микропроцессора