andrelisboa1

Untitled

Oct 11th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. ; LINKER: Enunciação do tipo de microcontrolador, do "target":
  2. list p=10F200
  3. #include <p10F200.inc>
  4. ; (AVISO: NÃO COLOCAR "list", "#include" E "__CONFIG" ENCOSTADOS À ESQUERDA!!!)
  5. ; / \
  6. ; CONFIG: Configuração dos bits de configuração: / \
  7. ; _MCLRE_ON --- Utilizar a porta 3 como um input normal / \
  8. ; _CP_OFF ----- Desativar a proteção de código /_______\
  9. ; _WDT_OFF ---- Desativar o Watchdog Timer |
  10. __CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF ; ________________|
  11.  
  12.  
  13. sGPIO equ 0x10 ; réplica do GPIO
  14. dc1 equ 0x11 ;\_contadores do delay
  15. dc2 equ 0x12 ;/
  16.  
  17.  
  18. ; Calibração do processador:
  19. RCCAL CODE 0x0FF
  20. res 1
  21.  
  22.  
  23. ; Vetor de Reset:
  24. RESET CODE 0x000
  25. movwf OSCCAL
  26.  
  27.  
  28. ; ===== PROGRAMA ===============================================================
  29. ; Inicialização
  30. start
  31. movlw b'111101' ; move 11 1101 para o acumulador (W)
  32. tris GPIO ; utiliza W como a definição de I/O das portas
  33.  
  34. clrf sGPIO ; limpa a literal sGPIO
  35.  
  36.  
  37. ; Loop Principal - Corpo do Programa
  38. main_loop
  39. ; alternar estado do LED na porta 1
  40. movf sGPIO,w ; guardar o estado de sGPIO
  41. xorlw b'000010' ; alterna o bit 1 do registo das portas
  42. movwf sGPIO ; primeiro para a réplica
  43. movwf GPIO ; e exporta o valor para as portas
  44.  
  45. ; espera 500ms
  46. movlw .244 ; loop exterior: 244 x (1023 + 1023 + 3) + 2
  47. movwf dc2 ; = 499 958 ciclos do processador
  48. clrf dc1 ; loop interior: 256 x 4 - 1
  49.  
  50. dly1
  51. nop ; loop interior 1: 1023 ciclos
  52. decfsz dc1,f ; dc1>0? decrementa dc1. dc1=0? salta a próxima instrução
  53. goto dly1 ; \repetir dly1 \executar dly2
  54.  
  55. dly2
  56. nop ; loop interior 2: 1023 ciclos
  57. decfsz dc1,f ; aqui dc1 tornar-se-á 255 e retornará a dly2
  58. goto dly2 ; se dc1 = 0, esta instrução será evitada e passa-se à próxima
  59. decfsz dc2,f ; --- se dc1 = 0, dc2--
  60. goto dly1 ; e dly1 é executado tudo outra vez
  61. goto main_loop ; --- caso finalmente dly2 = 0, executa-se o main_loop
  62. ; e repete-se para sempre
  63.  
  64.  
  65. END ; o fim
Advertisement
Add Comment
Please, Sign In to add comment