PIC16F877A - Parte IV Jadsonlee da Silva Sá Jadsonlee.sa@univasf.edu.br www.univasf.edu.br/~jadsonlee.sa
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
MPLAB MPLAB_User_Guide_51519c.pdf. Disponível no site da disciplina. Tutorial básico na pg. 41.
MPLAB Desenvolvendo o primeiro projeto. ProjectProject Wizard.
MPLAB Desenvolvendo o primeiro projeto. Selecione um dispositivo.
MPLAB Desenvolvendo o primeiro projeto. Selecione as ferramentas de linguagem.
MPLAB Desenvolvendo o primeiro projeto. Crie um projeto.
MPLAB Desenvolvendo o primeiro projeto. Adicione arquivos ao projeto. Arquivo assembly (.asm) . C:\Arquivos de programas\Microchip\MPASM Suite\Template\Code\16F877ATEMP.asm
MPLAB Desenvolvendo o primeiro projeto.
MPLAB Desenvolvendo o primeiro projeto. Construindo o projeto. Project Build All.
MPLAB Adicione código após Monitorar o conteúdo dos registradores. main ; remaining code goes here Monitorar o conteúdo dos registradores. View Special Function Registers.
MPLAB Selecionar simulador. Executar. Executar passo a passo. Debugger MPLAB SIM Executar. Debugger Run. Executar passo a passo. Debugger Step over.
MPLAB – Assembly Compilador MPASM
Diretivas - MPASM
Diretivas - 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,...
Diretivas - 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.
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.
Diretivas - Template 16F877A Define os valores dos bits do registrador configuration_word. Declara o início de uma seção de dados não inicializados compartilhados – O endereço da RAM (GPR) pode ser especificado. Definição de variáveis. Semelhante a UDATA, mas pode ser utilizada somente em partes com memória acessível em vários bancos. Reserva memória.
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.
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.
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.
Diretivas - 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.
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.
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
Diretivas - Template 16F877A Memória de dados - GPR.
Diretivas - Template 16F877A Outro template. Página 0 – CLRF PCLATH entre NOP e GOTO. PCLATH 3:4?
Diretivas - Template 16F877A Outro template. Qual banco da RAM? BCF STATUS, RP0 BCF STATUS, RP1
Diretivas - Template 16F877A Exemplos.
Diretivas - Template 16F877A Exemplos. View Special Function Registers e File Registers
Diretivas - Template 16F877A Exercícios. Utilizando o código do exemplo anterior, acrescente um código que zera as posições de memória 20h – 2Fh. Faça um programa que implemente uma progressão aritmética crescente com razão 2. Faça um programa que implemente uma progressão geométrica crescente com razão 2. 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,...)