Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. #include <REG51F380.H> ;INCLUDE
  2.  
  3. CHAR_A EQU 088h ;DEFINE
  4. CHAR_O EQU 0C0h
  5. CHAR_N EQU 0ABh
  6. CHAR_X EQU 089h
  7. CHAR_P EQU 08Ch
  8. CHAR_M EQU 0C8h
  9. CHAR_RL EQU 0E7h
  10. CHAR_RR EQU 0AFh
  11.  
  12. LOAD_B EQU P0.6 ;BUTOES
  13. SET_B EQU P0.7
  14.  
  15. OP_1 DATA 30h ;ARMAZENAR OPERANDOS
  16. OP_2 DATA 31h
  17.  
  18. CHAR_R EQU 0CEh ;=
  19. CHAR_R_CY EQU 04Eh
  20.  
  21. OPERATION DATA 35h ;ARMAZENAR OPERACAO
  22.  
  23. CHAR_EQUAL EQU 0B7h
  24. CHAR_EQUAL_OV EQU 04Eh
  25.  
  26.  
  27. CSEG AT 0H
  28. JMP INIT_STATE ;CONFIG
  29. CSEG AT 1000h
  30.  
  31.  
  32. INIT_STATE:
  33. MOV OP_1,#1 ;passing value to op1
  34. MOV OP_2,#2 ;passing value to op2
  35.  
  36. MOV P1MDOUT, #0FFh
  37. MOV P4MDOUT, #0FFh ;OUTPUT DIGITAL LAB P4 1-> push-pull
  38. MOV PCA0MD, #0 ;turn off WD
  39. MOV P0MDIN, #0FFh ;turn on p0 as digital INPUT MODE: 0-> analog
  40. MOV P2MDIN, #0FFh ;turn on p2 as digital " " 1-> digital
  41. MOV P0MDOUT, #0 ;turn on p0 as input OUTPUT MODE: 0-> open-drain
  42. MOV P2MDOUT, #0FFh ;turn on p2 as output " " 1-> push-pull
  43. SETB LOAD_B ;=PB1
  44. SETB SET_B ;=PB2
  45. MOV XBR1, #40h ;enable crossbar1, activate port 2: Xbare2, Xbare1, Xbare0
  46. JMP READY ;jump to main
  47.  
  48. CHAR_DISP: DB CHAR_A, CHAR_O, CHAR_N, CHAR_X, CHAR_P, CHAR_M, CHAR_RL, CHAR_RR ;ARRAY
  49.  
  50. WAIT_LOAD:
  51. JB LOAD_B, $
  52. JNB LOAD_B, $
  53. RET
  54.  
  55. WAIT_SET:
  56. JB SET_B, $
  57. JNB SET_B, $
  58. RET
  59.  
  60. WAIT_INPUT_SELECT:
  61. JNB SET_B, CHANGE_OP
  62. JNB LOAD_B, ENCODE_FSM0
  63. JMP WAIT_INPUT_SELECT
  64.  
  65. WAIT_INPUT_RESTART:
  66. JNB SET_B, INPUT_RES_OP1
  67. JNB LOAD_B, EXIT
  68. JMP WAIT_INPUT_RESTART
  69.  
  70. INPUT_RES_OP1:
  71. MOV OP_1, A
  72. CLR A ;LIMPAR A PARA NAO AFETAR OUTRAS SUB-ROTINAS
  73. JMP READY
  74.  
  75. CHANGE_OP:
  76. ADD A, #1
  77. ANL A, #7
  78. MOV OPERATION, A
  79. JMP LOOP
  80.  
  81. READY:
  82. MOV P2, #CHAR_R
  83. ;MOV OP_1, P1
  84. ACALL WAIT_LOAD
  85. JMP SELECT
  86.  
  87.  
  88. SELECT:
  89. MOV OPERATION, #0
  90. MOV DPTR, #CHAR_DISP
  91.  
  92. LOOP:
  93. MOV A, OPERATION
  94. MOVC A, @A+DPTR
  95. MOV P2, A
  96. MOV A, OPERATION
  97. JMP WAIT_INPUT_SELECT
  98.  
  99.  
  100. ENCODE_FSM0:
  101. MOV DPTR, #TABLE_FSM0
  102. ;MOV A, STATE
  103. RL A ; A x 2
  104. JMP @A+DPTR
  105.  
  106.  
  107. TABLE_FSM0:
  108. AJMP CODE_AND
  109. AJMP CODE_OR
  110. AJMP CODE_XOR
  111. AJMP CODE_NOT
  112. AJMP CODE_PLUS
  113. AJMP CODE_MINUS
  114. AJMP CODE_RL
  115. AJMP CODE_RR
  116.  
  117. CODE_AND:
  118. MOV A, OP_1
  119. ANL A, OP_2
  120. JMP RESULTADO
  121.  
  122. CODE_OR:
  123. MOV A, OP_1
  124. ORL A, OP_2
  125. JMP RESULTADO
  126.  
  127. CODE_XOR:
  128. MOV A, OP_1
  129. XRL A, OP_2
  130. JMP RESULTADO
  131.  
  132. CODE_NOT:
  133. MOV A, OP_1
  134. CPL A
  135. ACALL RESULTADO
  136.  
  137. CODE_PLUS:
  138. MOV A, OP_1
  139. ADD A, OP_2
  140. JMP RESULTADO
  141.  
  142. CODE_MINUS:
  143. MOV A, OP_1
  144. CLR C
  145. SUBB A, OP_2
  146. JMP RESULTADO
  147.  
  148. CODE_RL:
  149. MOV A, OP_1
  150. XRL A, OP_2
  151. JMP RESULTADO
  152.  
  153. CODE_RR:
  154. MOV A, OP_1
  155. XRL A, OP_2
  156. JMP RESULTADO
  157.  
  158. RESULTADO:
  159. MOV P3, A
  160. JC RESULTADO_OV
  161. MOV P2, #CHAR_EQUAL
  162. JMP WAIT_INPUT_RESTART
  163.  
  164. RESULTADO_OV:
  165. MOV P2, #CHAR_EQUAL_OV
  166. JMP WAIT_INPUT_RESTART
  167.  
  168. EXIT:
  169. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement