Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* MODIFICAÇÕES PARA USO COM 12F675 *
- ;* FEITAS PELO PROF. MARDSON *
- ;* FEVEREIRO DE 2016 *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* NOME DO PROJETO *
- ;* CLIENTE *
- ;* DESENVOLVIDO PELA MOSAICO ENGENHARIA E CONSULTORIA *
- ;* VERSÃO: 1.0 DATA: 17/06/03 *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* DESCRIÇÃO DO ARQUIVO *
- ;*-----------------------------------------------------------------*
- ;* MODELO PARA O PIC 12F675 *
- ;* *
- ;* *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ARQUIVOS DE DEFINIÇÕES *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- #INCLUDE <p12f675.inc> ;ARQUIVO PADRÃO MICROCHIP PARA 12F675
- __CONFIG _BODEN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_ON & _INTRC_OSC_NOCLKOUT
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* PAGINAÇÃO DE MEMÓRIA *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;DEFINIÇÃO DE COMANDOS DE USUÁRIO PARA ALTERAÇÃO DA PÁGINA DE MEMÓRIA
- #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMÓRIA
- #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK 1 DE MAMÓRIA
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* VARIÁVEIS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; DEFINIÇÃO DOS NOMES E ENDEREÇOS DE TODAS AS VARIÁVEIS UTILIZADAS
- ; PELO SISTEMA
- CBLOCK 0x20 ;ENDEREÇO INICIAL DA MEMÓRIA DE
- ;USUÁRIO
- W_TEMP ;REGISTRADORES TEMPORÁRIOS PARA USO
- STATUS_TEMP ;JUNTO ÀS INTERRUPÇÕES
- DUTYCYCLE
- AUXDUTYCYCLE
- CONT1
- CONT2
- ;NOVAS VARIÁVEIS
- ENDC ;FIM DO BLOCO DE MEMÓRIA
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* FLAGS INTERNOS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; DEFINIÇÃO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* CONSTANTES *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; DEFINIÇÃO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ENTRADAS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO ENTRADA
- ; RECOMENDAMOS TAMBÉM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1)
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* SAÍDAS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO SAÍDA
- ; RECOMENDAMOS TAMBÉM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1)
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* VETOR DE RESET *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ORG 0x00 ;ENDEREÇO INICIAL DE PROCESSAMENTO
- GOTO INICIO
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* INÍCIO DA INTERRUPÇÃO *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; ENDEREÇO DE DESVIO DAS INTERRUPÇÕES. A PRIMEIRA TAREFA É SALVAR OS
- ; VALORES DE "W" E "STATUS" PARA RECUPERAÇÃO FUTURA
- ORG 0x04 ;ENDEREÇO INICIAL DA INTERRUPÇÃO
- MOVWF W_TEMP ;COPIA W PARA W_TEMP
- SWAPF STATUS,W
- MOVWF STATUS_TEMP ;COPIA STATUS PARA STATUS_TEMP
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ROTINA DE INTERRUPÇÃO *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; AQUI SERÁ ESCRITA AS ROTINAS DE RECONHECIMENTO E TRATAMENTO DAS
- ; INTERRUPÇÕES
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ROTINA DE SAÍDA DA INTERRUPÇÃO *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; OS VALORES DE "W" E "STATUS" DEVEM SER RECUPERADOS ANTES DE
- ; RETORNAR DA INTERRUPÇÃO
- SAI_INT
- SWAPF STATUS_TEMP,W
- MOVWF STATUS ;MOVE STATUS_TEMP PARA STATUS
- SWAPF W_TEMP,F
- SWAPF W_TEMP,W ;MOVE W_TEMP PARA W
- RETFIE
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ROTINAS E SUBROTINAS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ; CADA ROTINA OU SUBROTINA DEVE POSSUIR A DESCRIÇÃO DE FUNCIONAMENTO
- ; E UM NOME COERENTE ÀS SUAS FUNÇÕES.
- DELAY
- MOVWF CONT2 ;cont2 * 102us (cont2 = dutycycle)
- CONTAMAIS1
- MOVLW .2 ; = 8us
- MOVWF CONT1
- CONTAMAIS2
- DECFSZ CONT1
- GOTO CONTAMAIS2
- DECFSZ CONT2
- GOTO CONTAMAIS1
- RETURN
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* INICIO DO PROGRAMA *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- INICIO
- BANK1 ;ALTERA PARA O BANCO 1
- MOVLW B'00000001' ;GP0 COMO ENTRADA ;GP5 COMO SAIDA
- MOVWF TRISIO
- MOVLW B'01110001' ;PORTAS ANALOGICA
- MOVWF ANSEL
- MOVLW B'00000010' ;255*8 =~ 2ms
- MOVWF OPTION_REG ;DEFINE OPÇÕES DE OPERAÇÃO
- MOVLW B'00000000'
- MOVWF INTCON ;DEFINE OPÇÕES DE INTERRUPÇÕES
- BANK0 ;RETORNA PARA O BANCO
- MOVLW B'10000001' ;justificado para direita | canal 0 | ativo
- MOVWF ADCON0
- MOVLW B'00000111'
- MOVWF CMCON ;DEFINE O MODO DE OPERAÇÃO DO COMPARADOR ANALÓGICO
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* INICIALIZAÇÃO DAS VARIÁVEIS *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- MOVLW .126
- MOVWF DUTYCYCLE
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* ROTINA PRINCIPAL *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- MAIN
- BSF ADCON0, 1 ;LEITURA
- LOOP
- BTFSC ADCON0, 1
- GOTO LOOP
- ;CORPO DA ROTINA PRINCIPAL
- MOVLW .51 ;resultado da conversao fica em ADRESL
- SUBWF ADRESL, W ;subtrai do work e salva no work
- BTFSC STATUS, C ;se for menor carry eh 0 (negativo adresl < w)
- GOTO DIMINUIR
- GOTO AUMENTAR
- DIMINUIR
- CLRF TMR0
- MOVFW DUTYCYCLE
- MOVWF AUXDUTYCYCLE
- INCFSZ AUXDUTYCYCLE
- INCF DUTYCYCLE; 5% 102us eh 5%
- MOVFW DUTYCYCLE ;tempo de atividade (nivel alto)
- CALL DELAY
- BSF GPIO, 5
- ESPERAOCUPADA ;espera pelo tempo setado
- BTFSS INTCON, T0IF
- GOTO ESPERAOCUPADA
- BCF INTCON,T0IF
- BCF GPIO, 5 ;volta para o nivel baixo
- GOTO MAIN
- AUMENTAR
- CLRF TMR0
- MOVFW DUTYCYCLE
- MOVWF AUXDUTYCYCLE
- DECFSZ AUXDUTYCYCLE
- DECF DUTYCYCLE; 5% 102us eh 5%
- MOVFW DUTYCYCLE ;tempo de atividade (nivel alto)
- CALL DELAY
- BSF GPIO, 5
- ESPERAOCUPADA2 ;espera pelo tempo setado
- BTFSS INTCON, T0IF
- GOTO ESPERAOCUPADA2
- BCF INTCON,T0IF
- BCF GPIO, 5 ;volta para o nivel baixo
- GOTO MAIN
- GOTO MAIN
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- ;* FIM DO PROGRAMA *
- ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement