Advertisement
cabeca_de_pica

Untitled

Nov 11th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. START:
  97.     JB KSET, START
  98.     JNB KSET, $
  99.     RET
  100. OPER1:
  101.     MOV OP_1, R3
  102.     MOV P1, OP_1
  103.     MOV N_STATE, #S_SELECT
  104.     JMP STATE_MACHINE
  105. ;---------------------------------------------STATE SELECT
  106. SELECT:
  107.     MOV DPTR, #OP_TABLE
  108.     MOV R3, #0H
  109. SELECT_2:
  110.     MOV A, R3
  111.     MOVC A, @A+DPTR
  112.     MOV P2, A
  113. BUTT_OPER:
  114.     JNB KLOAD, $
  115.     JB KSET, BUTT_OPER
  116. INC_OPER:
  117.     JNB KSET, $
  118.     INC R3
  119.     CJNE R3, #8, SELECT_2
  120.     JMP SELECT
  121.    
  122.    
  123.  
  124.  
  125. ;------------------------------------------------------------------------
  126. PCA_Init:
  127.     MOV  PCA0MD,    #000h
  128.     RET
  129. Port_IO_Init:
  130.     MOV  XBR1,      #040h
  131.     RET
  132. Init_Device:
  133.     lcall PCA_Init
  134.     lcall Port_IO_Init
  135.     ret
  136. ;------------------------------------------------------------------------
  137.    
  138. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement