Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação –...

30
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV PIC16F877A - Parte IV Jadsonlee da Silva Sá [email protected] www.univasf.edu.br/~jadsonlee. sa

Transcript of Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação –...

Page 1: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

PIC16F877A - Parte IVPIC16F877A - Parte IV

Jadsonlee da Silva Sá

[email protected]/~jadsonlee.sa

Page 2: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Ambiente de Desenvolvimento Ambiente de Desenvolvimento Integrado - IDEIntegrado - 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

Page 3: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB

MPLAB_User_Guide_51519c.pdf.

– Disponível no site da disciplina.

– Tutorial básico na pg. 41.

Page 4: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB Desenvolvendo o primeiro projeto.

– ProjectProject Wizard.

Page 5: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB Desenvolvendo o primeiro projeto.

– Selecione um dispositivo.

Page 6: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB Desenvolvendo o primeiro projeto.

– Selecione as ferramentas de linguagem.

Page 7: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB Desenvolvendo o primeiro projeto.

– Crie um projeto.

Page 8: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB Desenvolvendo o primeiro projeto.

– Adicione arquivos ao projeto.

• Arquivo assembly (.asm) .

– C:\Arquivos de programas\Microchip\MPASM Suite\Template\Code\16F877ATEMP.asm

Page 9: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB Desenvolvendo o primeiro projeto.

Page 10: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB Desenvolvendo o primeiro projeto.

– Construindo o projeto.

• Project Build All.

Page 11: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB

Adicione código após

main; remaining code goes here

Monitorar o conteúdo dos registradores.

– View Special Function Registers.

Page 12: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLABMPLAB

Selecionar simulador.

– Debugger MPLAB SIM

Executar.

– Debugger Run.

Executar passo a passo.

– Debugger Step over.

Page 13: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

MPLAB – AssemblyMPLAB – AssemblyCompilador MPASMCompilador MPASM

Page 14: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - MPASMDiretivas - MPASM

Page 15: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - MPASMDiretivas - MPASM

Comandos que controlam o compilador assembly.

Existem 6 tipos de diretivas no MPASM:

– Controle Controlam como o código é montado.

• Ex.: define, end, equ, org, constant,...

– Condicional assembly Permitem que seções de códigos sejam montados condicionalmente.

• 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,...

Page 16: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - MPASMDiretivas - MPASM

Listing Permite a especificação de títulos e paginação.

– Ex.: List, page, title,...

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.: code, udata, udata_shr, udata_acs,...

www.microchip.com DS33014K.

Page 17: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - 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.

Page 18: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - 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.

Page 19: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - Template 16F877A

Definição de variáveis.

Declara o início de uma seção de dados não inicializados – Códigos relocáveis.

Page 20: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - 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.

Page 21: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - 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.

Page 22: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - Template 16F877A

Programa principal e seleção do banco da RAM.

Declara o início do programa principal.

.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.

Page 23: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - Template 16F877ACódigo de Interrupção.

Salva W em w_temp, STATUS em status_temp e PCLATH em pclath_temp

Restaura contexto.

GIE = 0, PC salvo na pilha e PC = 0004.

PC = TOS e GIE = 1.

Page 24: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - 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

Page 25: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - Template 16F877A

Memória de dados - GPR.

Page 26: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - Template 16F877A Outro template.

PCLATH 3:4? Página 0 – CLRF PCLATH entre NOP e GOTO.

Page 27: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - Template 16F877A

Outro template.

Qual banco da RAM?BCF STATUS, RP0BCF STATUS, RP1

Page 28: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - Template 16F877A Exemplos.

Page 29: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - Template 16F877A Exemplos.

View Special Function Registers e File Registers

Page 30: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br.

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Diretivas - Template 16F877ADiretivas - 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,...)