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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать документ)

     P1_3_7:

     call key9

     clr TI

     jmp END_HNDL

     END_HNDL:

     mov P1, #0Fh

     mov r7,#0fh

     DEL_1:

     mov r6, #0FFh

     DEL_2:

     nop

     djnz r6, DEL_2

     djnz r7, DEL_1

     reti

     key5:

     cjne R5, #00000000b, NUM2_5

     ;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R3, #00000000b, ONFIRSTNUM5_1

     mov A, #5h

     swap A

     mov R3,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_5

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM5_1:

     mov A, R3

     add A, #5h

     mov R3, A

     mov R5, #00000001b

     call VIVOD_SECOND_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_5

     ;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;

     NUM2_5:

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R4, #00000000b, ONFIRSTNUM5_2

     mov A, #5h

     swap A

     mov R4,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_5

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM5_2:

     mov A, R4

     add A, #5h

     mov R4, A

     mov R5, #00000001b

     call VIVOD_SECOND_NUM

     call WAIT_TI

     call SLEEP

     END_KEY_5:

     ret

     key2:

     cjne R5, #00000000b, NUM2_2

     ;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R3, #00000000b, ONFIRSTNUM2_1

     mov A, #2h

     swap A

     mov R3,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_2

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM2_1:

     mov A, R3

     add A, #2h

     mov R3, A

     mov R5, #00000001b

     call VIVOD_SECOND_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_2

     ;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;

     NUM2_2:

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R4, #00000000b, ONFIRSTNUM2_2

     mov A, #2h

     swap A

     mov R4,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_2

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM2_2:

     mov A, R4

     add A, #2h

     mov R4, A

     mov R5, #00000001b

     call VIVOD_SECOND_NUM

     call WAIT_TI

     call SLEEP

     END_KEY_2:

     ret

     keyF:

     cjne R5, #00000000b, NUM2_F

     ;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R3, #00000000b, ONFIRSTNUMF_1

     mov A, #0fh

     swap A

     mov R3,A

     call VIVOD_FIRST_HEX

     call WAIT_TI

     call SLEEP

     jmp END_KEY_F

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUMF_1:

     mov A, R3

     add A, #0fh

     mov R3, A

     mov R5, #00000001b

     call VIVOD_SECOND_HEX

     call WAIT_TI

     call SLEEP

     jmp END_KEY_F

     ;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;

     NUM2_F:

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R4, #00000000b, ONFIRSTNUMF_2

     mov A, #0fh

     swap A

     mov R4,A

     call VIVOD_FIRST_HEX

     call WAIT_TI

     call SLEEP

     jmp END_KEY_F

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUMF_2:

     mov A, R4

     add A, #0fh

     mov R4, A

     mov R5, #00000001b

     call VIVOD_SECOND_HEX

     call WAIT_TI

     call SLEEP

     END_KEY_F:

     ret

     key8:

     cjne R5, #00000000b, NUM2_8

     ;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R3, #00000000b, ONFIRSTNUM8_1

     mov A, #8h

     swap A

     mov R3,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_8

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM8_1:

     mov A, R3

     add A, #8h

     mov R3, A

     mov R5, #00000001b

     call VIVOD_SECOND_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_8

     ;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;

     NUM2_8:

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R4, #00000000b, ONFIRSTNUM8_2

     mov A, #8h

     swap A

     mov R4,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_8

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM8_2:

     mov A, R4

     add A, #8h

     mov R4, A

     mov R5, #00000001b

     call VIVOD_SECOND_NUM

     call WAIT_TI

     call SLEEP

     END_KEY_8:

     ret

     key4:

     cjne R5, #00000000b, NUM2_4

     ;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R3, #00000000b, ONFIRSTNUM4_1

     mov A, #4h

     swap A

     mov R3,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_4

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM4_1:

     mov A, R3

     add A, #4h

     mov R3, A

     mov R5, #00000001b

     call VIVOD_SECOND_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_4

     ;;;;;;;;;;;;;;;;;;;;;VVOD VTOROGO CHISLA;;;;;;;;;;;;;;;;;;;;;;

     NUM2_4:

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R4, #00000000b, ONFIRSTNUM4_2

     mov A, #4h

     swap A

     mov R4,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_4

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM4_2:

     mov A, R4

     add A, #4h

     mov R4, A

     mov R5, #00000001b

     call VIVOD_SECOND_NUM

     call WAIT_TI

     call SLEEP

     END_KEY_4:

     ret

     key1:

     cjne R5, #00000000b, NUM2_1

     ;;;;;;;;;;;;;;;;;;;;;VVOD PERVOGO CHISLA;;;;;;;;;;;;;;;;;;;;;

     ;;;;;;;;;;;;;;;;;;;;;vvod pervogo razryada chisla

     cjne R3, #00000000b, ONFIRSTNUM1_1

     mov A, #1h

     swap A

     mov R3,A

     call VIVOD_FIRST_NUM

     call WAIT_TI

     call SLEEP

     jmp END_KEY_1

     ;;;;;;;;;;;;;;;;;;;vvod vtorogo razryada chisla

     ONFIRSTNUM1_1:

     mov A, R3

     add A, #1h

     mov R3, A

     mov R5, #00000001b

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