![]() |
Microcontroladores PIC on-line GRÁTIS! |
|
Indice |
![]() |
|||
|
|
Sistema de desenvolvimento | ||||||
|
|
Contacte-nos | ||||||
|
|||||||
|
CAPÍTULO 3 Conjunto de Instruções
Introdução
Transferência de dados Já dissemos que um
microcontrolador não é como qualquer outro circuito integrado. Quando saem
da cadeia de produção, a maioria dos circuitos integrados, estão prontos
para serem introduzidos nos dispositivos, o que não é o caso dos
microcontroladores. Para que um microcontrolador cumpra a sua tarefa, nós
temos que lhe dizer exactamente o que fazer, ou, por outras palavras, nós
temos que escrever o programa que o microcontrolador vai executar. Neste
capítulo iremos descrever as instruções que constituem o assembler, ou
seja, a linguagem de baixo nível para os microcontroladores PIC. Conjunto de Instruções da Família PIC16Cxx de MicrocontroladoresO conjunto completo
compreende 35 instruções e mostra-se na tabela que se segue. Uma razão
para este pequeno número de instruções resulta principalmente do facto de
estarmos a falar de um microcontrolador RISC cujas instruções foram
optimizadas tendo em vista a rapidez de funcionamento, simplicidade de
arquitectura e compacidade de código. O único inconveniente, é que o
programador tem que dominar a técnica “desconfortável” de fazer o programa
com apenas 35 instruções. Transferência de dadosA transferência de dados
num microcontrolador, ocorre entre o registo de trabalho (W) e um registo
‘f’ que representa um qualquer local de memória na RAM interna (quer se
trate de um registo especial ou de um registo de uso genérico). Lógicas e aritméticasDe todas as operações
aritméticas possíveis, os microcontroladores PIC, tal como a grande
maioria dos outros microcontroladores, apenas suportam a subtracção e a
adição. Os bits ou flags C, DC e Z, são afectados conforme o resultado da
adição ou da subtracção, com uma única excepção: uma vez que a subtracção
é executada como uma adição com um número negativo, a flag C (Carry),
comporta-se inversamente no que diz respeito à subtracção. Por outras
palavras, é posta a ‘1’ se a operação é possível e posta a ‘0’ se um
número maior tiver que ser subtraído de outro mais pequeno. Operações sobre bitsAs instruções BCF e BSF
põem a ‘0’ ou a ‘1’ qualquer bit de qualquer sítio da memória. Apesar de
parecer uma operação simples, ela é executada do seguinte modo, o CPU
primeiro lê o byte completo, altera o valor de um bit e, a seguir, escreve
o byte completo no mesmo sítio. Direcção de execução de um programaAs instruções GOTO, CALL
e RETURN são executadas do mesmo modo que em todos os outros
microcontroladores, a diferença é que a pilha é independente da RAM
interna e é limitada a oito níveis. A instrução ‘RETLW k’ é idêntica à
instrução RETURN, excepto que, ao regressar de um subprograma, é escrita
no registo W uma constante definida pelo operando da instrução. Esta
instrução, permite-nos implementar facilmente listagens (também chamadas
tabelas de lookup). A maior parte das vezes, usamo-las determinando a
posição do dado na nossa tabela adicionando-a ao endereço em que a tabela
começa e, então, é lido o dado nesse local (que está situado normalmente
na memória de programa).
Nós escrevemos a posição de um membro da nossa tabela no registo W e,
usando a instrução CALL, nós chamamos o subprograma que contém a tabela. A
primeira linha do subprograma ‘ADDWF PCL, f’, adiciona a posição na tabela
e que está escrita em W, ao endereço do início da tabela e que está no
registo PCL, assim, nós obtemos o endereço real do dado da tabela na
memória de programa. Quando regressamos do subprograma, nós vamos ter no
registo W o conteúdo do membro da tabela endereçado. No exemplo anterior,
a constante ‘k2’ estará no registo W, após o retorno do subprograma. Período de execução da instruçãoTodas as instruções são
executadas num único ciclo, excepto as instruções de ramificação
condicional se a condição for verdadeira, ou se o conteúdo do contador de
programa for alterado pela instrução. Nestes casos, a execução requer dois
ciclos de instrução e o segundo ciclo é executado como sendo um NOP
(Nenhuma Operação). Quatro oscilações de clock perfazem um ciclo de
instrução. Se estivermos a usar um oscilador com 4MHz de frequência, o
tempo normal de execução de uma instrução será de 1ms
e, no caso de uma ramificação condicional de 2ms. Listagem das palavrasf qualquer local
de memória num microcontrolador
|
© Copyright 2003. mikroElektronika. All Rights Reserved. For any comments contact webmaster.