Documente Academic
Documente Profesional
Documente Cultură
Aluno: Data:
Docente: Turno:
1
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
Para a famlia PIC, cada ciclo de instruo dura quatro pulsos de clock. Os microcontroladores
PIC fazem uso do pipeline para aumentar a velocidade de execuo das instrues. Pipeline
uma tcnica utilizada pelos processadores mais modernos e consiste em dividir a execuo das
instrues em partes e cada uma destas partes pode ser executada em paralelo em um formato
semelhante a uma linha de montagem de carros. No caso dos microcontroladores PIC pode-se
visualizar a execuo das instrues como sendo dividida em dois estgios: busca (fetch) e
executa (execute), onde cada estgio gasta 4 ciclos de clock.
O pipeline permite que quase todas as instrues possam ser executadas em um ciclo de
mquina, com exceo das que alteram o contador de programa, como chamadas de rotinas e
seus retornos. Nestes casos, o pipeline sofre uma penalidade de um ciclo de clock devendo
descartar (flush, na figura 8) a instruo que j havia sido buscada para ento carregar a
instruo no endereo correto, consumindo, portanto, dois ciclos de instruo (SOUZA, 2000,
pg 6).
A figura 1 (MATIC, 2000, pg 18) mostra o fluxo das instrues no pipeline em um pequeno
trecho de um programa escrito em assembly.
2
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
Edio
O MpLab possui um editor de texto para seus programas que possui
diversas ferramentas de auxlio como localizar, substituir, recortar, copiar
e colar.
Compilao
Compilar significa traduzir um programa escrito em assembly
(mneumnicos) para linguagem de mquina (nmeros). A compilao gera
um arquivo com extenso .hex (hexadecimal) a partir dos arquivos de
cdigo fonte (.asm) e de projeto (.pjt). o contedo do arquivo
hexadecimal que gravado na memria de programa do PIC.
3
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
Simulao
O MpLab possui ferramentas para simulao do programa no prprio
computador, possibilitando a execuo passo a passo, visualizao e
edio do contedo dos registradores, edio de estmulos (entradas),
contagem de tempo de execuo, etc.
Gravao
Para que o programa seja executado no microcontrolador, o arquivo
hexadecimal deve ser gravado no PIC. O MpLab oferece suporte aos
gravadores fabricados pela Microchip.
Emulao
A Emulao um recurso de desenvolvimento que possibilita testes em
tempo real.
O MpLab oferece suporte ao hardware necessrio para estar emulando um
determinado programa. Esta emulao feita conectando-se (atravs do
hardware mencionado) o computador ao sistema projetado, no lugar do
PIC
4
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
1 - MCLR/Vpp
Master Clear (reset) externo. O uC s funciona quando este pino encontra-se em
nvel alto.
2 - RA0/ AN0
RA0: I/O digital ou entrada analgica AN0
13 - OSC1/CLKIN
Entrada para cristal. Osciladores externos(RC)
14 - OSC2/CLKOUT
Sada para cristal. Os cristais ou resonadores devem ser ligados aos pinos OSC1 e
OSC2.
Sada com onda quadrada em da frequencia imposta em OSC1 quando em modo
RC. Essa frequncia equivale aos ciclos de mquina internos.
31 - Vss
5
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
GND
32 - Vdd
Alimentao positiva
Oscilador XT
O oscilador de cristal est contido num envlucro de metal com dois pinos onde foi
escrita a freqncia a que o cristal oscila. Dois condensadores cermicos devem
ligar cada um dos pinos do cristal massa. Casos h em que cristal e
condensadores esto contidos no mesmo encapsulamento, tambm o caso do
ressonador cermico ao lado representado. Este elemento tem trs pinos com o pino
central ligado massa e os outros dois pinos ligados aos pinos OSC1 e OSC2 do
microcontrolador. Quando projetamos um dispositivo, a regra colocar o oscilador
to perto quanto possvel do microcontrolador, de modo a evitar qualquer
interferncia nas linhas que ligam o oscilador ao microcontrolador.
Oscilador RC
Em aplicaes em que a preciso da temporizao no um fator crtico, o oscilador
RC torna-se mais econmico. A freqncia de ressonncia do oscilador RC depende
da tenso de alimentao, da resistncia R, capacidade C e da temperatura de
funcionamento.
6
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
11) Dado o programa abaixo comente as linhas em negrito (qual a funo dela no
7
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
circuito).
#include
#use delay(clock=4000000, RESTART_WDT)
#fuses xt,nowdt,noprotect,put,brownout,nolvp,nocpd,nowrt
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
void main ()
{
set_tris_a(0b11111111);
set_tris_b(0b11111001);
set_tris_c(0b11111111);
set_tris_d(0b11111111);
set_tris_e(0b00000111);
porta=0x00;
portb=0x00;
portc=0x00;
portd=0x00;
porte=0x00;
while(TRUE) {
RESTART_WDT();
if(!botao)
led = 1;
else
led=0;
}
}
8
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
Se watch dog timer esta ativado, neste caso ser necessrio resetar o WDT para
que o PIC no seja resetado e comece a ser executada a primeira linha do
programa..
#use fast_io(c)
Afeta como o compilador gerar cdigo para as instrues de entrada ou
sada que seguem. Esta diretiva tem efeito at que uma nova diretiva
#use xxxx_IO seja encontrado. Este mtodo rpido de configurao de
configurao de I/O a configurar corretamente a direo de I/O usando a
instruo set_tris_X().
set_tris_c(0b11111111);
Esta funo permite direcionar as I/O. Deve de ser usado com o comando fast_io e
quando as portas de I/O esto acessveis, para isto deve ser usada a diretiva #BYTE
para o acesso da porta. Cada bit no valor representa um pino. O 1(um) representa
entrada e o zero sada.
Exemplo: SET_TRIS_B( 0x0F ); similar a SET_TRIS_B( 0b00001111 )
// B7,B6,B5,B4 are outputs
// B3,B2,B1,B0 are inputs
portc=0x00;
Inicializando as portas, todos os pinos das portas na execuo destas
linhas tomaro o valor de zero ou desligado.
while(TRUE) {
Este um comando de controle utilizado na repetio de um determinado bloco de
instrues. Esse bloco ser repetido enquanto a avaliao da condio
especificada entre parnteses for verdadeira. No caso, a avaliao explicitamente
verdadeira (true).
O bloco de instrues que ser repetido aquele especificado dentro das chaves
que seguem o comando while.
9
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
if(!botao)
led = 1;
else
led=0;
12) Deseja-se acender o LED se a chave SPDT estiver em nvel lgico alto (1) e
apag-lo se estiver em nvel lgico baixo (0). Escreva o cdigo usando a linguagem C
para PIC
10
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
// O programa
main ( )
{
while(1) // Loop infinito
{
if(input(pin_A0)==1) // se a chave pin_A0 for 1
output_high(pin_b0); // A sada pin_B0 ser alta (led aceso)
else // Seno
output_low(pin_b0); // A sada pin_B0 ser baixa (led apagado)
}
}
13) Deseja-se que toda vez que a chave SPDT estiver em nvel lgico alto (1) o LED
ficar piscando num intervalo de 50ms e se a chave estiver em nvel lgico baixo (0) o
LED ficar apagado.
// O programa
main ( )
{
int tempo=100; // Declara uma varivel tipo inteira de 8 bits ( 0 a 255)
11
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador
else // Seno
output_low(pin_b0); // A sada correspondente ao pino pin_B0 fica baixa
}
12