Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ENTER_NUM EQU 0fH
- LJMP START
- ORG 100H
- START:
- LCALL LCD_INIT
- LCALL LCD_CLR
- MOV R1, #30H ; od tej komorki w pamieci zapisuje liczby
- MOV R2, #0 ;liczba wpisanych danych
- MOV R0, #0 ; temp
- MOV 30H, #50H
- MOV 31H, #4CH
- SIGNS_INPUT:
- LCALL LCD_CLR
- MOV A, 30H
- LCALL WRITE_DATA
- CJNE R2, #1, SIGNS_SHOWN
- MOV A, 31H
- LCALL WRITE_DATA
- SIGNS_SHOWN:
- LCALL WAIT_KEY
- CJNE A, #0cH, OPTION1
- ; A == c == strzalka w gore
- MOV A, @R1 ; w A stary znak
- INC A
- CJNE A, #5BH, UP_GOOD
- MOV A, #41H
- UP_GOOD:
- MOV @R1, A
- SJMP SIGNS_INPUT
- OPTION1:
- CJNE A, #0dH, OPTION2
- ; A == d == strzalka w dol
- MOV A, @R1 ; w A stary znak
- DEC A
- CJNE A, #40H, DOWN_GOOD
- MOV A, #5AH
- DOWN_GOOD:
- MOV @R1, A
- SJMP SIGNS_INPUT
- OPTION2:
- CJNE A, #0fH, WRONG_INPUT
- ; A == f == enter == zapamietaj
- INC R1
- INC R2
- ;zobacz czy sa juz dwa znaki
- CJNE R2, #2, SIGNS_INPUT
- SJMP NUMBERS_INPUT
- WRONG_INPUT:
- SJMP SIGNS_INPUT
- NUMBERS_INPUT:
- LCALL WAIT_KEY
- MOV R0, A
- CLR C
- SUBB A, #ENTER_NUM
- JZ DATA_DONE
- ; correct input
- MOV A, R0
- ADD A,#30H
- LCALL WRITE_DATA
- MOV @R1, 00H
- INC R1
- INC R2
- SJMP NUMBERS_INPUT
- SHORT_WRONG:
- LJMP WRONG
- DATA_DONE:
- LCALL LCD_CLR
- CJNE R2, #28, SHORT_WRONG
- ;liczba sie zgadza
- MOV R1, #4CH
- MOV R0, #30H
- MOV R3, #2
- MOVING_LETTERS:
- MOV A, @R0
- CLR C
- SUBB A, #37H
- MOV B, #10
- DIV AB
- JZ DIV0
- MOV @R1, A
- INC R1
- INC R2
- DIV0:
- MOV @R1, B
- INC R1
- INC R0
- DJNZ R3, MOVING_LETTERS
- MOV @R1, 32H
- INC R1
- MOV @R1, 33H
- ; zamieniono 4 znaki, teraz dzielimy
- MOV R1, #34H ; nowy poczatkowy
- MOV R0, #30H ;tam bedziemy zapisywac bcd
- MOV 30H, #0
- MOV 31H, #0
- MOV A, #0
- CALC:
- ADD A, @R1
- INC R1
- MOV 30H, A
- LCALL BCD_HEX
- MOV B, #97
- LCALL DIV_2_1
- ; podzielono przez 97
- PUSH ACC
- DEC R2
- MOV A, R2
- JZ CHECK
- POP ACC
- MOV B, #10
- DIV AB
- JZ LESS100
- MOV 31H, A
- LESS100:
- MOV A, B
- SWAP A
- SJMP CALC
- CHECK:
- POP ACC
- DJNZ ACC, WRONG
- MOV A, #44H
- LCALL WRITE_DATA
- MOV A, #4FH
- LCALL WRITE_DATA
- MOV A, #42H
- LCALL WRITE_DATA
- MOV A, #52H
- LCALL WRITE_DATA
- MOV A, #59H
- LCALL WRITE_DATA
- MOV A, #20H
- LCALL WRITE_DATA
- MOV A, #49H
- LCALL WRITE_DATA
- MOV A, #42H
- LCALL WRITE_DATA
- MOV A, #41H
- LCALL WRITE_DATA
- MOV A, #4EH
- LCALL WRITE_DATA
- SJMP $
- WRONG:
- MOV A, #5AH
- LCALL WRITE_DATA
- MOV A, #4CH
- LCALL WRITE_DATA
- MOV A, #59H
- LCALL WRITE_DATA
- MOV A, #20H
- LCALL WRITE_DATA
- MOV A, #49H
- LCALL WRITE_DATA
- MOV A, #42H
- LCALL WRITE_DATA
- MOV A, #41H
- LCALL WRITE_DATA
- MOV A, #4EH
- LCALL WRITE_DATA
- SJMP $
- NOP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement