Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- list p=12f675 ; Processador utilizado.
- #include <p12f675.inc> ; Biblioteca do PIC.
- __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF ; Configuração, _INTRC_OSC_NOCLKOUT: Ativa clock interno (4MHz).
- ; Variáveis (0x20 = ínicio da RAM de acesso livre)
- contador1 equ 0x20
- contador2 equ 0x22
- contador3 equ 0x24
- ; ---------------------------------------------------------------------------------------
- org 0x000 ; RESET
- goto inicio
- ; ----------------------------------------------------------------------------------------
- org 0x004 ; INTERRUPÇÃO
- retfie
- inicio:
- bsf STATUS, RP0 ; RP0 é o 5º bit do STATUS, o bit set seta ele para 1 e muda para o banco 1.
- movlw B'00000001' ; Move 00000001 para o registrador W.
- movwf TRISIO ; Bota o pino GP0 (pino 7 do diagrama) como entrada e o resto como saída.
- movwf ANSEL ; Seta entrada analógica AN0
- ; bcf OPTION_REG, 5 ; Desativa comparador analógico.
- bcf STATUS, RP0 ; Seta banco 0.
- movwf ADCON0 ; Ativa conversor A/D
- codigo:
- bsf ADCON0, 1
- call esperar100ms
- btfsc ADRESH, 3
- bsf GPIO, 1 ; Acende led.
- btfss ADRESH, 3
- bcf GPIO, 1 ; Apaga led.
- bcf ADCON0, 1
- goto codigo
- ; 1 ciclo = 2,5 us
- ; total = 5 + 35 (=40 ciclos) = call+return-1+movlw+movwf + decfsz+goto (instruções) = 12,5us + 87,5us (tempo)
- esperar100us: ; 2 ciclos
- movlw 0xB ; 1 ciclo
- movwf contador1 ; 1 ciclo
- decfsz contador1, f ; 2 ciclos
- goto $-1 ; 1 ciclo
- return ; 2 ciclos
- ; total = 5 + 3995 (=4000 ciclos) = 12,5us + 9987,5us
- esperar10ms: ; 2 ciclos
- movlw 0x5D ; 1 ciclo
- movwf contador2 ; 1 ciclo
- call esperar100us ; 40 ciclos
- decfsz contador2, f ; 2 ciclos
- goto $-2 ; 1 ciclo
- return ; 2 ciclos
- ; total = 5 + 39995 (=40000 ciclos) = 12,5us + 99987,5us
- esperar100ms: ; 2 ciclos
- movlw 0xA ; 1 ciclo
- movwf contador3 ; 1 ciclo
- call esperar10ms ; 4000 ciclos
- decfsz contador3, f ; 2 ciclos
- goto $-2 ; 1 ciclo
- return ; 2 ciclos
- END
Add Comment
Please, Sign In to add comment