Advertisement
Guest User

Untitled

a guest
Dec 6th, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ENTER_NUM EQU 0fH  
  2.     LJMP START
  3.     ORG 100H
  4. START:
  5.     LCALL LCD_INIT
  6.     LCALL LCD_CLR
  7.    
  8.     MOV R1, #30H  ; od tej komorki w pamieci zapisuje liczby
  9.     MOV R2, #0    ;liczba wpisanych danych
  10.     MOV R0, #0    ; temp
  11.    
  12.     MOV 30H, #50H
  13.     MOV 31H, #4CH
  14. SIGNS_INPUT:
  15.     LCALL LCD_CLR
  16.     MOV A, 30H
  17.     LCALL WRITE_DATA
  18.    
  19.     CJNE R2, #1, SIGNS_SHOWN
  20.     MOV A, 31H
  21.     LCALL WRITE_DATA
  22.    
  23. SIGNS_SHOWN:   
  24.     LCALL WAIT_KEY
  25.    
  26.     CJNE A, #0cH, OPTION1
  27.     ; A == c == strzalka w gore
  28.     MOV A, @R1   ; w A stary znak
  29.     INC A
  30.    
  31.     CJNE A, #5BH, UP_GOOD
  32.     MOV A, #41H
  33.    
  34. UP_GOOD:
  35.     MOV @R1, A
  36.     SJMP SIGNS_INPUT
  37.    
  38. OPTION1:
  39.     CJNE A, #0dH, OPTION2
  40.     ; A == d == strzalka w dol
  41.     MOV A, @R1  ; w A stary znak
  42.     DEC A
  43.    
  44.     CJNE A, #40H, DOWN_GOOD
  45.     MOV A, #5AH
  46.    
  47. DOWN_GOOD:
  48.     MOV @R1, A
  49.     SJMP SIGNS_INPUT
  50.    
  51. OPTION2:
  52.     CJNE A, #0fH, WRONG_INPUT
  53.     ; A == f == enter == zapamietaj
  54.     INC R1
  55.     INC R2
  56.    
  57.     ;zobacz czy sa juz dwa znaki
  58.     CJNE R2, #2, SIGNS_INPUT
  59.     SJMP NUMBERS_INPUT
  60.    
  61. WRONG_INPUT:
  62.     SJMP SIGNS_INPUT
  63.        
  64. NUMBERS_INPUT:
  65.     LCALL WAIT_KEY
  66.     MOV R0, A
  67.     CLR C
  68.     SUBB A, #ENTER_NUM
  69.     JZ DATA_DONE
  70.  
  71.     ; correct input
  72.     MOV A, R0
  73.     ADD A,#30H
  74.     LCALL WRITE_DATA
  75.    
  76.     MOV @R1, 00H
  77.     INC R1
  78.     INC R2
  79.     SJMP NUMBERS_INPUT
  80.    
  81.    
  82. SHORT_WRONG:
  83.     LJMP WRONG
  84. DATA_DONE:
  85.     LCALL LCD_CLR
  86.     CJNE R2, #28, SHORT_WRONG
  87.    
  88.     ;liczba sie zgadza
  89.     MOV R1, #4CH
  90.     MOV R0, #30H
  91.     MOV R3, #2
  92.    
  93. MOVING_LETTERS:
  94.     MOV A, @R0 
  95.     CLR C
  96.     SUBB A, #37H
  97.     MOV B, #10
  98.     DIV AB
  99.     JZ DIV0
  100.     MOV @R1, A
  101.     INC R1
  102.     INC R2
  103. DIV0:
  104.     MOV @R1, B
  105.     INC R1
  106.     INC R0
  107.     DJNZ R3, MOVING_LETTERS
  108.    
  109.    
  110.     MOV @R1, 32H
  111.     INC R1
  112.     MOV @R1, 33H
  113.    
  114.     ; zamieniono 4 znaki, teraz dzielimy
  115.     MOV R1, #34H ; nowy poczatkowy
  116.     MOV R0, #30H    ;tam bedziemy zapisywac bcd
  117.    
  118.     MOV 30H, #0
  119.     MOV 31H, #0
  120.     MOV A, #0
  121. CALC:  
  122.     ADD A, @R1
  123.     INC R1
  124.     MOV 30H, A
  125.    
  126.     LCALL BCD_HEX
  127.     MOV B, #97
  128.     LCALL DIV_2_1
  129.     ; podzielono przez 97
  130.     PUSH ACC
  131.     DEC R2
  132.     MOV A, R2
  133.     JZ CHECK
  134.    
  135.     POP ACC
  136.    
  137.     MOV B, #10
  138.     DIV AB
  139.    
  140.     JZ LESS100
  141.     MOV 31H, A
  142. LESS100:
  143.     MOV A, B
  144.     SWAP A
  145.    
  146.     SJMP CALC
  147.    
  148. CHECK:
  149.     POP ACC
  150.     DJNZ ACC, WRONG
  151.    
  152.     MOV A, #44H
  153.     LCALL WRITE_DATA
  154.    
  155.     MOV A, #4FH
  156.     LCALL WRITE_DATA
  157.    
  158.     MOV A, #42H
  159.     LCALL WRITE_DATA
  160.    
  161.     MOV A, #52H
  162.     LCALL WRITE_DATA
  163.    
  164.     MOV A, #59H
  165.     LCALL WRITE_DATA
  166.    
  167.     MOV A, #20H
  168.     LCALL WRITE_DATA
  169.    
  170.     MOV A, #49H
  171.     LCALL WRITE_DATA
  172.    
  173.     MOV A, #42H
  174.     LCALL WRITE_DATA
  175.    
  176.     MOV A, #41H
  177.     LCALL WRITE_DATA
  178.    
  179.     MOV A, #4EH
  180.     LCALL WRITE_DATA
  181.    
  182.     SJMP $
  183.    
  184. WRONG:
  185.     MOV A, #5AH
  186.     LCALL WRITE_DATA
  187.    
  188.     MOV A, #4CH
  189.     LCALL WRITE_DATA
  190.    
  191.     MOV A, #59H
  192.     LCALL WRITE_DATA
  193.    
  194.     MOV A, #20H
  195.     LCALL WRITE_DATA
  196.    
  197.     MOV A, #49H
  198.     LCALL WRITE_DATA
  199.    
  200.     MOV A, #42H
  201.     LCALL WRITE_DATA
  202.    
  203.     MOV A, #41H
  204.     LCALL WRITE_DATA
  205.    
  206.     MOV A, #4EH
  207.     LCALL WRITE_DATA
  208.    
  209.     SJMP $
  210.     NOP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement