• Nenhum resultado encontrado

Solução por Software para Implementar PWM em qualquer Microcontrolador PIC

N/A
N/A
Protected

Academic year: 2021

Share "Solução por Software para Implementar PWM em qualquer Microcontrolador PIC"

Copied!
17
0
0

Texto

(1)

Solução por Software para Implementar PWM em

qualquer Microcontrolador PIC

Prof. Francisco Fambrini

Faculdade de Engenharia, Universidade Anhanguera

Pólo Santa Bárbara do Oeste

Palavras-Chave:

Microcontroladores, PWM, Modulação por largura de Pulso, Microchip, PIC.

Keywords:

Microcontrollers, PWM, Pulse Width Modulation, Microchip, PIC.

Abstract:

Some PIC Microcontrollers (Microchip) have built-in PWM modules, whose devices can produce pwm signals without computacional effort and extra firmware. However, all older PICs and some new models (for instance, PIC12F675) don´t have built-in PWM modules in chip case.

In this paper, the author intends to describe a PWM Software Solution for the PIC12F675 and other PIC microcontrollers without hard-coded PWM. This solution allows to build a digital pwm system embeeded at all PIC Microcontrollers chips.

In adittion, a short revision about PWM System and MOS-FET transistors power control are described. A review about PWM concepts and its applications is also done as well as considerations about power stage, using MOS-FET transistors.

Some considerations about programming techniques in Assembly language and a variety of examples about the implementation code were also included in this text in order to permit the interested reader to make the experience in laboratory.

Resumo:

Muitos Microcontroladores PIC (Microchip) possuem módulos PWM internos na própria pastilha, que possibilitam gerar sinais de pwm sem esforço computacional e sem firmware extra.

Entretanto, todos os PICs mais antigos e alguns novos modelos (por exemplo, PIC12F675) não possuem tal módulo PWM interno em sua pastilha.

Neste trabalho o autor pretende descrever um método para se implementar um Controlador PWM em qualquer microcontrolador PIC (Microchip), até mesmo em modelos que não possuem o módulo de PWM interno construído por hardware.

Uma revisão sobre o Conceito de PWM e suas aplicações também é levada a feito, bem como considerações sobre o estágio de potência, usando transístores hex MOS-FET .

Algumas considerações a respeito de técnicas de programação em linguagem Assembly e vários exemplos de como esse código foi implementado também foram incluídas no texto, com a finalidade de possibilitar ao leitor interessado reproduzir a idéia em laboratório.

(2)

Conceitos:

PWM é uma sigla para Pulse Width Modulation, ou seja, Modulação por largura de pulsos.

É um método consagrado para controlar a energia (e consequentemente a potência) entregue à carga em dispositivos que trabalham em sistemas de Corrente Continua (DC).

Quanto maior a duração do Tempo Ligado (tempo em que o PWM permanece em On) daqui em diante denominado Ton neste trabalho, maior será a Energia entregue à carga.

PWMs são por definição sistemas de Frequência (F) e Período (T) constantes e de Largura de Pulso (ciclo ativo) ajustável.

Denominando de Toff o tempo em que a carga é mantida desativada, o periodo total de nosso PWM será:

Define-se Ciclo Ativo (Duty Cycle D.C. ) por:

A figura –1 abaixo ilustra a forma de onda típica de um sistema PWM digital:

Figura-1 – Forma de onda caracteristica do PWM

A solução proposta foi testada e desenvolvida num microcontrolador PIC12F675 (que não possue módulo PWM interno) e baseia-se em firmware.

A figura-2 abaixo ilustra a pinagem deste inovador microcontrolador de apnas 8 pinos: Ton Toff

Toff

Ton

Ton

C

D

+

=

.

.

Toff

Ton

T

=

+

(3)

Figura-2 Microcontrolador PIC12F675, em seu inovador invólucro DIP de 8 pinos

Nosso Firmware foi escrito totalmente em Linguagem Assembly pois nossa intenção inicial de utilizar Linguagem C revelou-se incapaz de proporcionar a velocidade necessária de processamento para gerar o PWM, ler os dois botões (Up e Down) sem causar efeitos de “flicker” na onda retangular gerada.

Sobre velocidade de processamento, é importante frisar que optamos por utilizar o oscilador RC interno dos PIC12F675, cuja frequencia de clock é fixa e igual a 4 MHz.

Como os Microcontroladores PIC dividem internamente o clock por 4, temos um clock efetivo interno de valor 1 MHz o que nos dá um Ciclo de Máquina de duração 1 us (um microsegundo).

Com este ciclo de máquina, optamos por uma solução de software otimizada para a arquitetura do PIC, segundo nossa referência bibliográfica (1), o que nos proporcionou excelente desempenho no PWM. O sistema utiliza-se da interrupção do TMR0 (Timer-Zero) cujo prescaler foi ajustado para 1:2, ou seja, a cada 2 us temos uma interrupção de timer 0 e o fluxo do programa será desviado para o endereço 0x04 (endereço do vetor de interrupção do PIC12F675).

As variáveis usadas no programa foram as seguintes: CBLOCK 0X20 STACKW STACKS COUNTER COUNTER2 PWMDESIRED PWMMAX PWMHELP

MAX ;VALOR MAXIMO DO PWMDESIRED MIN ;VALOR MINIMO

FILTRO1 ;filtros dos botoes FILTRO2

FLAGS ENDC

Nota-se a declaração de tais variáveis a partir do endereço 0x20, que é o endereço do topo da memória RAM do dispositivo PIC utilizado.

Outros microcontroladores podem exigir um novo endereço, bastando para isso que se altere a instrução CBLOCK 0x20

Para o novo valor do endereço inicial de memória desejado.

Rotina de Interrupção:

A partir do endereço 0x04 é colocada a rotina de interrupção, que será atendida toda vez que o contador denominado TMR0 (Timer-Zero) excede o valor 0xFF, caracterizando o “Overflow”.

(4)

Org 0x04 btfsc TMR0,0 GOTO PwmInt PwmInt: movwf STACKW SWAPF STACKW,F SWAPF STATUS,W MOVWF STACKS BCF INTCON,T0IF BTFSC LED GOTO LOWPULSE HIGHPULSE: COMF PWMDESIRED,W MOVWF PWMHELP ADDWF PWMMAX,F BTFSS STATUS,C GOTO HIGHIMPINT HIGHIMPSHRT: MOVF PWMMAX,W ADDWF PCL,F BSF LED BSF LED BSF LED ...

... (essa instrução BSF LED é repetida diversas vezes) ... ... BSF LED BSF LED BCF LED INCF COUNTER, F COMF PWMHELP ,W ADDLW PWMADJUSTVAL+5 MOVWF TMR0 GOTO LOWIMPINT2 HIGHIMPINT: ADDLW PWMADJUSTVAL MOVWF TMR0 HIGHIMPINT2: BSF LED INCF COUNTER,F MOVLW PWMMAXVAL-1 MOVWF PWMMAX SWAPF STACKS,W MOVWF STATUS SWAPF STACKW,W RETFIE

A instrução RETFIE finaliza a interrupção e devolve controle do fluxo do programa ao endereço armazenado no PCLATCH (Program Counter);

Na rotina de interrupção temos uma estrutura de software da seguinte forma: MOVF pwmdesired , W

(5)

bsf LED bsf LED bsf LED bsf LED bsf LED bsf LED ... ... ...

Cada instrução do tipo BSF (Bit Set File) mantém a saída LED em nível lógico alto durante um tempo igual a 1 us. De modo análogo, cada instrução do tipo BCF (Bit Clear File) mantém a mesma saída em nível lógico baixo durante o mesmo intervalo de tempo. A associação série de diversas instruções idênticas desse tipo é que permite produzir os tempos Ton e Toff necessários para se construir a forma de onda do PWM desejado. O registrador pwmdesired armazena o valor desejado de Ton. A seguir este valor é movido para o W e somado ao PCL que produz um salto relativo para a instrução que mantém o PWM pelo tempo correto na saída do microcontrolador.

O uso de interrupção do Timer0 nos possibilita independência para leitura dos botoes UP e DOWN sem prejudicar a geração da onda do PWM.

O botão UP incrementa o ciclo ativo e o botão DOWN decrementa.

O PWM inicializa-se sempre em zero, ou seja, ao restabelecer a energia, começa sempre desativado. A constante “LED” é definida no cabeçalho do programa da seguinte forma:

#define LED GPIO,5

sendo que o gate do transistor de potência utilizado foi então conectado ao pino GPIO.5 do Microcontrolador, sendo este o elemento de saida onde é gerado o sinal PWM.

Rotina de Controle do Ciclo Ativo:

A rotina que faz a Leitura das duas teclas ( denominadas respectivamente “UP” e “Down” ) é mostrada abaixo, sendo que tais teclas tem por função incrementar ou decrementar o ciclo ativo do sinal de PWM produzido no pino GPIO.5 do Microcontrolador usado no protótipo:

CONTROLE: clrwdt BTFSS BT1 GOTO AUMENTAR BTFSS BT2 GOTO DIMINUIR goto CONTROLE AUMENTAR:

MOVF MAX,W ; verifica se o valor de “pwmdesired” ja está no máximo XORWF PWMDESIRED,W

BTFSC STATUS,Z

GOTO CONTROLE ; se pwmdesired=MAX volta para CONTROLE INCF PWMDESIRED,1 ; caso contrario, incrementa a variavel pwmdesired CALL DELAY GOTO CONTROLE DIMINUIR: MOVF MIN,W XORWF PWMDESIRED,W BTFSC STATUS,Z GOTO CONTROLE DECF PWMDESIRED,1

(6)

CALL DELAY GOTO CONTROLE

Filtros Anti -debouncing:

Os botões (que são chaves mecânicas convencionais, do tipo “push-buttons” ) geram, ao serem pressionados, o inevitável ruído elétrico conhecido na literatura como “bouncing” (referência 8) .

Com a finalidade de resolver tal problema, foi acrescentado um filtro por software, que nada mais é do que uma rotina de atraso de tempo (conhecida na literatura como “delay” ), que produz um atraso da ordem de 100 ms para um clock interno de 4 MHz e ciclo de máquina de 1 microsegundo.

Tal rotina é descrita abaixo: DELAY: movlw .30 movwf FILTRO2 DL1: clrwdt movlw .255 movwf FILTRO1 DL2: clrwdt NOP DECFSZ FILTRO1,F GOTO DL2 DECFSZ FILTRO2,F GOTO DL1 RETURN

Outro detalhe é o uso dos resistores de pull-up internos ao Microcontrolador PIC em questão, o que nos dispensou de usá-los externamente, através da configuração do registrador WPU.

Também não foi utilizado nenhum oscilador de clock externo ao chip, nem cristal de quartzo, tendo-se optado pelo uso do oscilador RC interno ao chip como forma de minimizar a quantidade de componentes externos. É importante tecer algumas considerações sobre o estágio de Potência.

A escolha recaiu para um transistor MOS de Efeito de Campo (MOS-FET) da International Rectifier, o IRLZ 44 N.

A letra “L” no prefixo IRLZ indica que seu gate é adequado para controles lógicos e que o mesmo pode ser saturado com tensões de 5 Volts, o que não ocorre com os tipos IRF ou IRFZ.

Nestes, um valor tão baixo de tensão pode não levá-lo à saturação, fazendo o Mos-Fet operar na região linear, o que iria provocar um considerável aquecimento do componente ( referência 6 ).

Operando na condição de Corte e Saturação, o aquecimento é mínimo (não ocorre perda de energia por dissipação de potência na junção Dreno – Source de maneira apreciável ) .

Assim, o transistor poderá manipular correntes elevadas (até 47 A segundo o datasheet do fabricante), exibindo (quando saturado) uma resistência DRENO-SOURCE ( Rds ) de apenas Rds = 0,022 ohms (6). A tensão máxima admissível entre D e S é de 55 Volts, ainda de acordo com (6).

A escolha do resistor de Gate do mos-fet também é importante: a capacitância interna entre G e S é elevada (da ordem de 1700 pF ) e um resistor de valor elevado formaria com esta um RC com constante de tempo considerável, prejudicando o disparo rápido para corte e saturação deste transistor.

Nota-se que o tempo necessário para que um capacitor que compõe uma rede RC esteja totalmente carregado é dado por:

T = 5.R.C

(7)

E a Energia total acumulada por este capacitor será, em unidades SI (joules):

Onde C é a capacitância em farads e U é o valor final da tensão sobre o capacitor. Por outro lado, a carga elétrica total armazenada por este capacitor é dada por: Q = C.U

Onde Q representa a carga total armazenada medida em coulombs.

Tal energia acumulada na junção gate-source será da ordem de 0,02 microJoules e a carga elétrica total será de 0,0085 microCoulombs.

Por outro lado, o menor valor de resistor admissível pela saída do microcontrolador PIC é de 200 ohms, pois tais dispositivos são especificados para uma corrente máxima de saída de 25 mA em 5 Volts de alimentação

(ref. 7) .

O valor escolhido foi então de 200 ohms.

Faz-se também necessário acrescentar um diodo zener entre o gate do mos-fet e a porta de saída do PIC, para evitar que spikes rápidos de tensão venham a atingir o microcontrolador, o que provocaria a queima do mesmo.

Um diodo zener (1N4733A) foi inserido entre um resistor de 22 ohms e outro de 180 ohms associados em série, para evitar oscilações parasitas que poderiam provocar o disparo errático do terminal Gate do transístor Mos-Fet usado no estágio de potência. O diagrama elétrico do circuito experimentalmente adotado é mostrado abaixo:

Figura-3 - Circuito Elétrico experimental proposto

2

2

CU

E

=

(8)

A potência dissipada pela junção Dreno-Source do transistor Mos-Fet utilizado, considerando-se uma carga resistiva de 1,2 ohms acoplada ao dreno foi da ordem de 1,25 watts, o que equivale a uma energia de 1,25 J por segundo produzida na forma de calor.

Tal medida foi efetuada em laboratório, usando-se um calorímetro específico.

Essa dissipação de potência nos leva a recomendar o uso de um pequeno radiador de calor, preferencialmente em alumínio, acoplado termicamente ao transístor, com a finalidade de aumentar a superfície da pastilha em contato com o ar e possibilitar a necessária refrigeração.

Recomenda-se ainda que tal dissipador de calor seja pintado na cor preta, com tinta apropriada para superfícies de alumínio, porque a cor negra tem melhores propriedades de irradiação térmica.

Nota-se ainda pelo diagrama elétrico da figura 2 que um terminal “jumper” foi acrescentado no pino A3 (também denominado GPIO.3) com a finalidade de se acrescentar futuras inovações.

A idéia é que, através da colocação deste jumper no circuito, novas funções possam ser implementadas, tais como a leitura de um LDR (Light Dependent Resistor) ou uma foto-célula, com a finalidade de comandar automaticamente a intensidade da iluminação ambiente, levando-se em conta o nível de luz local. Tais implementações serão oportunamente descritas.

Ainda sobre a entrada GPIO.3 (na figura 2 chamada simplesmente A3) nota-se que também não foram utilizados os resistores de “pull-up” tradicionais, o que se traduz numa economia de componentes e maior confiabilidade para o circuito.

Ao invés de se utilizar resistores de pull-up externos, optou-se mais uma vez pelo uso dos elementos internos ao Microcontrolador, que foram acionados através da correta configuração do registrador WPU:

