Buscar

AULA-09R00

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Microprocessadores
Aula 09:
Programação Assembly – Parte 2: Organização Programação Assembly – Parte 2: Organização 
da rotina e criação de tabela de dados.
Referência para a aula:
1 – Apostila: Instruções e Diretivas [Xerox].
Prof.: Edgar Campos Furtado 
edgar@ufsj.edu.br 
Sala: 217.2
ORGANIZAÇÃO DO CÓDIGO-FONTE 
5V
Considere o circuito a seguir. Caso o botão seja pressionado o LED
deve apagar. Do contrário, o LED deve permanecer ligado.
INÍCIO
2UFSJ – CAP
© Edgar C. Furtado
16F877
RD0
VSS
VDD
RB0
BOTÃO
Botão Pressionado � RB0 = 0 � LED APAGADO
Botão Livre � RB0 = 1 � LED LIGADO
LIGA LED DESLIGA LED
RB0 = 1?
NÃO
SIM
A criação de um código-fonte deve seguir padrões que facilitem a
análise e possível otimização. Diretrizes para elaboração do código-
fonte:
• Construa um FLUXOGRAMA de execução da rotina;
• ESTRUTURAR o código-fonte;
ORGANIZAÇÃO DO CÓDIGO-FONTE 
3UFSJ – CAP
© Edgar C. Furtado
• Comentar durante o processo de programação;
• Compor o arquivo código-fonte com caracteres em apenas uma
forma: MASIÚSCULO ou MINÚSCULO;
• ESQUECER que existe acentuação (exceto para comentários!);
• Usar TABULAÇÃO.
ORGANIZAÇÃO DO CÓDIGO-FONTE 
4UFSJ – CAP
© Edgar C. Furtado
ORGANIZAÇÃO DO CÓDIGO-FONTE
01) Cabeçalho: Dados relativos ao projeto do código-fonte.
; NOME DO PROJETO
; CLIENTE
; PROGRAMADORES
; VERSÃO
; DESCRIÇÃO DO ARQUIVO
Exemplo informações 
fornecidas no cabeçalho!
Indica início do comentário!
5UFSJ – CAP
© Edgar C. Furtado
Indica início do comentário!
ORGANIZAÇÃO DO CÓDIGO-FONTE
02) Arquivo de Definições e configuração do microcontrolador:
; -- ARQUIVO DE DEFINIÇÕES:
#INCLUDE <P16F877.INC> ; ARQUIVO DEFINIÇÕES PADRÕES
Arquivo de definições para o microcontrolador:
P16F877.INC
6UFSJ – CAP
© Edgar C. Furtado
P16F877.INC
Palavras-chave para:
• Definições dos registradores SFR;
• Definições dos bits dos registradores;
• Configuração dos bits;
ORGANIZAÇÃO DO CÓDIGO-FONTE
02) Arquivo de Definições e configuração do microcontrolador:
Existem duas formas de se especificar as atribuições. A primeira 
consiste em utilizar mnemônicos, os quais representam o estado do 
hardware. A segunda forma consiste em se escrever diretamente a 
palavra de configuração binária.
__CONFIG <ATRIBUIÇÕES> ; PALAVRA DE CONFIGURAÇÃO
7UFSJ – CAP
© Edgar C. Furtado
palavra de configuração binária.
A palavra de configuração consiste em um número binário de 14bits,
armazenado em um registrador que fica localizado após o final da memória
de programa. Esse registrador está acessível somente durante o processo de
gravação do PIC, e tem por finalidade armazenar a configuração interna do
hardware do mesmo.
ORGANIZAÇÃO DO CÓDIGO-FONTE
Escrevendo diretamente a palavra de configuração binária.
8UFSJ – CAP
© Edgar C. Furtado
ORGANIZAÇÃO DO CÓDIGO-FONTE 
9UFSJ – CAP
© Edgar C. Furtado
O microcontrolador pode reiniciar a operação caso seja detectado um nível de
tensão de alimentação inadequado.
ORGANIZAÇÃO DO CÓDIGO-FONTE 
O PWRTE é um contador digital que permite o início do processamento do
microcontrolador depois de transcorrido cerca de 72ms após terminal de reset
MCLR (terminal 1) se tornar nível lógico 1.
10UFSJ – CAP
© Edgar C. Furtado
Nesse caso o microcontrolador foi configurado com: reset por baixa de tensão
ativado, proteção do código fonte desligada, contador de tempo após reset
por queda/baixa de tensão de alimentação ativado, contador de tempo do
Watch-Dog-Time desligado, oscilador externo via cristal ou ressonador com
ORGANIZAÇÃO DO CÓDIGO-FONTE 
11UFSJ – CAP
© Edgar C. Furtado
Watch-Dog-Time desligado, oscilador externo via cristal ou ressonador com
frequência entre 200kHz e 4MHz.
Os mnemônicos de configuração devem obrigatoriamente ser separados por
&;
Em termos de palavra de configuração binário a configuração acima é
equivalente a:
__CONFIG B'11111111110001'
Formação da palavra de configuração binária:
ORGANIZAÇÃO DO CÓDIGO-FONTE 
12UFSJ – CAP
© Edgar C. Furtado
ORGANIZAÇÃO DO CÓDIGO-FONTE 
03) Definindo Variáveis e macros:
Como visto na AULA 08 a declaração das variáveis pode ser feita utilizando-
se EQU e/ou CBLOCK-ENDC. Além disso, as diretivas #DEFINE e MACRO-ENDM
podem ser utilizadas
13UFSJ – CAP
© Edgar C. Furtado
Associa um conjunto de instruções a uma palavra!
Associa uma instrução a uma palavra!
ORGANIZAÇÃO DO CÓDIGO-FONTE 
Exemplo com várias formas de declaração de variáveis e macros:
14UFSJ – CAP
© Edgar C. Furtado
ORGANIZAÇÃO DO CÓDIGO-FONTE 
04) Vetor de RESET: Especifica o endereço para o qual a execução
do código é desviada toda vez que um reinício ocorrer. O reset pode
acontecer de três formas:
• Quando o microcontrolador é ligado;
• Aplicando-se nível lógico 0 ao terminal 1 (reset externo);
• Estouro do contador watchdog;
15UFSJ – CAP
© Edgar C. Furtado
• Nível baixo de tensão de alimentação (Brown Out).
DIRETIVA ORG: obriga o montador a colocar a primeira instrução após a diretiva no endereço da
memória de programa especificado pelo argumento da diretiva, ou seja, no exemplo acima 0x000.
Aponta para o início da código principal
ORGANIZAÇÃO DO CÓDIGO-FONTE 
05) Vetor de Interrupção: É necessário definir um vetor que aponta
para a parte da memória de programa que irá armazenar as
instruções relativas às interrupções. Esse endereço é padrão para o
microcontrolador PIC, sendo definido como ORG 0x004.
16UFSJ – CAP
© Edgar C. Furtado
Retorno da interrupção
06) Subrotinas: Espaço para as subrotinas.
ORGANIZAÇÃO DO CÓDIGO-FONTE 
07) Código Principal: Espaço para o código principal, que pode ser
dividido em duas partes:
• Configuração dos registradores especiais: configuram-se os
registradores especiais de interesse, tais como INTCON,
OPTION_REG, TRISX, etc;
• Rotina principal.
17UFSJ – CAP
© Edgar C. Furtado
Para configuração dos registradores é necessário conhecimento das 
funções do microcontrolador:
• Temporizadores;
• Módulo de captura, comparação e geração PWM;
• Comparadores analógicos;
• Comunicação serial;
• Saída analógica;
; -- ROTINA PRINCIPAL:
...
; -- FIM DO PROGRAMA:
END ;OBRIGATÓRIO
08) FIM DO CÓDIGO PRINCIPAL: Utiliza-se a diretiva END para
indicar ao motador o fim do código Assembly.
ORGANIZAÇÃO DO CÓDIGO-FONTE 
18UFSJ – CAP
© Edgar C. Furtado
END ;OBRIGATÓRIO
; UFSJ/CAP
; MICROPROCESSADORES
; VERSAO 1.0
; SISTEMA PARA ACIOINAMENTO DE UM LED 
; POR MEIO DO COMANDO DE UMA BOTOEIRA
; -- ARQUIVO DE DEFINIÇÕES:
#INCLUDE <P16F877.INC>
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON 
& _WDT_OFF & _LVP_OFF & _XT_OSC
; -- PAGINAÇÃO DE MEMÓRIA:
#DEFINE BANK0 BCF STATUS,RPO
; -- INÍCIO DO PROGRAMA:
INICIO
CLRF PORTB
CLRF PORTD
BANK1
MOVLW B’00000100’
MOVWF TRISB
MOVLW B’00000001’
MOVWF TRISD
MOVLW B'00000111'
MOVWF ADCON1
CLRF INTCON
BANK0
; -- ROTINA PRINCIPAL:
MAIN
19
#DEFINE BANK0 BCF STATUS,RPO
#DEFINE BANK1 BSF STATUS,RPO
; -- DEFINIÇÃO DE FLAGS:
#DEFINE BOTAO PORTB,0
#DEFINE LED PORTD,0
; -- VETOR DE RESET:
ORG 0X00
GOTO INICIO
; -- INÍCIO INTERRUPÇÃO:
ORG 0X04
RETFIE
MAIN
BTFSC BOTAO
GOTO BOTAO_LIB
GOTO BOTAO_PRES
BOTAO_LIB
BCF LED
GOTO MAIN
BOTAO_PRES
BSF LED
GOTO MAIN
; -- FIM DO PROGRAMA:
END
Quando se necessita armazenar um conjunto de valores constantes,
que podem ser acessados por meio de um índice, utiliza-se de
tabelas;
A tabela consiste de uma subrotina, que é chamada por meio da
instrução CALL. Na subrotina utiliza-se os registradores PCL e PCLATH
para acessar o valor de interesse da tabela;
CRIAÇÃO DE TABELA DE DADOS 
20UFSJ – CAP
© Edgar C. Furtado
para acessar o valor de interesse da tabela;
O valor de interesse é extraído da tabela, por meio da instrução
RETLW;
O registrador PCL está presente em todos os bancos de registradores,
ou seja, não é necessário mudar de banco para alterar o conteúdo do
mesmo.
CRIAÇÃO DE TABELAS DE DADOS
Uso do registrador PCL para saltar instruções.
21UFSJ – CAP
© Edgar C. Furtado
CRIAÇÃO DE TABELAS DE DADOS
A utilização do PCL deve ser acompanhada de alguns cuidados:
� Verificarse a adição do PCL resulta em um índice válido para
a tabela, lembrando que PCL é um registrador de 8bis;
� Garantir que a tabela não esteja em uma área de transição
do PCL.
22UFSJ – CAP
© Edgar C. Furtado
No primeiro caso, deve-se validar o índice da tabela
comparando-o com o número de valores armazenados na
tabela menos um. Se o Carry for 1 significa que o índice
repassado excede o número de elementos da tabela.
CRIAÇÃO DE TABELAS DE DADOS
Exemplo de uma sub-rotina tabela, onde se faz a validação do índice
dos elementos. Caso o índice seja maior que o número de elementos
menos um, deve-se retornar da subrotina sem associar nenhum valor.
23UFSJ – CAP
© Edgar C. Furtado
CRIAÇÃO DE TABELAS DE DADOS
No segundo caso deve-se garantir que os dados armazenados
não estejam na área de transição do PCL, ou seja,
24UFSJ – CAP
© Edgar C. Furtado
Memória de Programa
(FLASH):
Local onde ser armazena as
instruções.
Contador de 
Programa
Registrador 
SRAM
8 níveis de 
Pilhas
Memória FLASH do PIC
25UFSJ – CAP
© Edgar C. Furtado
Word: 14 bits
Tamanho: 8096 x 14 bits
Endereçamento a partir do PC 
(program Counter).
CRIAÇÃO DE TABELAS DE DADOS
Solução?
ORG 0X500
BCF PCLATH,4
BSF PCLATH,3
CALL TAB_1
Configura a página da 
memória de programa 
que conterá a tabela e 
realiza o chamado da 
tabela.
26UFSJ – CAP
© Edgar C. Furtado
...
ORG 0X900
TAB_1
....
RETURN
Tabela montada a partir 
do endereço 0X900 na 
memória de programa

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes