310 likes | 418 Views
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.
E N D
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 Clique três vezes: A, U e C.
MPLAB • Desenvolvendo o primeiro projeto.
MPLAB • Desenvolvendo o primeiro projeto. • Construindo o projeto. • Project Build All. Pode ser carregado em qualquer parte da memória disponível.
MPLAB • Adicione código após main ; remaining code goes here • Monitorar o conteúdo dos registradores. • View Special Function Registers.
MPLAB • Selecionar simulador. • Debugger MPLAB SIM • Executar. • Debugger Run. • Executar passo a passo. • Debugger Step over.
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,...)