Advertisement
jeanmcaraujo

Projeto Semáforo - Assembly

Nov 23rd, 2014
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. ;=============================
  2. ;Projeto Semáforo - Versão 1.1
  3. ;Linguagem : Assembly
  4. ;Microcontrolador : At89S4051
  5. ;=============================
  6.  
  7. ORG 000h
  8. CALL CONFIG
  9.  
  10. ORG 03h
  11. MOV R7, #001h
  12. CLR EX0
  13. SETB EX1
  14. MOV IPH, #00000100b
  15. RETI
  16.  
  17. ORG 0013h
  18. MOV R7, #000h
  19. CLR EX1
  20. SETB EX0
  21. RETI
  22.  
  23. ORG 060h
  24. CONFIG:
  25. SETB EA
  26. SETB EX0
  27.  
  28. INICIO:
  29. CJNE R7, #001h, INICIO
  30. MOV P1, #0FFh ;Portas P1 em nivel 1, apagando Display
  31. MOV P3, #0FFh ;Portas P3 em nivel 1, apagando Leds
  32. MOV R1, #006h ;R1 - Para o laço de start do sistema
  33. CALL START
  34.  
  35. VERDE:
  36. CJNE R7, #001h, INICIO
  37. CPL P3.7
  38. CALL CONTA
  39. CPL P3.7
  40. AMARELO:
  41. CPL P3.5
  42. MOV P1 , #0FFh
  43. MOV A , #00Bh
  44. CALL TIME
  45. CPL P3.5
  46. VERMELHO:
  47. CPL P3.4
  48. CALL CONTA
  49. CPL P3.4
  50. SJMP VERDE
  51.  
  52. CONTA:
  53. MOV A , #00Bh
  54. MOV P1 , #10010000b ; 9
  55. CALL TIME
  56.  
  57. MOV P1 , #10000000b ; 8
  58. CALL TIME
  59.  
  60. MOV P1 , #11111000b ; 7
  61. CALL TIME
  62.  
  63. MOV P1 , #10000010b ; 6
  64. CALL TIME
  65.  
  66. MOV P1 , #10010010b ; 5
  67. CALL TIME
  68.  
  69. MOV P1 , #10011001b ; 4
  70. CALL TIME
  71.  
  72. MOV P1 , #10110000b ; 3
  73. CALL TIME
  74.  
  75. MOV P1 , #10100100b ; 2
  76. CALL TIME
  77.  
  78. MOV P1 , #11111001b ; 1
  79. CALL TIME
  80.  
  81. MOV P1 , #11111111b ; Limpa Display
  82.  
  83. RET
  84. ;Fim - Rotinas iniciais
  85. ;======================
  86.  
  87. ;========================
  88. ;Função Iniciar Semáforo
  89. ;========================
  90. START:
  91. DJNZ R1, LEVEL
  92. SJMP ACENDELEDS
  93.  
  94. LEVEL:
  95. MOV A , R1
  96. MOV P1 , #11111110b
  97. CALL TIME
  98.  
  99. MOV P1 , #11111101b
  100. CALL TIME
  101.  
  102. MOV P1 , #11111011b
  103. CALL TIME
  104.  
  105. MOV P1 , #11110111b
  106. CALL TIME
  107.  
  108. MOV P1 , #11101111b
  109. CALL TIME
  110.  
  111. MOV P1 , #11011111b
  112. CALL TIME
  113.  
  114. MOV P1 , #0FFh
  115. SJMP START
  116.  
  117. ACENDELEDS:
  118. MOV A, #005h ; Tempo para o Time 500 mS
  119. MOV P1 , #10000000b
  120. CPL P3.7
  121. CALL TIME
  122.  
  123. MOV P1 , #0FFh
  124. CALL TIME
  125.  
  126. MOV P1 , #10000000b
  127. CPL P3.5
  128. CALL TIME
  129.  
  130. MOV P1 , #0FFh
  131. CALL TIME
  132.  
  133. MOV P1 , #10000000b
  134. CPL P3.4
  135. CALL TIME
  136.  
  137. MOV P1 , #0FFh
  138. MOV P3 , #0FFh
  139. RET
  140.  
  141. ;Fim - Função Iniciar Semáforo
  142. ;=============================
  143.  
  144. ;====================================
  145. ;Função Time (Multiplicador de Tempo)
  146. ;====================================
  147. TIME:
  148. MOV R0, A
  149. TIME1: DJNZ R0, TIME050MS
  150. RET
  151.  
  152. ; Fim - Função Multiplicador Time
  153. ;====================================
  154.  
  155. ;==========================
  156. ;Função Time 50 mS
  157. ;==========================
  158. TIME050MS:
  159. MOV TL0, #0FAh
  160. MOV TH0, #0B9h
  161.  
  162.  
  163. STEP1:
  164. DJNZ TH0, STEP2
  165. SJMP TIME1
  166. STEP2:
  167. DJNZ TL0, STEP2
  168. MOV TL0, #0FAh
  169. SJMP STEP1
  170. RET
  171.  
  172. ; Fim - Função Time 50 mS
  173. ;==========================
  174.  
  175. END
  176.  
  177. ;INSTRUÇÕES:
  178. ;===========
  179. ;
  180. ;Ligação dos Pinos (Cathodo, display com Anodo comum):
  181. ;P1.0 - Segmento A do display
  182. ;P1.1 - Segmento B do display
  183. ;P1.2 - Segmento C do display
  184. ;P1.3 - Segmento D do display
  185. ;P1.4 - Segmento E do display
  186. ;P1.5 - Segmento F do display
  187. ;P1.6 - Segmento G do display
  188. ;
  189. ;P3.7 - Led Verde - Cathodo
  190. ;P3.5 - Led Amarelo - Cathodo
  191. ;P3.4 - Led Vermelho - Cathodo
  192. ;
  193. ;Cálculos, ciclo de máquina x ciclo clock
  194. ;Cmáquina = 12 ciclos de clock
  195. ;Cmáquina = 12 / Clock do oscilador, logo para oscilador de 12Mhz
  196. ;Cmáquina = 12 / 11059200 = 1.08507 uS (10^-6)
  197. ;Para 1 segundo (1000000 uS), temos 1000000/1.08507 =~ 921600 Cmáquina
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement