Anda di halaman 1dari 12

Servio Nacional de Aprendizagem Industrial

Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA


Microcontrolador

Aluno: Data:

Docente: Turno:

1) O que um microcontrolador? Explique a diferena entre microcontrolador e


microprocessador.

Podemos definir o microcontrolador como um "pequeno" componente


eletrnico, dotado de uma "inteligncia" programvel, utilizado no controle
de processos lgicos. O controle de processos deve ser entendido como o
controle de perifricos, tais como: leds, botes, display's de cristal lquido
(LCD), resistncias, rels, sensores diversos (presso, temperatura, etc.) e
muitos outros. So chamados de controles lgicos pois a operao do
sistema baseia-se nas aes lgicas que devem ser executadas,
dependendo do estado dos perifricos de entrada e/ou sada.

Um microcontrolador difere de um microprocessador em vrios aspectos.


Primeiro e o mais importante, a sua funcionalidade. Para que um
microprocessador possa ser usado, outros componentes devem-lhe ser
adicionados, tais como memria e componentes para receber e enviar
dados. Em resumo, isso significa que o microprocessador o verdadeiro
corao do computador. Por outro lado, o microcontrolador foi projectado
para ter tudo num s.
Nenhuns outros componentes externos so necessrios nas aplicaes,
uma vez que todos os perifricos necessrios j esto contidos nele.
Assim, ns poupamos tempo e espao na construo dos dispositivos.

2) Mostre e descreva os tipos de memrias utilizadas em microcontroladores.

ROM: somente de leitura. Geralmente chamada de masked-ROM (masked =


mascarado), e gravada pelo fabricante do componente, o que em quantidades
muito grandes reduz custos.
EPROM: apagavel atraves de luz ultra-violeta (memorias janeladas).
Utilizada no processo de desenvolvimento e algumas vezes no produto
acabado, quando ha a necessidade de se poder alterar o software.
OTP: programavel somente uma vez, utilizada em producao.
Flash: e uma memoria eletricamente apagavel (EEPROM) com tempos de
acesso para leitura rapido. Oferece uma grande flexibilidade, pois geralmente
e possivel reprogramar um equipamento sem retirar o microcontrolador da
placa (gravacao in-circuit). Alem disso, alguns modelos permitem que o
microcontrolador altere sua propria memoria de programa.

1
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador

3) Quantos ciclos de clock no total so gastos para realizar a busca e execuo


de uma instruo?

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.

Figura 1: Pipeline de um trecho de cdigo

No ciclo 0, o cdigo da instruo MOVLW 55h buscado da memria (desconsiderando a


instruo que executada neste ciclo). No ciclo 1, a instruo MOVLW 55h executada e a
instruo MOVWF PORTB buscada da memria. No ciclo 2 a instruo MOVWF PORTB
executada e buscada da memria a instruo CALL SUB_1. A chamada da sub-rotina SUB_1
e a leitura da instruo BSF PORTA, BIT3 so feitas no ciclo 3. Como a instruo BSF PORTA,
BIT3 no a que ser executada no momento e sim a primeira instruo da sub-rotina SUB_1,
deve ser feita outra busca de instruo. Esta situao mostra porque as instrues de chamada
de sub-rotina consomem dois ciclos de mquina, j que a instruo BSF PORTA, BIT3 ter que
ser lida novamente ao trmino da sub-rotina. O ciclo 4 usado somente para ler a primeira
instruo da sub-rotina e nenhuma instruo executada. A primeira instruo da sub-rotina
ento executada no ciclo 5.

2
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador

4) O que uma porta de I/O?

Funes de Entrada e Sada de dados digitais (I/O)


Um pino pode possuir dois estados ( 0 ou 1, alto ou baixo, 0 ou 5V)
Para aumentar sua funcionalidade, os mesmos pinos podem ser usados tanto
como sada quanto como entrada.
Para definir um pino de uma porta como entrada ou sada, preciso definir os
bits do registrador TRIS como 1, para entrada, ou 0, para sada.
Cada pino tem o seu registrador TRIS correspondente.

5) O que significa PIC e internamente quais memrias ele possui?

