Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.49 KB | None | 0 0
  1. List p=16f628a
  2. #include <P16F628A.INC>
  3.  
  4. __CONFIG _WDT_OFF
  5.  
  6. ;constante
  7. tempo EQU 0x20; 1,6 seg
  8. ;Variáveis
  9. cont0 EQU 0x20
  10. cont1 EQU 0x21
  11. cont2 EQU 0x22
  12. cont3 EQU 0x23
  13. curva EQU 0x24
  14. ;Posições Iniciais
  15. #define P1 PORTB,7
  16. #define P0 PORTB,6
  17.  
  18. ORG 0x0000
  19. GOTO SETUP
  20.  
  21. ORG 0x0004
  22. RETFIE
  23.  
  24. SETUP:
  25. BANKSEL TRISA
  26. CLRF TRISA
  27. BANKSEL PORTA
  28. CLRF PORTA
  29. BANKSEL TRISB
  30. MOVLW B'11100000'
  31. MOVWF TRISB
  32.  
  33. BANKSEL PORTB
  34. MOVFW PORTB
  35. CLRF PORTB
  36.  
  37. GOTO setup2
  38.  
  39. MAIN:
  40. BTFSC PORTB, 5 ; bit 5 informa se está em curva
  41. GOTO trat_curva1 ;se estiver, chama a rotina
  42. GOTO reto; chama a rotina que o caminho fica com os dois motores no sentido horário
  43.  
  44. GOTO MAIN
  45.  
  46. reto:
  47. BANKSEL PORTB
  48.  
  49. ;Configurando o MOTOR1
  50. BSF PORTB,RB0
  51. BCF PORTB,RB1
  52.  
  53. ;Configurando o MOTOR2
  54. BSF PORTB,RB2
  55. BCF PORTB,RB3
  56. GOTO MAIN
  57.  
  58. trat_curva1: ; aqui será a curva correspondente ao bit 7
  59. BANKSEL curva
  60.  
  61. BTFSS curva, 2
  62. GOTO trat_curva2
  63.  
  64. ;o carrinho deve virar à direita se o bit mais significativo da curva for igual a 1, e à esquerda se zero
  65. BANKSEL PORTB
  66.  
  67. BTFSC PORTB, 7
  68. CALL curva_direita
  69.  
  70. BTFSS PORTB, 7
  71. CALL curva_esquerda
  72.  
  73. BCF curva, 2
  74. CALL atraso
  75.  
  76. GOTO MAIN
  77.  
  78. trat_curva2:
  79. ; semelhante ao trat_curva1, com a diferença que o bit a ser testado é o 6
  80.  
  81. BTFSS curva, 1
  82. GOTO trat_curva3;vai para a parte que gira 180° ou vai pro fim, conforme a posição atual, indicada pela variável curva
  83.  
  84. BANKSEL PORTB
  85.  
  86. BTFSC PORTB, 6
  87. CALL curva_direita
  88.  
  89. BTFSS PORTB, 6
  90. CALL curva_esquerda
  91.  
  92. BCF curva, 1
  93. CALL atraso
  94.  
  95. GOTO MAIN
  96.  
  97. trat_curva3:
  98. ;manda pro setup2, que seria a volta para a posição intermediária até o início
  99.  
  100. BTFSC curva, 0
  101. GOTO setup2
  102. GOTO fim
  103.  
  104. setup2:
  105. ;observando que as posições iniciais quando invertidas correspondem às novas curvas
  106. ;que devem ser realizadas, optamos por fazer um novo setup e voltar pro início,
  107. ;indicando com o 0 na posição 0 de curva que na próxima vez o carrinho deve parar
  108.  
  109. BANKSEL PORTB
  110. COMF PORTB,0
  111.  
  112. BANKSEL curva
  113. MOVLW 0x06
  114. MOVWF curva
  115.  
  116. CALL cento_e_oitenta
  117. CALL atraso
  118.  
  119. GOTO MAIN
  120.  
  121. ;<curvas>
  122.  
  123. curva_esquerda:
  124. ;para a roda esquerda
  125. BANKSEL PORTB
  126. BCF PORTB, 0
  127. BCF PORTB, 1
  128.  
  129. RETURN
  130.  
  131. curva_direita:
  132. ;para a roda direita
  133. BANKSEL PORTB
  134. BCF PORTB, 2
  135. BCF PORTB, 3
  136.  
  137. RETURN
  138.  
  139. cento_e_oitenta:
  140. ;motor 1 no sentido horário e motor 2 no sentido antihorário
  141. BANKSEL PORTB
  142.  
  143. BSF PORTB, 0
  144. BCF PORTB, 1
  145.  
  146. BCF PORTB, 2
  147. BSF PORTB, 3
  148.  
  149. RETURN
  150. ;</curvas>
  151.  
  152.  
  153. ;<atraso>
  154. atraso:
  155. BANKSEL cont0
  156.  
  157. MOVLW tempo
  158. MOVWF cont0
  159.  
  160. GOTO atraso_00
  161.  
  162. atraso_00
  163. MOVLW 0xfa
  164. MOVWF cont1
  165.  
  166. DECFSZ cont0
  167. GOTO atraso_01
  168.  
  169. RETURN
  170.  
  171. atraso_01
  172. MOVLW 0x14
  173. MOVWF cont2
  174.  
  175. DECFSZ cont1
  176. GOTO atraso_02
  177. GOTO atraso_00
  178.  
  179. atraso_02
  180. MOVLW 0x08
  181. MOVWF cont3
  182.  
  183. DECFSZ cont2
  184. GOTO atraso_03
  185. GOTO atraso_01
  186.  
  187. atraso_03
  188. DECFSZ cont3
  189. NOP
  190. GOTO atraso_02
  191. ;</atraso>
  192.  
  193. fim: ;É chamada quando chega no destino, para os dois motores
  194. BANKSEL PORTA
  195. MOVLW 0xff
  196. MOVWF PORTA
  197. BANKSEL PORTB
  198.  
  199. BCF PORTB,0
  200. BCF PORTB,1
  201.  
  202. BCF PORTB,2
  203. BCF PORTB,3
  204.  
  205. GOTO fim
  206.  
  207. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement