Baixe o app para aproveitar ainda mais
Prévia do material em texto
IESB - Instituto de Educação Superior de Brasília Engenharia de Computação e Eng. de Telecomunicações Laboratório de Aplicações de Microcontroladores e Microprocessadores Experiência 01 Linguagem assembly do PIC e ambiente MPLAB 1) Objetivo: Familiarizar os alunos com a linguagem assembly do microcontrolador PIC da Microchip. Mostrar os recursos disponíveis na ferramenta de desenvolvimento MPLAB. 2) Aspectos teóricos: 2.1. MPLAB: O MPLAB é um ambiente IDE (Integrated Development Environment), ou seja, um conjunto de ferramentas para desenvolvimento de aplicações para os microcontroladores PIC da Microchip. Ele integra editor de texto, compilador, simulador, gerenciador de projetos e gravador para os dispositivos. É gratuito e pode ser obtido no site da Microchip: www.microchip.com . O programa pode ser elaborado em assembly ou em C, sendo depois compilado quando é gerado um arquivo no formato Intel hexadecimal (extensão .HEX). Esse arquivo contém o código de máquina a ser gravado no microcontrolador. Necessita de um sistema operacional compatível com Windows 9x, NT, 2000 ou XP. 2.2. Registradores do PIC: Para desenvolvimento de aplicativos, o microcontrolador PIC16F628A, que será utilizado durante o curso, possui um único registrador acessível dentro de sua CPU, o registrador W (work register). Assim, algumas operações, como uso de constantes ou transferência de valores entre registradores, só poderão ser realizadas por intermédio desse registrador W. Os demais registradores do PIC são definidos dentro de sua memória RAM. Dessa forma, o PIC irá reservar uma parte dessa memória (endereços iniciais) para seu uso e nela estarão contidos os outros registradores necessários ao funcionamento do sistema. Esses registradores “especiais” são chamados de SFRs (Special Function Register) e indicam ao PIC como ele deve operar. Os programas desenvolvidos também podem definir seus próprios registradores, ou variáveis na memória RAM, desde que não utilizem a região reservada. Essa arquitetura permite que, tanto o acesso aos registradores especiais do PIC (que ocupam uma região reservada da memória RAM), quanto o acesso aos registradores definidos no programa, sejam feitos da mesma forma, utilizando as mesmas instruções. 2.3. Diretivas de compilação: São comandos colocados dentro do programa assembly para indicar ao compilador a execução de alguma tarefa ou atribuição. Esses comandos não fazem parte do conjunto de instruções do PIC e servem para auxiliar a programação e/ou tornar o entendimento do código mais fácil. Dentre essas diretivas destacamos: - ORG: indica ao compilador um endereço de memória onde o programa deverá ser colocado. - EQU: utilizada nas atribuições, ou seja, serve para fazer associações entre nomes e endereços de memória ou constantes numéricas. - LABEL: são nomes colocados dentro do programa que depois serão substituídos por endereços ou valores previamente definidos. Deve ser colocado sempre na primeira coluna da linha onde é definido. - END: indica ao compilador o final do programa assembly e que a compilação deve ser encerrada. - INCLUDE: serve para inserir um arquivo dentro daquele que está sendo compilado, em tempo de compilação. Em geral, esse arquivo contém definições que serão utilizadas no programa sendo compilado. - DEFINE: da mesma forma que EQU, serve para efetuar atribuições no programa para facilitar sua compreensão e futuras alterações http://www.microchip.com 3) Aspectos práticos: 3.1. Desenvolva um programa que coloque o valor 3AH na posição de memória 25H, o valor 45 na posição 26H e transfira o valor contido em 27H para 30H. O programa deve ser salvo com a extensão .ASM. 3.2. Altere o programa anterior para que o conteúdo das posições 25H e 30H sejam somados e o resultado colocado na posição 28H. Se a soma exceder a capacidade do registrador, coloque o valor 1 na posição 31H e 0, caso contrário. Compile o programa desenvolvido. 3.3. Faça uma operação NAND da constante 67H com um valor contido no endereço 2AH de memória. Salve o resultado na posição 2BH. Pegue novamente o valor contido em 2AH e efetue uma operação AND com o resultado anterior salvo em 2BH, alterando essa última posição de memória. Nesse último resultado deve ser feito agora uma operação OR novamente com a constante 67H e, em seguida, uma operação AND também com a constante 67H, com o resultado final salvo em 2BH. Compile e simule o programa escrito. Verifique que o resultado final é sempre igual ao da constante 67H, independente do valor contido em 2AH. 3.4. Faça um programa que zere os bits D7, D5 e D4, coloque em 1 os bits D0, D3 e D6, e inverta os bits D1 e D2 de um valor contido na posição 20H. O resultado final dessas operações deve ser testado para ver se é igual a 49H. Caso seja, a posição 25H deverá receber o valor 0. Se não, deverá ser colocado FFH nessa posição. Teste (simule) seu programa com os valores 27H e 92H na posição 20H. 3.5. Crie um programa que verifique se a posição de memória 25H possui um valor diferente de 0. Se isso for verdade, some o conteúdo dessa posição com a constante 37 e salve o resultado na posição 26H. Caso contrário, zere o conteúdo da posição 26H 3.6. Elabore um programa que verifique se a posição de memória 30H possui o valor 1EH. Se isso for verdade, some o conteúdo dessa posição com o conteúdo da posição 31H e salve o resultado na posição 32H. Caso contrário, subtraia o conteúdo dessa posição do conteúdo da posição 31H, salvando o resultado em 31H. 3.7. Escreva um código que avalie o seguinte polinômio: Y(X) = 11X + K, com K sendo os dois últimos dígitos de sua matrícula (em decimal). Antes efetuar o cálculo, garanta que o resultado está na faixa de valores possíveis para Y (considere X maior ou igual a 0). Teste (simule) seu programa com os valores 10 e 32 para X. 3.8. Dado um valor contido na posição de memória DADO e uma posição chamada FLAGS, na qual o bit 7 indica a paridade ímpar de DADO, faça um programa que calcule essa paridade sem alterar o valor de DADO. Teste seu programa para os valores 87H e E3H. Dica: utilize a instrução RLF para poder testar todos os bits da posição pedida em um laço de repetição.
Compartilhar