MOVLW 16h

MOVWF WPU ;configura os resitores de pull-up

Configurações Iniciais:

As configurações usadas para inicializar o Microcontrolador, bem como o estado incial do registrador STATUS são descritas abaixo:

#include <p12f675.inc> __CONFIG 314Ch

#define BANK0 BCF STATUS, RP0 #define BANK1 BSF STATUS, RP0

BANK1 ; ajusta oscilador interno para 4MHz CALL 3FFh

MOVWF OSCCAL BANK0

CLRF GPIO MOVLW 07h

MOVWF CMCON ; desliga comparadores analógicos BANK1

CLRF ANSEL ;todos I/Os digitais MOVLW 1Fh

MOVWF TRISIO ;configura as saidas e entradas MOVLW 16h

MOVWF WPU ;configura os resitores de pull-up

MOVLW B'00000000' ; ajusta o OPTION_REG, TMR0 com divisor 1:2 MOVWF OPTION_REG ; habilita os pull-up

MOVLW B'10100000' ;ajusta o INTCON

MOVWF INTCON ;liga interrup do TMR0 e liga pull-ups BANK0

(9)

A seguinte subrotina Assembly tem por função verificar quando a variável pwmdesired atingiu seu valor máximo através do ajuste do botão “UP” pelo usuário:

;**************************************************************************** AUMENTAR:

MOVF MAX,W ; verifica se o valor de “pwmdesired” ja está no máximo XORWF PWMDESIRED,W

BTFSC STATUS,Z

GOTO CONTROLE ; se pwmdesired=MAX volta para CONTROLE INCF PWMDESIRED,1 ; caso contrario, incrementa a variavel pwmdesired CALL DELAY

GOTO CONTROLE

;*****************************************************************************

Ressalta-se o uso da instrução XORWF (OU Exclusivo) com a finalidade de se efetuar a comparação entre a variável “pwmdesired” e a constante MAX, previamente definida no firmware para limitar o valor máximo a ser atingido pelo Ton (tempo no qual a saida permanece em nível lógico alto) do PWM.

CONCLUSÃO:

Este software é capaz de produzir na saída de qualquer Microcontrolador um PWM de ciclo ativo variável digitalmente através de 2 botões, com 255 passos de ajuste ( 256 steps, incluindo o valor 0).

O consumo de memória do processador é inferior a 200 words (cerca de 20% da capacidade de um PIC12F675).

A Frequência do PWM gerado gira em torno de 2,2 KHz. O período medido é de aproximadamente 450 us.

O uso de um MOS-FET lógico de potência (IRLZ 44) da International Rectifier garante que elevadas correntes podem ser controladas, o que torna este dispositivo ideal para controle de luminosidade de lâmpadas e de velocidade de motores DC.

A figura-4 mostra o aspecto final do protótipo que foi montado tendo por base uma placa de cicuito impresso padrão:

(10)

REFERÊNCIAS:

(1)- Ropcke, Ole. AN654, Aplicattion Note da Microchip (www.microchip.com) (2)- Zanco, Wagner. Microcontroladores PIC, Ed. Érica, 3 Edição

(3)- Souza, David José. Desbravando o PIC, 6 Edição, Ed. Érica

(4)- Pereira, Fabio. Microcontroladores PIC Técnicas Avançadas, Ed. Érica. (5)- Fambrini, Francisco Apostila sobre Linguagem Assembly, INTEP, edição do Autor. (6)- International Rectifier, Datasheet do transistor IRLZ 4

(7)- Microchip, Datasheet do microcontrolador PIC12F6xx (8)- www.rentron.com/Myke6.htm Myke Predko, artigo sobre bouncings

ANEXO1- LISTA DE MATERIAL REFERENTE AO CIRCUITO DA FIGURA 3 ANEXO-2- CÓDIGO FONTE COMPLETO DO FIRMWARE IMPLEMENTADO

(11)

Anexo 1

Lista de Material referente ao circuito da fig- 2

Circuitos Integrados

c.i. 1 PIC 12F675 - Microcontrolador Microchip

Resistores todos 1/8 Watt

R1 470 ohms

R2 22 ohms

R3 180 ohms

Capacitores

C1 470 uF, 25V, cap eletrolítico

C2 220 uF, 25V, cap eletrolitico

C3 100nF, 16V, cap. cerâmico disco

C4 100uF, 16 V, cap eletrolitico

Diodos

D1 1N4007, diodo de Silicio

D2 1N4733A, diodo zener 5.1 V, 1 watt

D3 1N4733A, diodo zener 5.1 V, 1 watt

chaves

S1 e S2 chaves tipo push button para circuito impresso

Transistor

(12)

ANEXO - 1

;****************************************************** ; PWM por software para PIC12F675 * ; VARIAVEL PWMDESIRED CONTROLA * ; O NIVEL DE PWM * ;;***************************************************** #include <p12f675.inc>

__CONFIG 314Ch

#define BANK0 BCF STATUS,RP0 #define BANK1 BSF STATUS,RP0 ;**************************** ;variaveis do programa ;**************************** CBLOCK 0X20 STACKW STACKS COUNTER COUNTER2 PWMDESIRED PWMMAX PWMHELP

MAX ;VALOR MAXIMO DO PWMDESIRED MIN ;VALOR MINIMO

FILTRO1 ;filtros dos botoes FILTRO2

FLAGS ENDC

;**************************** ; Constantes usadas no programa: PWMADJUSTVAL EQU .22 PWMMAXVAL EQU .29 ;**************************** #define LDR GPIO,0 #define BT1 GPIO,1 #define BT2 GPIO,2 #define JUMPER GPIO,4 #define LED GPIO,5 org 0x00

goto power_on

;*********************************** ;Endereco inicial da interrupcao

;*********************************** org 0x04 btfsc TMR0,0 GOTO PwmInt PwmInt: movwf STACKW

(13)

SWAPF STACKW,F SWAPF STATUS,W MOVWF STACKS BCF INTCON,T0IF BTFSC LED GOTO LOWPULSE HIGHPULSE: COMF PWMDESIRED,W MOVWF PWMHELP ADDWF PWMMAX,F BTFSS STATUS,C GOTO HIGHIMPINT HIGHIMPSHRT: MOVF PWMMAX,W ADDWF PCL,F BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BSF LED BCF LED INCF COUNTER,F COMF PWMHELP,W ADDLW PWMADJUSTVAL+5 MOVWF TMR0 GOTO LOWIMPINT2 HIGHIMPINT: ADDLW PWMADJUSTVAL MOVWF TMR0

(14)

HIGHIMPINT2: BSF LED INCF COUNTER,F MOVLW PWMMAXVAL-1 MOVWF PWMMAX SWAPF STACKS,W MOVWF STATUS SWAPF STACKW,W RETFIE ;**************************** LOWPULSE: COMF PWMHELP,W ADDWF PWMMAX,F BTFSS STATUS,C GOTO LOWIMPINT LOWIMPSHRT: MOVF PWMMAX,W ADDWF PCL,F BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BCF LED BSF LED COMF PWMDESIRED,W MOVWF PWMHELP ADDLW PWMADJUSTVAL+5 MOVWF TMR0 GOTO HIGHIMPINT2

(15)

LOWIMPINT: ADDLW PWMADJUSTVAL MOVWF TMR0 LOWIMPINT2: BCF LED MOVLW PWMMAXVAL MOVWF PWMMAX SWAPF STACKS,W MOVWF STATUS SWAPF STACKW,W RETFIE ;********************************************************************* ; inicio do programa propriamente

;********************************************************************* power_on: ;ajustes iniciais

clrf TMR0 CLRF PWMDESIRED BCF LED MOVLW PWMMAXVAL MOVWF PWMMAX ;******************************************************************* ; Configuração do PIC ;******************************************************************* BANK1 ; ajusta oscilador interno para 4MHz

CALL 3FFh MOVWF OSCCAL BANK0

CLRF GPIO MOVLW 07h

MOVWF CMCON ; desliga comparadores analógicos BANK1

CLRF ANSEL ;todos I/Os digitais MOVLW 1Fh

MOVWF TRISIO ;configura as saidas e entradas MOVLW 16h

MOVWF WPU ;configura os resitores de pull-up

MOVLW B'00000000' ; ajusta o OPTION_REG, TMR0 com divisor 1:2 MOVWF OPTION_REG ; habilita os pull-up

MOVLW B'10100000' ;ajusta o INTCON

MOVWF INTCON ;liga interrup do TMR0 e liga pull-ups BANK0

;**************************************** Idle:

(16)

clrwdt btfss COUNTER,07h goto Idle bcf COUNTER,07h ;********************** ;Controle do PWM ;********************** MOVLW .0

MOVWF PWMDESIRED ;valor inicial do PWM MOVWF MIN ;valor minimo do pwm MOVLW .250 ;valor maximo do pwm MOVWF MAX CONTROLE: clrwdt ;****************** ;Checa o botao 1: ;****************** BTFSS BT1 GOTO AUMENTAR ;****************** ;Checa o botao 2: ;****************** BTFSS BT2 GOTO DIMINUIR goto CONTROLE ;****************** ;****************************************************************** AUMENTAR:

MOVF MAX,W ; verifica se o valor de “pwmdesired” ja está no máximo XORWF PWMDESIRED,W

BTFSC STATUS,Z

GOTO CONTROLE ; se pwmdesired=MAX volta para CONTROLE INCF PWMDESIRED,1 ; caso contrario, incrementa a variavel pwmdesired CALL DELAY GOTO CONTROLE ;****************************************************************** ;****************************************************************** DIMINUIR: MOVF MIN,W XORWF PWMDESIRED,W BTFSC STATUS,Z GOTO CONTROLE DECF PWMDESIRED,1 CALL DELAY GOTO CONTROLE ;****************************************************************** ;************************* ; Rotina de delay ;************************* DELAY:

(17)

movlw .30 movwf FILTRO2 DL1: clrwdt movlw .255 movwf FILTRO1 DL2: clrwdt NOP DECFSZ FILTRO1,F GOTO DL2 DECFSZ FILTRO2,F GOTO DL1 RETURN ;************************ END

Referências

Documentos relacionados

• Pressione o botão AUTO/SET para ajustar automaticamente a imagem do monitor para a configuração ideal. Se os resultados não forem satisfatórios, diminua as listras ou as

Conforme argumentado por Snow &amp; Hambrick (1980), o detalhamento das estratégias através de suas dimensões componentes é uma forma de superar as &#34;barreiras de

Ainda segundo Fortuna (2013) o mercado de ações é dividido em dois segmentos, sendo eles, o mercado primário onde as ações são comercializadas pela primeira vez após

“Face à ausência do pedido de emissão do alvará que titula a aprovação do projeto de licenciamento das obras de alteração destinadas à instalação de estabelecimento

OBSERVAÇÃO: Selecione a face e a imagem que serão definidas destacando Frente em cores (tons de cinza), Frente em preto-e-branco, Verso em cores (tons de cinza) ou Verso

Anthony, líderes do movimento sufragista, mulheres brancas de classe média alta, apontavam como limites das vidas das mulheres a domesticidade e a falta de oportunidades

Estabelecendo urn espa~o de mais 60 anos, procedemos a analise das mesmas unidades no Grande Dicionario ou Tesouro da Lingua Portuguesa, de Frei Domingos Vieira, de

Comércio Internacional, Bilateral com Portugal e Oportunidades Apoio à Internacionalização do GBES: Unidade Internacional