Rudolf Waller
diga lá, como foi que você fez este controle?
é basicamente um contador, utiliza da interrupção TMR0 para decrementar de um valor acionado por botoes (cresc ou decresc) ... abaixo segue a programação da interrupção apenas ...
;TRATAMENTO DA INTERRUPÇÃO DE TMR0
BCF INTCON,T0IF ;LIMPA FLAG DA INT.
MOVLW .256-.250 ;SETA TIMER P250MS
MOVWF TMR0 ;REINICIA TMR0
INCF TEMPO,F ;INCREMENTA TEMPO
MOVLW .15 ;COLOCA 16 EM WORK
XORWF TEMPO,W ;COMPARA TEMPO COM 16
BTFSC STATUS,Z ;TESTA BIT Z DO REG. STATUS
CLRF TEMPO ;ZERA TEMPO
MOVF INTENSIDADE,W ;MOVE INTENSIDADE PARA W
SUBWF TEMPO,W ;SUBTRAI TEMPO DE INTENSIDADE
BTFSS STATUS,C ;TESTA BIC C DO REG. STATUS
;VERIFICA SE TEMPO E MENOR QUE INTENSIDADE
GOTO LIGA_LAMPADA
DESLIGA_LAMPADA
BCF LAMPADA ;DESLIGA LAMPADA
GOTO SAI_INT
LIGA_LAMPADA
BSF LAMPADA ;LIGA LAMPADA
;FIM DA INTERRUPÇÃO
SAI_INT
SWAPF STATUS_TEMP,W
MOVWF STATUS ;RECUPERA STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W ;RECUPERA W
RETFIE ;RETORNA DA INTERRUPÇÃO
.... estou tentando agora fazer a conversão do contator binario para os niveis de intensidade em 1 display de 7 segmentos dae sim posto um video do controle funfando ...
este mesmo programa serve para qqer controle PWM, seja um motor DC ... seja uma lâmpada ... vou mostrar com o motor pois eh o q tem na minha giga de ensaios ...
abraço! e mande sujestões ...