Advertisement
stirante

Untitled

Jan 19th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. T0_G EQU 0 ;GATE
  2. T0_C EQU 0 ;COUNTER/-TIMER
  3. T0_M EQU 0 ;MODE (0..3)
  4. TIM0 EQU T0_M+T0_C*4+T0_G*8
  5.  
  6. T1_G EQU 0 ;GATE
  7. T1_C EQU 0 ;COUNTER/-TIMER
  8. T1_M EQU 2 ;MODE (0..3)
  9. TIM1 EQU T1_M+T1_C*4+T1_G*8
  10.  
  11. TMOD_SET EQU TIM0+TIM1*16
  12.  
  13. TR_M EQU 1 ;tryb transmisji (1..3)
  14. TR_R EQU 1 ;zezwolenie na odbi�r
  15.  
  16. SCON_SET EQU TR_M*64+TR_R*16
  17.  
  18. ;SMOD=1
  19. ;ustaw 96 cykli na bit (57600/9600bod�w=6)
  20. TH1_SET EQU 256-6
  21. TL1_SET EQU 256-6
  22.  
  23. number1 DATA 60h
  24. number2 DATA 61h
  25. nCounter DATA 62h
  26. currentNumber DATA 63h
  27. temp DATA 64h
  28. multi DATA 65h
  29.  
  30. init:
  31. ljmp start
  32. org 100H
  33. clear:
  34. mov number1,#0h
  35. mov number2,#0h
  36. mov nCounter,#0h
  37. mov currentNumber,#0h
  38. mov temp,#0h
  39. mov multi,#1h
  40. ret
  41. start:
  42. lcall clear
  43. mov SCON,#SCON_SET ;port szeregowy
  44. orl PCON,#80H ;SMOD=1
  45. mov TMOD,#TMOD_SET ;Timer 1 dla transmisji
  46. mov TH1,#TH1_SET
  47. mov TL1,#TL1_SET
  48. setb TR1 ;start Timera 1
  49. setb TI
  50. loopAgain:
  51. loop:
  52. jnb RI,loopAgain
  53. clr RI
  54. mov A,SBUF
  55. jnb TI,$
  56. clr TI
  57. mov SBUF,A
  58. ljmp onChar
  59. addNumber:
  60. cjne A,#0DH,addNumber1
  61. ljmp loopAgain
  62. addNumber1:
  63. subb A,#30H
  64. mov R1,A
  65. push 1
  66. inc nCounter
  67. ljmp loop
  68. onSpace:
  69. cjne A,#20H,addNumber
  70. inc currentNumber
  71. mov multi,#1
  72. onSpace2:
  73. pop 1
  74. mov A,R1
  75. mov B,multi
  76. mul AB
  77. add A,temp
  78. mov temp,A
  79. mov A,multi
  80. mov B,#10
  81. mul AB
  82. mov multi,A
  83. dec nCounter
  84. mov A,nCounter
  85. cjne A,#0,onSpace2
  86. mov A,currentNumber
  87. cjne A,#1,setOtherNumber
  88. mov number1,temp
  89. mov temp,#0
  90. ljmp loop
  91. setOtherNumber:
  92. mov number2,temp
  93. mov temp,#0
  94. ljmp loop
  95. onChar:
  96. cjne A,#2BH,onMinus
  97. onPlus:
  98. mov A,number1
  99. mov B,number2
  100. add A,B
  101. ljmp send
  102. onMinus:
  103. cjne A,#2DH,onMultiply
  104. mov A,number1
  105. mov B,number2
  106. subb A,B
  107. ljmp send
  108. onMultiply:
  109. cjne A,#2AH,onDivide
  110. mov A,number1
  111. mov B,number2
  112. mul AB
  113. ljmp send
  114. onDivide:
  115. cjne A,#2FH,onNewLine
  116. mov A,number1
  117. mov B,number2
  118. div AB
  119. ljmp send
  120. onNewLine:
  121. cjne A,#0AH,onSpace
  122. ljmp loop
  123. send:
  124. mov DPTR,#numbers
  125.  
  126. mov R4,A
  127. mov A,#20H
  128. jnb TI,$
  129. clr TI
  130. mov SBUF,A
  131.  
  132. mov A,#3DH
  133. jnb TI,$
  134. clr TI
  135. mov SBUF,A
  136.  
  137. mov A,#20H
  138. jnb TI,$
  139. clr TI
  140. mov SBUF,A
  141.  
  142. mov A,R4
  143.  
  144. mov B,#100
  145. div AB
  146. jnb TI,$
  147. clr TI
  148. movc A,@A+DPTR
  149. mov SBUF,A
  150.  
  151. mov A,B
  152. mov B,#10
  153. div AB
  154. jnb TI,$
  155. clr TI
  156. movc A,@A+DPTR
  157. mov SBUF,A
  158.  
  159. mov A,B
  160. jnb TI,$
  161. clr TI
  162. movc A,@A+DPTR
  163. mov SBUF,A
  164.  
  165. mov A,#0AH
  166. jnb TI,$
  167. clr TI
  168. mov SBUF,A
  169.  
  170. lcall clear
  171.  
  172. ljmp loop
  173.  
  174. ;0AH - nowa linia
  175. ;2BH - +
  176. ;2DH - -
  177. ;2AH - *
  178. ;2FH - /
  179. ;20H - spacja
  180. ;0DH - do wywalenia
  181. ;3D - =
  182. numbers:
  183. DB '0'
  184. DB '1'
  185. DB '2'
  186. DB '3'
  187. DB '4'
  188. DB '5'
  189. DB '6'
  190. DB '7'
  191. DB '8'
  192. DB '9'
  193. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement