7. Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP
7.1 Fluxograma Definições Início/Fim Sub-rotinas Tomada de decisão Terminação
7.1 Fluxograma Exercícios Ex.1: Testa um botão e acende um LED no display de 7-segmentos. Ex.2: Testa um botão e mostra o número 2 no display de 7-segmentos. Ex.3: A cada botão pressionado mostra um número diferente no display DS1. Ex.4: Os botões acionando displays diferentes, DS1, DS2,... A seguir a resolução dos exercícios.
7.1 Fluxograma Ex.1: Testa um botão e acende um LED no display de 7-segmentos. Início Testa Botão Obs.: O fluxograma pode também incluir um bloco que representa as configurações iniciais. Botão Acende LED Apaga LED Configurações Iniciais: RAM, Portas, Timers, etc
7.1 Fluxograma Sub-rotinas São empregadas quando uma rotina será usada várias vezes em um programa, como as funções das linguagens de alto nível. Ex.:... CALL Sub-rotina1 MOVWF PORTD... Sub-rotina1... RETURN Obs.: A sub-rotina pode passar um valor e retornar um valor.
7.1 Fluxograma Ex.2: Testa um botão e mostra o número 2 no display de 7-segmentos. Início Testa Botão Botão Escreve 2 no display Apaga display Obs.: Quando o botão estiver pressionado o programa chama uma sub-rotina para escrever números no display.
7.1 Fluxograma Ex.3: A cada botão pressionado mostra um número diferente no display DS1. Início Testa Botão Resolução: Nesse programa os botões são usados para mostrar números em um dos displays de uma forma bem simples. Para esse exemplo, os botões acionarão apenas 4 números diferentes no display. Botão1 Botão2 Botão3 Botão4 Apaga display Escreve 1 no display Escreve 2 no display Escreve 3 no display Escreve 4 no display
7.1 Fluxograma Ex.4: Os botões acionando displays diferentes, DS1, DS2,... Início Resolução: Nesse programa cada botão aciona um display, por exemplo, BT1 aciona DS1 e BT2 aciona DS2. Para esse exemplo BT1 faz aparecer o número 0 em DS1 e BT2 o número 0 em DS2. Testa Botão Botão1 Botão2 Desliga DS1 e DS2 Apaga PORTD Obs.: Existe mais de uma forma de implementar esse programa. Aciona DS1 Escreve 0 Aciona DS2 Escreve 0
7.2 Princípios Básicos Atribuição de valores Ex.: MOVLW.100 MOVWF PORTA ; atribuição usando W CLRF PORTA BSF PORTA, 6 BSF PORTA, 5 BSF PORTA, 2 ;atribuição sem alterar o conteúdo de W Nas duas formas PORTA=100d.
7.2 Princípios Básicos Atribuição de valores Ex.: TESTE EQU... MOVLW 0x64 MOVWF TESTE 0x20; declara uma variável ; atribuição de valor para a variável declarada
7.2 Princípios Básicos Comparação de valores Serão apresentados alguns métodos de comparação de registradores para uso no PIC. Ex.1: (Usando XORWF) MOVF TEMP, W XORWF PORTB, W BTFSC STATUS, Z XOR A B Y 0 0 0 0 1 1 1 0 1 1 1 0 ; (TEMP) (W) ; compara usando o XORWF ; testa a flag de zero Z Se Z =1, todos os bits são iguais
7.2 Princípios Básicos Comparação de valores Ex.2: (Usando SUBWF) VAR1 EQU 0x20 VAR2 EQU 0x21... MOVF VAR1, W SUBWF VAR2, W ; (VAR1) (W) ; ( f ) (W) (W) Operação C Z W = F 1 1 W < F 1 0 W > F 0 0 Se Z = 1, os valores subtraídos são iguais; Se C = 1, o resultado foi maior que 0; Se C = 0, o resultado foi menor que 0;
7.2 Princípios Básicos Comparação de valores Ex.3: (Usando ADDLW) MOVF COUNT, W ; (COUNT) (W) ADDLW.106 ; compara COUNT com 0x6A BTFSS STATUS, C ; testa se houve estouro GOTO MENOR ; MENOR tratamento para COUNT < (256-106) BTFSS STATUS, Z ; testa se é igual, se COUNT = (256-106) skip GOTO MAIOR ; se não é igual então COUNT > (256-106) GOTO IGUAL Obs: Usado para testar se COUNT é menor ou maior ou igual a 150; Na técnica soma-se 256-150=106 ao contador.
7.2 Princípios Básicos Comparação de valores Início Ex.3: (Usando ADDLW) Compara COUNT: W = COUNT + 106 C =1? Z = 1? GOTO IGUAL GOTO MENOR GOTO MAIOR 3 1 2
7.2 Princípios Básicos Ex.1: Escreva uma rotina que incrementa um contador quando o botão é pressionado e apresenta o resultado no display.