AULA 7 - UNEMAT Sinop

Propaganda
7. Técnicas de Programação
Professor: Vlademir de Oliveira
Disciplina: Microcontroladores e DSP
Técnicas de Programação
7.1 Fluxograma
Definições
Início/Fim
Sub-rotinas
Tomada de
decisão
Terminação
Técnicas de Programaçã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.
Técnicas de Programação
7.1 Fluxograma
Ex.1: Testa um botão e acende um LED no display de 7-segmentos.
Início
Testa
Botão
Botão
Press?
Sim
Obs.: O fluxograma pode também
incluir um bloco que representa
as configurações iniciais.
Não
Configurações
Iniciais: RAM,
Portas, Timers, etc
Apaga
LED
Acende
LED
Técnicas de Programação
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.
Técnicas de Programação
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
Press?
Sim
Escreve 2
no
display
Não
Apaga
display
Obs.: Quando o botão estiver
pressionado o programa chama
uma sub-rotina para escrever
números no display.
Técnicas de Programação
7.1 Fluxograma
Ex.3: A cada botão pressionado mostra um número diferente no display DS1.
Início
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.
Testa
Botão
Botão1
Press?
Não
Botão2
Press?
Não
Botão3
Press?
Não
Botão4
Press?
Sim
Sim
Sim
Sim
Escreve 1
no
display
Escreve 2
no
display
Escreve 3
no
display
Escreve 4
no
display
Técnicas de Programação
Não
Apaga
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
Press?
Não
Botão2
Press?
Sim
Sim
Aciona DS1
Escreve 0
Aciona DS2
Escreve 0
Não
Desliga
DS1 e DS2
Apaga
PORTD
Técnicas de Programação
Obs.: Existe mais de uma forma de
implementar esse programa.
7.2 Princípios Básicos
Atribuição de valores
Ex.:
MOVLW .100
MOVWF PORTA ; atribuição usando W
CLRF
BSF
BSF
BSF
PORTA
PORTA, 6
PORTA, 5
PORTA, 2
;atribuição sem alterar o conteúdo de W
Nas duas formas PORTA=100d.
Técnicas de Programação
7.2 Princípios Básicos
Atribuição de valores
Ex.:
TESTE
EQU
0x20; declara uma variável
...
MOVLW 0x64
MOVWF TESTE ; atribuição de valor para a variável declarada
Técnicas de Programação
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
; (TEMP) → (W)
XORWF PORTB, W
; compara usando o XORWF
BTFSC
; testa a flag de zero ‘Z’
STATUS, Z
XOR
A
B
Y
0
0
0
0
1
1
1
0
1
1
1
0
Se Z =1, todos os bits são iguais
Técnicas de Programação
7.2 Princípios Básicos
Comparação de valores
Ex.2: (Usando SUBWF)
VAR1
VAR2
EQU
EQU
...
MOVF
SUBWF
0x20
0x21
VAR1, W
VAR2, W
; (VAR1) → (W)
; ( f ) – (W) → (W)
Operação
C
Z
W=F
1
1
W<F
1
0
Se C = 1, o resultado foi maior que 0;
W>F
0
0
Se C = 0, o resultado foi menor que 0;
Se Z = 1, os valores subtraídos são iguais;
Técnicas de Programação
7.2 Princípios Básicos
Comparação de valores
Ex.3: (Usando ADDLW)
MOVF
ADDLW
BTFSS
GOTO
BTFSS
GOTO
GOTO
COUNT, W
.106
STATUS, C
MENOR
STATUS, Z
MAIOR
IGUAL
;
;
;
;
;
;
(COUNT) → (W)
compara COUNT com 0x6A
testa se houve estouro
MENOR → tratamento para COUNT < (256-106)
testa se é igual, se COUNT = (256-106) skip
se não é igual então COUNT > (256-106)
Obs: Usado para testar se COUNT é menor ou maior ou igual a 150; Na técnica
soma-se 256-150=106 ao contador.
Técnicas de Programação
7.2 Princípios Básicos
Comparação de valores
Ex.3: (Usando ADDLW)
Início
Compara COUNT:
W = COUNT + 106
C =1?
Sim
Z = 1?
Não
GOTO
MENOR
Não
Sim
GOTO
IGUAL
GOTO
MAIOR
3
1
2
Técnicas de Programação
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.
Técnicas de Programação
Download