Смекни!
smekni.com

Калькулятор на основе микропроцессора (стр. 2 из 2)

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

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

ONFIRSTNUMC_2:

mov A, R4

add A, #0ch

mov R4, A

mov R5, #00000001b

call VIVOD_SECOND_HEX

call WAIT_TI

call SLEEP

END_KEY_C:

ret

key6:

cjne R5, #00000000b, NUM2_6

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

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

cjne R3, #00000000b, ONFIRSTNUM6_1

mov A, #6h

swap A

mov R3,A

call VIVOD_FIRST_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_6

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

ONFIRSTNUM6_1:

mov A, R3

add A, #6h

mov R3, A

mov R5, #00000001b

call VIVOD_SECOND_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_6

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

NUM2_6:

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

cjne R4, #00000000b, ONFIRSTNUM6_2

mov A, #6h

swap A

mov R4,A

call VIVOD_FIRST_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_6

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

ONFIRSTNUM6_2:

mov A, R4

add A, #6h

mov R4, A

mov R5, #00000001b

call VIVOD_SECOND_NUM

call WAIT_TI

call SLEEP

END_KEY_6:

ret

key3:

cjne R5, #00000000b, NUM2_3

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

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

cjne R3, #00000000b, ONFIRSTNUM3_1

mov A, #3h

swap A

mov R3,A

call VIVOD_FIRST_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_3

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

ONFIRSTNUM3_1:

mov A, R3

add A, #3h

mov R3, A

mov R5, #00000001b

call VIVOD_SECOND_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_3

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

NUM2_3:

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

cjne R4, #00000000b, ONFIRSTNUM3_2

mov A, #3h

swap A

mov R4,A

call VIVOD_FIRST_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_3

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

ONFIRSTNUM3_2:

mov A, R4

add A, #3h

mov R4, A

mov R5, #00000001b

call VIVOD_SECOND_NUM

call WAIT_TI

call SLEEP

END_KEY_3:

ret

keyE:

cjne R5, #00000000b, NUM2_E

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

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

cjne R3, #00000000b, ONFIRSTNUME_1

mov A, #0eh

swap A

mov R3,A

call VIVOD_FIRST_HEX

call WAIT_TI

call SLEEP

jmp END_KEY_E

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

ONFIRSTNUME_1:

mov A, R3

add A, #0eh

mov R3, A

mov R5, #00000001b

call VIVOD_SECOND_HEX

call WAIT_TI

call SLEEP

jmp END_KEY_E

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

NUM2_E:

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

cjne R4, #00000000b, ONFIRSTNUME_2

mov A, #0eh

swap A

mov R4,A

call VIVOD_FIRST_HEX

call WAIT_TI

call SLEEP

jmp END_KEY_E

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

ONFIRSTNUME_2:

mov A, R4

add A, #0eh

mov R4, A

mov R5, #00000001b

call VIVOD_SECOND_HEX

call WAIT_TI

call SLEEP

END_KEY_E:

ret

key9:

cjne R5, #00000000b, NUM2_9

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

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

cjne R3, #00000000b, ONFIRSTNUM9_1

mov A, #9h

swap A

mov R3,A

call VIVOD_FIRST_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_9

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

ONFIRSTNUM9_1:

mov A, R3

add A, #9h

mov R3, A

mov R5, #00000001b

call VIVOD_SECOND_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_9

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

NUM2_9:

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

cjne R4, #00000000b, ONFIRSTNUM9_2

mov A, #9h

swap A

mov R4,A

call VIVOD_FIRST_NUM

call WAIT_TI

call SLEEP

jmp END_KEY_9

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

ONFIRSTNUM9_2:

mov A, R4

add A, #9h

mov R4, A

mov R5, #00000001b

call VIVOD_SECOND_NUM

call WAIT_TI

call SLEEP

END_KEY_9:

ret


8. Заключение

В курсовой работе запрограммирован микропроцессор 51 серии на выполнение арифметических операций. Использованы прерывания от последовательного порта и таймера.


9. Литература

1. Справочник. Микроконтроллеры: архитектура, программирование, интерфейс. Бородин В.Б., Шагурин М.И.М.:ЭКОМ, 1999.

2. Однокристальные микроЭВМ. Справочник. Бином: 1994.

3. Лекции «Микропроцессорные системы», Гудков Ю.И., 2007-2008 гг.