daily pastebin goal
9%
SHARE
TWEET

Untitled

a guest Dec 6th, 2018 137 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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top