o nome que a Microchip adotou para a sua famlia de


microcontroladores, sendo
que a sigla significa Controlador Integrado de Perifricos.
O PIC um circuito integrado produzido pela Microchip Technology Inc.,
que pertence da categoria dos microcontroladores, ou seja, um
componente integrado que em um nico dispositivo contem todos os
circuitos necessrios para realizar um
completo sistema digital programvel.

Uma memria PROM (Programmable Read Only Memory ou Memria Programavel


Somente para Leitura) na qual ira memorizar de maneira permanente as instrues
do programa.
Uma memria RAM (Random Access Memory ou Memoria de Accesso Aleatrio)
utilizada para memorizar as variveis utilizadas pelo programa.

6) Para que serve o MPlab?

O MpLab um ambiente integrado de desenvolvimento (I.D.E.: Integrated


Development Environment). No mesmo ambiente o usurio pode executar todos os
procedimentos relativos ao desenvolvimento de um software para o PIC (edio,
compilao, simulao, gravao), tornando o trabalho do projetista mais produtivo.
Este programa totalmente gratuito e pode ser pego no site www.microchip.com.

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

7) Descreva cinco caractersticas do PIC 16F877A.

Microcontrolador de 40 pinos, o que possibilita a montagem de um


hardware complexo e capaz de interagir com diversos recursos e
funes ao mesmo tempo.
33 portas configurveis como entrada ou sada.
15 interrupes disponveis.
Memria de programao EPROM FLASH, que permite a gravao
rpida do programa diversas vezes no mesmo chip, sem a
necessidade de apag-lo por meio de luz ultravioleta, como
acontece nos microcontroladores de janela;
Memria de programa com 8Kwoeds, com capacidade de escrita e
leitura pelo prpio cdigo interno;
Memria EPROM (no voltil) interna com 256 bytes;
Memria RAM com 368 bytes;
Ts timers (2x8bits e 1x16 bits);
Comunicaes seriais: SPI, IC e USART;Conversores analgicos de
10 bits
(8x) e comparadores analgicos (2x);
Conversores analgicos de 10 bits (8x) e comparadores analgicos
(2x);
Dois mdulos CCP: Capture, Compare e PWM;

4
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador

8) Na figura abaixo defina a funo dos pinos 1, 2, 13, 14, 31 e 32

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

9)Qual a diferena entre o osocilador XT e o RC?

O PIC pode trabalhar com quatro configuraes de oscilador. Uma vez


que as configuraes com um oscilador de cristal e resistncia-
condensador (RC) so aquelas mais frequentemente usadas, elas so as
nicas que vamos mencionar aqui.
Quando o oscilador de cristal, a designao da configurao de XT, se
o oscilador for uma resistncia em srie com um condensador, tem a
designao RC.
Isto importante, porque h necessidade de optar entre os diversos tipos
de oscilador, quando se escolhe um microcontrolador.

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

O diagrama acima, mostra como um oscilador RC deve ser ligado a um


PIC16F877A. Com um valor para a resistncia R abaixo de 2,2 K, o oscilador
pode tornar-se instvel ou pode mesmo parar de oscilar. Para um valor
muito grande R (1M, por exemplo), o oscilador torna-se muito sensvel
umidade e ao rudo. recomendado que o valor da resistncia R esteja
compreendido entre 3K e 100K.
Apesar de o oscilador poder trabalhar sem condensador externo (C = 0
pF), conveniente, ainda assim, usar um condensador acima de 20 pF para
evitar o rudo e aumentar a estabilidade. Qualquer que seja o oscilador que
se est a utilizar, a freqncia de trabalho do microcontrolador a do
oscilador dividida por quatro. A freqncia de oscilao dividida por 4
tambm fornecida no pino OSC2/CLKOUT e, pode ser usada, para testar
ou sincronizar outros circuitos lgicos pertencentes ao sistema.

10) O que uma IDE?

AMBIENTE INTEGRADO DE DESENVOLVIMENTO (IDE)


Como ambiente de desenvolvimentos ser usado o compilador PCWH da
CCS. Este constitudo de um IDE grfico que pode ser executado em
qualquer plataforma Windows. Este ambiente permitir uma programao
dos PICs em linguagem C. Existe a possibilidade de se fazer uma
integrao com o ambiente MPLAB da prpria microchip. Como vantagem
do uso desse compilador pode-se citar a grande eficincia do cdigo
gerado, compatibilidade com o padro ANSI e ISSO salvo algumas
excees e a sua grande diversidade de funes e bibliotecas
desenvolvidas em linguagem C.
O objetivo a compreenso do ambiente de programao e da seqncia
para poder criar um novo projeto usando o MpLab como editor e o CCS
como compilador.

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)

#byte porta = 0x05


#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09

#bit botao = portb.0


#bit led = portb.1

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;
}
}

#use delay(clock=4000000, RESTART_WDT)


A sequncia #use especifica uma diretiva interna do compilador. Aqui
determinado o valor de 4 MHz para a freqncia do clock.
RESTART_WDT Reset no Watchdog timer

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..

Watchdog timer ou co de guarda um recurso poderosssimo que deve


ser utilizado. um contador automtico incrementado por meio de um
oscilador prprio, independente do oscilador principal. Caso o WDT
estoure, um reset do sistema ir ocorrer imediatamente.

#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().

#byte portd = 0x08


No data sheet do PIC 16F877A podemos observar que as portas a,b,c,d,e
esto associados a um endereo de memria. Depois destas linhas as
portas tero como identificador as variveis port a, port b at port e.

#bit botao = portb.0


As entradas devem ser associadas a nomes para facilitar a programao e futuras
alteraes do hardware. De aqui em diante podemos nomear o pino portb.0 como
boto por exemplo.

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;

O comando if (em portugus se) utilizado para avaliar a condio que


esta entre parnteses. Em caso de que esta condio seja verdadeira o
comando seguinte ser executado. Em caso de ser falsa (else) o comando
depois da instruo else ser executado. Neste exemplo o a varivel
booleana boto esta negada (!botao) quer disser se o boto estivesse em
estado zero a condio ser falsa e o led ser igual a 1. Em caso que o
boto seja 1 a condio ser falsa e o led ser igual a zero.

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

#include<16f877a.h> // Anexa ao programa o arquivo 16F877A.h


#use delay(clock=4000000) // Utiliza um clock de 4MHz para o para o microcontrolador
#fuses NOPROTECT // Dispositivo sem proteo para leitura da eeprom
#fuses NOWDT // Watch dog desabilitado
#fuses NOLVP // gravao em alta tenso desligada
#fuses HS // Opera com cristal acima de 4MHz
#fuses NOBROWNOUT // No resseta o chip se a tensao cair abaixo de 4V

// 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.

#include<16f877a.h> // Anexa ao programa o arquivo 16F877A.h


#use delay(clock=4000000) // Utiliza um clock de 4MHz para o para o
microcontrolador
#fuses NOPROTECT // Dispositivo sem proteo para leitura da eeprom
#fuses NOWDT // Watch dog desabilitado
#fuses NOLVP // gravao em alta tenso desligada
#fuses HS // Opera com cristal acima de 4MHz
#fuses NOBROWNOUT // No resseta o chip se a tensao cair abaixo de 4V

// O programa
main ( )

{
int tempo=100; // Declara uma varivel tipo inteira de 8 bits ( 0 a 255)

while(1) // Loop infinito


{

11
Servio Nacional de Aprendizagem Industrial
Centro de Formao Profissional Antnio Urbano de Almeida CFP AUA
Microcontrolador

if(input(pin_a0)==1) // Se a chave pin_A0 for 1


{
output_high(pin_b0); // A sada correspondente ao pino RB0 ser alta ( LED aceso)
delay_ms(tempo);
// Fica aceso por 100ms

output_low(pin_b0); // A sada correspondente ao pin_B0 ser baixa (LED


apagado)
delay_ms(tempo); // Fica aceso por 100ms
}

else // Seno
output_low(pin_b0); // A sada correspondente ao pino pin_B0 fica baixa
}

12