cabeca_de_pica

Untitled

Oct 21st, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 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.  
  24. KEYLEN EQU 4
  25. KSET EQU P0.6
  26. KLOAD EQU P0.7
  27. KEY IDATA 80H
  28. NUM DATA 30H
  29.  
  30. CSEG AT 1000H ;caracteres segmento 8bits
  31. DIGITS_TABLE:
  32. 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
  33.  
  34. CSEG AT 0H
  35. JMP RESET
  36.  
  37. RESET:
  38. ACALL Init_Device
  39. SETB KSET ;ATIVAR BOTOES
  40. SETB KLOAD
  41. MOV R1, #KEY
  42. MOV NUM, #0
  43.  
  44. START:
  45. MOV DPTR, #DIGITS_TABLE
  46. MOV R0, #0 ;R0 indica o valor decimal atual
  47. MOV R2, #0H ;R2 usado para guardar valor hexadecimal na memoria e na saida P1
  48. S_2:
  49. MOV A, R0
  50. MOVC A, @A+DPTR
  51. MOV P2, A
  52. BUTTON:
  53. JNB KLOAD, INSERT
  54. JNB KSET, INCREMENT
  55. JMP BUTTON
  56. INCREMENT:
  57. JNB KSET, $
  58. INC R0
  59. INC R2
  60. CJNE R0, #16, S_2
  61. JMP START
  62.  
  63. INSERT: ;guarda o numero escolhido na mem interna e imprime em P1
  64. JNB KLOAD, $
  65. MOV P1, R2
  66. MOV @R1, P1
  67. INC R1
  68. INC NUM
  69. MOV A, NUM
  70. CJNE A, #KEYLEN, START
  71. JMP FIM
  72. ;------------------------------------------------------------------------
  73. PCA_Init:
  74. MOV PCA0MD, #000h
  75. RET
  76. ;Timer_Init:
  77. ; // MOV TMOD, #022h
  78. ; RET
  79. Port_IO_Init:
  80. MOV XBR1, #040h
  81. RET
  82. Init_Device:
  83. lcall PCA_Init
  84. ;lcall Timer_Init
  85. lcall Port_IO_Init
  86. ret
  87. ;------------------------------------------------------------------------
  88. FIM:
  89.  
  90. MOV P2, #7FH
  91. MOV R1, #0FFH
  92. LCALL LOOP
  93. MOV P2, #0FFH
  94. MOV R1, #0FFH
  95. LCALL LOOP
  96. JMP FIM
  97. LOOP:
  98. NOP
  99. NOP
  100. NOP
  101. NOP
  102. NOP
  103. NOP
  104. NOP
  105. NOP
  106. NOP
  107. NOP
  108. NOP
  109. NOP
  110. NOP
  111. NOP
  112. DJNZ R1, LOOP
  113. //CJNE A, #0, LOOP
  114.  
  115. RET
  116.  
  117. END
Add Comment
Please, Sign In to add comment