Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; LINKER: Enunciação do tipo de microcontrolador, do "target":
- list p=10F200
- #include <p10F200.inc>
- ; (AVISO: NÃO COLOCAR "list", "#include" E "__CONFIG" ENCOSTADOS À ESQUERDA!!!)
- ; / \
- ; CONFIG: Configuração dos bits de configuração: / \
- ; _MCLRE_ON --- Utilizar a porta 3 como um input normal / \
- ; _CP_OFF ----- Desativar a proteção de código /_______\
- ; _WDT_OFF ---- Desativar o Watchdog Timer |
- __CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF ; ________________|
- sGPIO equ 0x10 ; réplica do GPIO
- dc1 equ 0x11 ;\_contadores do delay
- dc2 equ 0x12 ;/
- ; Calibração do processador:
- RCCAL CODE 0x0FF
- res 1
- ; Vetor de Reset:
- RESET CODE 0x000
- movwf OSCCAL
- ; ===== PROGRAMA ===============================================================
- ; Inicialização
- start
- movlw b'111101' ; move 11 1101 para o acumulador (W)
- tris GPIO ; utiliza W como a definição de I/O das portas
- clrf sGPIO ; limpa a literal sGPIO
- ; Loop Principal - Corpo do Programa
- main_loop
- ; alternar estado do LED na porta 1
- movf sGPIO,w ; guardar o estado de sGPIO
- xorlw b'000010' ; alterna o bit 1 do registo das portas
- movwf sGPIO ; primeiro para a réplica
- movwf GPIO ; e exporta o valor para as portas
- ; espera 500ms
- movlw .244 ; loop exterior: 244 x (1023 + 1023 + 3) + 2
- movwf dc2 ; = 499 958 ciclos do processador
- clrf dc1 ; loop interior: 256 x 4 - 1
- dly1
- nop ; loop interior 1: 1023 ciclos
- decfsz dc1,f ; dc1>0? decrementa dc1. dc1=0? salta a próxima instrução
- goto dly1 ; \repetir dly1 \executar dly2
- dly2
- nop ; loop interior 2: 1023 ciclos
- decfsz dc1,f ; aqui dc1 tornar-se-á 255 e retornará a dly2
- goto dly2 ; se dc1 = 0, esta instrução será evitada e passa-se à próxima
- decfsz dc2,f ; --- se dc1 = 0, dc2--
- goto dly1 ; e dly1 é executado tudo outra vez
- goto main_loop ; --- caso finalmente dly2 = 0, executa-se o main_loop
- ; e repete-se para sempre
- END ; o fim
Advertisement
Add Comment
Please, Sign In to add comment