Aula07 - Univasf

Download Report

Transcript Aula07 - Univasf

PIC16F877A - Parte IV
Jadsonlee da Silva Sá
[email protected]
www.univasf.edu.br/~jadsonlee.sa
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Ambiente de Desenvolvimento
Integrado - IDE
 Possibilitam:
–
Editar, compilar, simular e depurar programas.
 IDEs PIC.
–
MPLAB v8.56.
•
–
Linguagem assembly e C.
CCS.
•
Linguagem C.
 Disponíveis em www.microchip.com
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 MPLAB_User_Guide_51519c.pdf.
–
Disponível no site da disciplina.
–
Tutorial básico na pg. 41.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Desenvolvendo o primeiro projeto.
–
ProjectProject Wizard.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Desenvolvendo o primeiro projeto.
–
Selecione um dispositivo.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Desenvolvendo o primeiro projeto.
–
Selecione as ferramentas de linguagem.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Desenvolvendo o primeiro projeto.
–
Crie um projeto.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Desenvolvendo o primeiro projeto.
–
Adicione arquivos ao projeto.
•
Arquivo assembly (.asm) .
–
C:\Arquivos
de
programas\Microchip\MPASM
Suite\Template\Code\16F877ATEMP.asm
Clique três
vezes: A, U e C.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Desenvolvendo o primeiro projeto.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Desenvolvendo o primeiro projeto.
–
Construindo o projeto.
•
Project  Build All.
Pode ser carregado em
qualquer parte da
memória disponível.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Adicione código após
main
; remaining code goes here
 Monitorar o conteúdo dos registradores.
–
View  Special Function Registers.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB
 Selecionar simulador.
–
Debugger  MPLAB SIM
 Executar.
–
Debugger  Run.
 Executar passo a passo.
–
Debugger  Step over.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
MPLAB – Assembly
Compilador MPASM
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - MPASM
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - MPASM

Comandos que controlam o compilador assembly.

Existem 6 tipos de diretivas no MPASM:
–
Controle  Controlam como o código é montado.
•
–
Condicional assembly  Permitem que seções de códigos
sejam montados condicionalmente.
•
–
Ex.: define, end, equ, org, constant,...
Ifdef, ifndef, else, endif,...
Dados  Controlam a alocação da memória e fornecem o
modo de se referir a itens de dados simbolicamente.
•
Ex.: __config, __maxram, data, res,...
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - MPASM

Listing  Permite a especificação de títulos e
paginação.
–

Macro  Controlam a execução e alocação de dados
dentro das definições do corpo de uma macro.
–

Ex.: macro, local, endm,...
Arquivo objeto  Utilizadas para criação desses
arquivos.
–

Ex.: List, page, title,...
Ex.: code, udata, udata_shr, udata_acs,...
www.microchip.com  DS33014K.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A
Define o processador utilizado.
Inclui variáveis específicas do processador – Definição de
registradores.
Define uma constante.
Define
a
quantidade
máxima de RAM.
RAM não implementada.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A
Define os valores dos bits do registrador configuration_word.
Definição de variáveis.
Declara o início de uma seção de
dados
não
inicializados
compartilhados – O endereço da
RAM (GPR) pode ser especificado.
Reserva memória.
Semelhante a UDATA, mas pode
ser utilizada somente em partes
com memória acessível em vários
bancos.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A
Definição de variáveis.
Declara o início de uma seção de
dados não inicializados – Códigos
relocáveis.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A
Definição de variáveis.
Declara o início de uma seção
de
dados
overlaid
não
inicializados – Código relocável.
É possível declarar múltiplas variáveis temporárias na
mesma locação de memória.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A
Código reset e seleção da página da memória de programa.
Declara o início de uma seção do
código do programa.
Faz com que o linker gere o código
de seleção da página, para setar os
bits da página (bits 3 e 4 de
PCLATH), para a página contendo o
rótulo designado.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A
Programa principal e seleção do banco da RAM.
Declara o
principal.
início
do
programa
Gera o código para setar/zerar os bits
de
. seleção do banco RP0 e RP1 de
STATUS dependendo do valor de count.
Vá para linha atual.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A
Código de Interrupção.
GIE = 0, PC salvo na pilha e PC = 0004.
Salva W em w_temp, STATUS em
status_temp e PCLATH em pclath_temp
Restaura contexto.
PC = TOS e GIE = 1.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A

Memória de programa.
Qual página da memória de dados e qual
banco da RAM estão sendo utilizados?
Página 3  1800-1FFF
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A

Memória de dados - GPR.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A

Outro template.
PCLATH 3:4?
Página 0 – CLRF PCLATH
entre NOP e GOTO.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A

Outro template.
Qual banco da RAM?
BCF STATUS, RP0
BCF STATUS, RP1
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A

Exemplos.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A

Exemplos.
View  Special Function
Registers e File Registers
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Diretivas - Template 16F877A

Exercícios.
1.
Utilizando o código do exemplo anterior, acrescente
um código que zera as posições de memória 20h – 2Fh.
2. Faça um programa que implemente uma progressão
aritmética crescente com razão 2.
3. Faça um programa que implemente uma progressão
geométrica crescente com razão 2.
4. Faça uma ULA que realiza todas as possíveis
operações disponíveis no conjunto de instruções do
PIC (Soma, subtração, and, xor, rotação,...)
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP