Advertisement
cabeca_de_pica

Untitled

Nov 11th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. #include <REG51F380.H>
  2.  
  3. ;-------------------------------------------------------------------------------------------------------------------;
  4. ;CONSTANT DEFINES FOR CHAR_NUM AND CHAR_STATE
  5. ;-------------------------------------------------------------------------------------------------------------------;
  6. CHAR_0 EQU 0C0H ;DEFINE CHARS FOR 8BITSEG
  7. CHAR_1 EQU 0F9H
  8. CHAR_2 EQU 0A4H
  9. CHAR_3 EQU 0B0H
  10. CHAR_4 EQU 099H
  11. CHAR_5 EQU 092H
  12. CHAR_6 EQU 082H
  13. CHAR_7 EQU 0F8H
  14. CHAR_8 EQU 080H
  15. CHAR_9 EQU 090H
  16. CHAR_A EQU 088H
  17. CHAR_B EQU 083H
  18. CHAR_C EQU 0C6H
  19. CHAR_D EQU 0A1H
  20. CHAR_E EQU 086H
  21. CHAR_F EQU 08EH
  22. ;-------------------------------------------------------------
  23. AND_OP EQU 88H
  24. OR_OP EQU 0C0H
  25. NOT_OP EQU 0ABH
  26. XOR_OP EQU 89H
  27. ADD_OP EQU 8CH
  28. SUB_OP EQU 0EAH
  29. ROTL_OP EQU 0C7H
  30. ROTR_OP EQU 0CEH
  31.  
  32. S_READY EQU 0
  33. S_SELECT EQU 1
  34. S_OP2 EQU 2
  35. S_PROCESS EQU 3
  36.  
  37. OP_1 DATA 30H
  38. OP_2 DATA 31H
  39. OPER DATA 32H
  40. STATE DATA 33H
  41. N_STATE DATA 34H
  42.  
  43. KSET EQU P0.6
  44. KLOAD EQU P0.7
  45.  
  46. CSEG AT 400H
  47. OP_TABLE: ;OPERADORES
  48. DB AND_OP, OR_OP, NOT_OP, XOR_OP, ADD_OP, SUB_OP, ROTL_OP, ROTR_OP
  49. CSEG AT 500H ;caracteres segmento 8bits
  50. DIGITS_TABLE:
  51. DB CHAR_0, CHAR_1, CHAR_2, CHAR_3, CHAR_4, CHAR_5, CHAR_6, CHAR_7, CHAR_8, CHAR_9, CHAR_A, CHAR_B, CHAR_C, CHAR_D, CHAR_E, CHAR_F ;0-F
  52.  
  53. CSEG AT 0H
  54. JMP RESET
  55.  
  56. RESET:
  57. ACALL Init_Device
  58. SETB KSET ;ATIVAR BOTOES
  59. SETB KLOAD
  60. MOV R3, #0H
  61. MOV A, #0H
  62. MOV OP_1, #0H
  63. MOV OP_2, #0H
  64. MOV STATE, #S_READY
  65. MOV N_STATE, #S_READY
  66. ;-----------------------------------------------------
  67. STATE_MACHINE:
  68. MOV STATE, N_STATE
  69. MOV A, STATE
  70. RL A
  71. MOV DPTR, #JMP_TABLE
  72. JMP @A+DPTR
  73. JMP_TABLE:
  74. AJMP READY
  75. AJMP SELECT
  76. AJMP OP2
  77. AJMP PROCESS
  78. ;-----------------------------------------------------STATE READY
  79. READY:
  80. MOV DPTR, #DIGITS_TABLE
  81. MOV P2, #0AFH
  82. ACALL START
  83. DISPLAYBCD:
  84. MOV A, R3
  85. MOVC A, @A+DPTR
  86. MOV P2, A
  87. BUTTONS:
  88. JNB KLOAD, OPER1
  89. JB KSET, BUTTONS
  90. INCREMENT:
  91. JNB KSET, $
  92. INC R3
  93. CJNE R3, #16, DISPLAYBCD
  94. MOV R3, #0H
  95. JMP DISPLAYBCD
  96.  
  97. START: ;aguarda que o utilizador carregue no kset para iniciar programa
  98. JB KSET, START
  99. JNB KSET, $
  100. RET
  101.  
  102.  
  103. OPER1:
  104. JNB KLOAD, $
  105. MOV OP_1, R3
  106. MOV P1, OP_1
  107. MOV N_STATE, #S_SELECT
  108. JMP STATE_MACHINE
  109. ;---------------------------------------------STATE SELECT
  110. SELECT:
  111. MOV DPTR, #OP_TABLE
  112. MOV R3, #0H
  113. SELECT_2:
  114. MOV A, R3
  115. MOVC A, @A+DPTR
  116. MOV P2, A
  117. BUTT_OPER:
  118. JNB KLOAD, OPERAND
  119. JB KSET, BUTT_OPER
  120. INC_OPER:
  121. JNB KSET, $
  122. INC R3
  123. CJNE R3, #8, SELECT_2
  124. JMP SELECT
  125.  
  126. OPERAND:
  127. JNB KLOAD, $
  128. MOV OPER, R3
  129. MOV N_STATE, #S_OP2
  130. JMP STATE_MACHINE
  131. ;---------------------------------------------STATE OP2
  132. OP2:
  133. MOV DPTR, #DIGITS_TABLE
  134. MOV R3, #0H
  135. MOV P2, #0A4H
  136. ACALL STARTOP2
  137. DISPLAYOP2:
  138. MOV A, R3
  139. MOVC A, @A+DPTR
  140. MOV P2, A
  141. BUTTONSOP2:
  142. JNB KLOAD, OPER2
  143. JB KSET, BUTTONSOP2
  144. INCREMENTOP2:
  145. JNB KSET, $
  146. INC R3
  147. CJNE R3, #16, DISPLAYOP2
  148. MOV R3, #0H
  149. JMP DISPLAYOP2
  150.  
  151. STARTOP2: ;aguarda que o utilizador carregue no kset para iniciar a selecao do op2
  152. JB KSET, STARTOP2
  153. JNB KSET, $
  154. RET
  155. OPER2:
  156. JNB KLOAD, $
  157. MOV OP_2, R3
  158. MOV P1, OP_2
  159. MOV N_STATE, #S_PROCESS
  160. JMP STATE_MACHINE
  161. ;---------------------------------------------STATE PROCESS
  162. PROCESS:
  163. MOV P2, #0FH
  164. JB KSET, PROCESS
  165.  
  166. ;------------------------------------------------------------------------
  167. PCA_Init:
  168. MOV PCA0MD, #000h
  169. RET
  170. Port_IO_Init:
  171. MOV XBR1, #040h
  172. RET
  173. Init_Device:
  174. lcall PCA_Init
  175. lcall Port_IO_Init
  176. ret
  177. ;------------------------------------------------------------------------
  178.  
  179. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement