Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.25 KB | None | 0 0
  1. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2. ;* MODIFICAÇÕES PARA USO COM 12F675 *
  3. ;* FEITAS PELO PROF. MARDSON *
  4. ;* FEVEREIRO DE 2016 *
  5. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  6.  
  7. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  8. ;* NOME DO PROJETO *
  9. ;* CLIENTE *
  10. ;* DESENVOLVIDO PELA MOSAICO ENGENHARIA E CONSULTORIA *
  11. ;* VERSÃO: 1.0 DATA: nAUmInteressa *
  12. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  13. ;* DESCRIÇÃO DO ARQUIVO *
  14. ;*-----------------------------------------------------------------*
  15. ;* MODELO PARA O PIC 12F675 *
  16. ;* *
  17. ;* *
  18. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  19.  
  20. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  21. ;* ARQUIVOS DE DEFINIÇÕES *
  22. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  23. #INCLUDE <p12f675.inc> ;ARQUIVO PADRÃO MICROCHIP PARA 12F675
  24.  
  25. __CONFIG _BODEN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_ON & _INTRC_OSC_NOCLKOUT
  26.  
  27. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  28. ;* PAGINAÇÃO DE MEMÓRIA *
  29. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  30. ;DEFINIÇÃO DE COMANDOS DE USUÁRIO PARA ALTERAÇÃO DA PÁGINA DE MEMÓRIA
  31. #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMÓRIA
  32. #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK 1 DE MAMÓRIA
  33.  
  34. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  35. ;* VARIÁVEIS *
  36. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  37. ; DEFINIÇÃO DOS NOMES E ENDEREÇOS DE TODAS AS VARIÁVEIS UTILIZADAS
  38. ; PELO SISTEMA
  39.  
  40. CBLOCK 0x20 ;ENDEREÇO INICIAL DA MEMÓRIA DE
  41. ;USUÁRIO
  42. W_TEMP ;REGISTRADORES TEMPORÁRIOS PARA USO
  43. STATUS_TEMP ;JUNTO ÀS INTERRUPÇÕES
  44. X
  45. Y
  46. I
  47. R1
  48. R2
  49.  
  50. ;NOVAS VARIÁVEIS
  51.  
  52. ENDC ;FIM DO BLOCO DE MEMÓRIA
  53. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  54. ;* FLAGS INTERNOS *
  55. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  56. ; DEFINIÇÃO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA
  57.  
  58. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  59. ;* CONSTANTES *
  60. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  61. ; DEFINIÇÃO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA
  62.  
  63. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  64. ;* ENTRADAS *
  65. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  66. ; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO ENTRADA
  67. ; RECOMENDAMOS TAMBÉM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1)
  68.  
  69. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  70. ;* SAÍDAS *
  71. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  72. ; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO SAÍDA
  73. ; RECOMENDAMOS TAMBÉM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1)
  74.  
  75. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  76. ;* VETOR DE RESET *
  77. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  78.  
  79. ORG 0x00 ;ENDEREÇO INICIAL DE PROCESSAMENTO
  80. GOTO INICIO
  81.  
  82. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  83. ;* INÍCIO DA INTERRUPÇÃO *
  84. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  85. ; ENDEREÇO DE DESVIO DAS INTERRUPÇÕES. A PRIMEIRA TAREFA É SALVAR OS
  86. ; VALORES DE "W" E "STATUS" PARA RECUPERAÇÃO FUTURA
  87.  
  88. ORG 0x04 ;ENDEREÇO INICIAL DA INTERRUPÇÃO
  89. MOVWF W_TEMP ;COPIA W PARA W_TEMP
  90. SWAPF STATUS,W
  91. MOVWF STATUS_TEMP ;COPIA STATUS PARA STATUS_TEMP
  92.  
  93. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  94. ;* ROTINA DE INTERRUPÇÃO *
  95. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  96. ; AQUI SERÁ ESCRITA AS ROTINAS DE RECONHECIMENTO E TRATAMENTO DAS
  97. ; INTERRUPÇÕES
  98.  
  99. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  100. ;* ROTINA DE SAÍDA DA INTERRUPÇÃO *
  101. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  102. ; OS VALORES DE "W" E "STATUS" DEVEM SER RECUPERADOS ANTES DE
  103. ; RETORNAR DA INTERRUPÇÃO
  104.  
  105. SAI_INT
  106. SWAPF STATUS_TEMP,W
  107. MOVWF STATUS ;MOVE STATUS_TEMP PARA STATUS
  108. SWAPF W_TEMP,F
  109. SWAPF W_TEMP,W ;MOVE W_TEMP PARA W
  110. RETFIE
  111.  
  112. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  113. ;* ROTINAS E SUBROTINAS *
  114. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  115. ; CADA ROTINA OU SUBROTINA DEVE POSSUIR A DESCRIÇÃO DE FUNCIONAMENTO
  116. ; E UM NOME COERENTE ÀS SUAS FUNÇÕES.
  117.  
  118. SUBROTINA1
  119.  
  120. ;CORPO DA ROTINA
  121.  
  122. RETURN
  123.  
  124. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  125. ;* INICIO DO PROGRAMA *
  126. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  127.  
  128. INICIO
  129. BANK1 ;ALTERA PARA O BANCO 1
  130. MOVLW B'00000000' ;CONFIGURA TODAS AS PORTAS DO GPIO (PINOS)
  131. MOVWF TRISIO ;COMO SAÍDAS
  132. CLRF ANSEL ;DEFINE PORTAS COMO Digital I/O
  133. MOVLW B'00000100'
  134. MOVWF OPTION_REG ;DEFINE OPÇÕES DE OPERAÇÃO
  135. MOVLW B'00000000'
  136. MOVWF INTCON ;DEFINE OPÇÕES DE INTERRUPÇÕES
  137. BANK0 ;RETORNA PARA O BANCO
  138. MOVLW B'00000111'
  139. MOVWF CMCON ;DEFINE O MODO DE OPERAÇÃO DO COMPARADOR ANALÓGICO
  140.  
  141. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  142. ;* INICIALIZAÇÃO DAS VARIÁVEIS *
  143. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  144.  
  145. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  146. ;* ROTINA PRINCIPAL *
  147. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  148. MAIN
  149.  
  150. ; ENTRADAS
  151. MOVLW 0x25 ; ENTRADA A
  152. MOVWF X ; SALVA EM X <- A
  153. MOVLW 0x4A ; ENTRADA B
  154. MOVWF Y ; Y <- B
  155.  
  156. ; PREPROCESSAMENTO
  157. PRE_PROCESSING_A:
  158. MOVLW B'00000001'
  159. SUBWF X, W
  160. BTFSS STATUS, C ; VERIFICA SE A É 0
  161. GOTO ZERO
  162. GOTO PRE_PROCESSING_B
  163.  
  164. PRE_PROCESSING_B:
  165. MOVLW B'00000001'
  166. SUBWF Y, W
  167. BTFSS STATUS, C ; VERIFICA SE B É 0
  168. GOTO ZERO
  169. GOTO PRE_PROCESSING_CONT
  170.  
  171. PRE_PROCESSING_CONT: ; VERIFICA QUEM DEVE SER O CONTADOR
  172. MOVFW Y
  173. SUBWF X, W
  174. BTFSC STATUS, C
  175. GOTO PROCESSING
  176. GOTO CHANGEXY
  177.  
  178. CHANGEXY:
  179. MOVFW Y
  180. XORWF X
  181. MOVFW X
  182. XORWF Y
  183. MOVFW Y
  184. XORWF X
  185. GOTO PROCESSING
  186.  
  187. PROCESSING:
  188. MOVFW X
  189. MOVWF R1 ; R1 <- A
  190. MOVLW B'00000000'
  191. MOVWF R2 ; SETA R2 <- 0
  192.  
  193. ; SETA Y COMO CONTADOR E INICIA O LOOP, CASO Y > 1
  194. DECFSZ Y
  195. GOTO LOOP
  196. GOTO FIM
  197.  
  198. ; INICIA O FOR (MULTIPLICACAO = DIVERSAS SOMAS)
  199. LOOP:
  200. MOVFW X
  201. ADDWF R1 ; R1 + X
  202. BTFSC STATUS, C ; VERIFICA SE C É 0
  203. GOTO ADDR2 ; SE NÃO, EXISTE ESTOURO E A PARTE SIGNIFICATIVA É INCREMENTADA
  204. GOTO BACK ; SE SIM, NAO EXISTE PARTE ESTOURO, CONTINUA
  205.  
  206. BACK:
  207. DECFSZ Y ; DECREMENTA O CONTADOR,
  208. GOTO LOOP ; CONTINUA O LAÇO
  209. GOTO FIM ;SE FOR IGUAL A ZERO, ACABOU
  210.  
  211. ADDR2:
  212. MOVLW B'00000001'
  213. ADDWF R2 ; SOMA A R2 O BIT DO C
  214.  
  215. GOTO BACK ; VOLTA PRO FLUXO NORMAL
  216.  
  217. ZERO:
  218. MOVLW B'00000000'
  219. MOVWF R1
  220. MOVWF R2
  221. GOTO FIM
  222.  
  223. FIM:
  224. NOP
  225.  
  226.  
  227. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  228. ;* FIM DO PROGRAMA *
  229. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  230.  
  231. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement