Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. DSEG
  2. DISP_BUF: DS 10
  3. SEGMENT: DS 1
  4. DIGIT: DS 1
  5. MS: DS 1
  6. S: DS 1
  7. MINUTES: DS 1
  8.  
  9. CSEG AT 0
  10.  
  11. SYS_INIT:
  12. ;T0 - 16b, TO REFRESH DIGITS
  13. ;T1 - 16b, TO COUNT MS
  14. MOV TMOD, #00010001B
  15. SETB TR0 ;T0 ENABLE
  16. MOV TH0, #11100000B ;TODO: T0 INITIAL VALUE
  17.  
  18. SETB TR1 ;T1 ENABLE
  19. MOV TH1, #11100000B ;TODO: T1 INITIAL VALUE
  20.  
  21. ;INTERRUPT ENABLE
  22. SETB ET1
  23. SETB ET0
  24. SETB EA
  25.  
  26. ;DATA INITIALIZATION
  27. MOV SEGMENT,#10000000B ;WHICH SEGMENT
  28. MOV DIGIT,#00000000B ;WHAT DIGIT
  29. MOV MS,#00000000B ;ms
  30. MOV S,#00000000B ;s
  31. MOV MINUTES,#00000000B ;min
  32.  
  33. MOV R7,#0H
  34. MOV R5, #DISP_BUF
  35. MOV DPTR, #TO_7SEG
  36. LP:
  37. MOV A, R7
  38. CJNE A,#10,LP_OK
  39. SJMP DONE
  40.  
  41. LP_OK:
  42. MOVC A,@A+DPTR
  43. MOV @R5,A
  44. INC R5
  45. INC R7
  46. SJMP LP
  47.  
  48. DONE:
  49. SJMP $
  50.  
  51. MAIN:
  52. SJMP MAIN
  53.  
  54. TIMER_0_DISPLAY_REFRESH:
  55. ;ROTATE SEGMENT
  56. MOV A,SEGMENT
  57. RR A
  58. MOV SEGMENT, A
  59.  
  60. ;WE WANT TO ROTATE ONLY 6
  61. CJNE SEGMENT, #00000010B, SEGMENT_NOT_OVERFLOWN
  62. MOV SEGMENT,#10000000B
  63.  
  64. SEGMENT_NOT_OVERFLOWN:
  65. MOV P2, SEGMENT
  66.  
  67. ;PREPARE FOR DIVISION
  68. MOV B, #10
  69.  
  70. ;CHOOSE WHICH DIGIT DO DISPLAY
  71. JBC SEGMENT.0, REFRESH_MINUTES_1 ;MOZE 6 ZAMIAST 0, ZOBACZY SIE; MOZE 1 ZAMIAST 0, ZALEZY CZY INDEKSOWANE OD 0
  72. JBC SEGMENT.1, REFRESH_MINUTES_2
  73. JBC SEGMENT.2, REFRESH_SECONDS_1
  74. JBC SEGMENT.3, REFRESH_SECONDS_2
  75. JBC SEGMENT.4, REFRESH_MS_1
  76. JBC SEGMENT.5, REFRESH_MS_2
  77.  
  78. TIMER_0_I_DONE:
  79. MOV TH0, #11100000B ;TODO: T0 INITIAL VALUE
  80. RETI
  81.  
  82. REFRESH_MINUTES_1:
  83. MOV A, MINUTES
  84. AJMP REFRESH_1
  85. REFRESH_MINUTES_2:
  86. MOV A, MINUTES
  87. AJMP REFRESH_2
  88. REFRESH_SECONDS_1:
  89. MOV A, S
  90. AJMP REFRESH_1
  91. REFRESH_SECONDS_2:
  92. MOV A, S
  93. AJMP REFRESH_2
  94. REFRESH_SECONDS_1:
  95. MOV A, MS
  96. AJMP REFRESH_1
  97. REFRESH_SECONDS_2:
  98. MOV A, MS
  99. AJMP REFRESH_2
  100.  
  101. REFRESH_1:
  102. DIV AB
  103. MOV P1, @DISP_BUF + A ;MOZE #
  104. AJMP TIMER_0_I_DONE
  105. REFRESH_2:
  106. DIV AB
  107. MOV P1, @DISP_BUF + B
  108. AJMP TIMER_0_I_DONE
  109.  
  110. TIMER_1_COUNT_MS:
  111. INC MS;
  112. CJNE MS, #100, TIMER_1_I_DONE
  113. MOV MS,#0
  114. INC S
  115. CJNE S, #60, TIMER_1_I_DONE
  116. MOV S, #0
  117. INC MINUTES
  118. CJNE MINUTES, #99, TIMER_1_I_DONE
  119. MOV MINUTES, #0
  120.  
  121. TIMER_1_I_DONE:
  122. MOV TH1, #11100000B ;TODO: T1 INITIAL VALUE
  123. RETI
  124.  
  125. ORG 000BH
  126. AJMP TIMER_0_DISPLAY_REFRESH
  127.  
  128. ORG 001BH
  129. AJMP TIMER_1_COUNT_MS
  130.  
  131. TO_7SEG:
  132. DB 01111011B ;0
  133. DB 01000001B ;1
  134. DB 00110111B ;2
  135. DB 01100111B ;3
  136. DB 01001101B ;4
  137. DB 01101110B ;5
  138. DB 01111110B ;6
  139. DB 01000011B ;7
  140. DB 01111111B ;8
  141. DB 01101111B ;9
  142. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement