Você está na página 1de 55

Prof.

Fernando S
Introduo
Microprocessadores: 4 bits, 8 bits, 16...
um chip:
com alta integrao de componentes
RAM externa
memria EEPROM externa
HD para armazenamento de programas
outros diversos perifricos.
Ou seja, voc usa um microprocessador
dentro de um microcomputador e ele, em
conjunto com um monte de outros CIs,
trabalham direitinho.
MICROPROCESSADORES E
MICROCONTROLADORES
Introduo
Microcontrolador um
componente completo por si
s.
Basta um programa e ele
executa uma funo
especfica.
Dentro do microcontrolador
temos memria RAM,
FLASH, EEPROM ou
E2PROM.
MICROPROCESSADORES E
MICROCONTROLADORES
Introduo
Vamos simplificar resumindo a
lgica em dois nmeros ou como
falamos muito, em dois dgitos: O
0 (zero) e o 1 (um).
Quando falamos em 0 (zero),
estamos nos referindo a zero Volt
DC e quando falamos em 1 (um)
estamos falando em + Vcc.
No caso dos microcontroladores
PIC, geralmente, estaremos
falando que:
0 = GND e 1 = 5Vcc
Lgica Digital
Introduo
Memria ROM
Memria RAM
Memria EPROM
Memria EEPROM ou
E2PROM
Memria FLASH
TIPOS DE MEMORIAS
Introduo
um endereo na memria
Formados por 8 nmeros, ou
melhor, 8 bits.
Estes bits podem ser 0 (zero)
ou 1 (um).
Muitas vezes chamamos
estes bits de Flags.
Flag ento um bit dentro de
um registrador.
REGISTRADORES
Introduo
Imaginemos 8 posies:
Cada posio pode ter um valor
de 0 (zero) ou 1 (um). Esta
posio com um valor um bit, ou
melhor, bit o valor que h dentro
da posio.
Quando juntamos 8 bits, como no
exemplo a seguir:
00110011 Chamamos isto de
byte. Um byte ento um conjunto
de 8 bits.
BITs e BYTES
Introduo
s vezes os bits podem ser agrupados em
nmeros de 4, veja:
0101 Damos a isto o nome de nibble.
Outras vezes os bits podem se agrupar com
nmeros maiores que 8, veja:
001100110011 Chamamos isto de Word:
16 bits ou 2 bytes
NIBBLES e WORDS
Introduo
Curiosidade importante
Nos PICS existem
registradores especiais
Podemos atravs dos bits
ou flags destes registradores
ajustar o funcionamento do PIC
ou saber como ele est operando,
para isto basta escrever ou ler os
flags destes registradores.
Introduo
Os primeiros microcontroladores
usavam uma estrutura interna que
tinha apenas um caminho para
trafegar os dados e endereos.
Lembre-se, dados so informaes e
endereos so os locais onde sero
armazenados os dados.
O nome mais correto para este
caminho Bus. Com apenas um
bus tnhamos que trafegar hora
endereos, hora dados.
Esta arquitetura de construo
recebe o nome de Von Neumann.
Arquitetura de construo Von Neumann
Introduo
Hoje em dia, os PICs
particularmente, trabalham
com dois bus. Um para dados
e outro para endereos.
Este tipo de arquitetura recebe
o nome de Harvard.
Os PICs possuem ainda um
outro recurso, chamado de
Pipeline.
Arquitetura de construo Harvard
Introduo
CISC : possua mais de 100
instrues, o que dificultava a
memorizao do programador.
RISC: Este set tem entre 33
a 35 instrues dependendo
do PIC. Isto ajuda na
memorizao, mas, exige mais
do programador. como falar
fluentemente um outro idioma,
conhecendo poucas palavras,
all right?
Arquitetura de construo CISC e RISC
Complex
Instruction
Set
Computer
Reduced
Instruction
Set
Computer
Introduo arquitetura interna e suas configuraes
Conhecendo o PIC
Fabricado pela Microchip
(www.microchip.com)
Possui 18 pinos
Possui 35 instrues
Clock at 20MHz
Memoria de programa tipo
Flash de 2k words
224 bytes de memoria RAM
de dados
Caractersticas do PIC 16F628A
Conhecendo o PIC
128 bytes de memoria
EEPROM para dados
Instrues de 14 bits com
200ns de execuo
Dados de 8 bits
15 registradores especiais
16 pinos de entrada/saida
(I/O)
ICPS, timer interno,
watchdog, CPP, USART,
etc...
Caractersticas do PIC 16F628A
Arquitetura interna
PINAGEM
Arquitetura interna
RETIRANDO OS PERIFRICOS
Conhecendo o PIC
PINAGEM
Conhecendo o PIC
PINAGEM: Funo dos pinos
Conhecendo o PIC
PINAGEM: Funo dos pinos
Conhecendo o PIC
Ports de Entrada e Sada
Conhecendo o PIC
Ports de Entrada e Sada
0 0 1 1 1 1 0 0
0 0 0 0 1 1 1 1
Conhecendo o PIC
Com 8 nveis (imagine que
voc quer guardar 8 caixas
iguais uma sobre a outra, cada
caixa contm algumas coisas.
Pois bem, cada caixa um
nvel). H de se ter cuidado
para no derrubar esta pilha
ou como se diz em
programao, estourar a pilha
(vai que dentro de uma pilha
voc colocou dinamite.).
Outras caractersticas: Pilha ou Stack
Conhecendo o PIC
O Watch dog um contador independente de
tudo dentro do PIC, que reseta o mesmo, aps
um certo perodo.
Para que serve isto?
Digamos que voc fez um projeto com um PIC
para controlar um elevador, de repente um
pico de tenso o PIC trava-o fazendo com que
o elevador pare. Depois de um curto perodo o
Watch dog reseta o PIC, o programa volta a
funcionar e o elevador volta a funcionar
tambm.
O circuito watchdog do microprocessador ou
microcontrolador utilizado como mecanismo
de segurana, o que permite a reinicializao
do programa caso o mesmo trave e deixe de
funcionar de forma adequada
Outras caractersticas:
Watch Dog ( Co de Guarda)
Conhecendo o PIC
Uma USART serial, mas o que isto?
um recurso que permitir que voc
converse com outros equipamentos,
como uma porta serial de um
microcomputador.
USART significa Universal
Synchronous Asynchrous Receiver
transmiter ou Transmissor Universal
Sncrono ou Assncrono.
Outras caractersticas:
USART
Conhecendo o PIC
S para lembrar PWM quer dizer
modulao por largura de pulso, com
este recurso voc conseguir variar o
brilho de uma lmpada, a velocidade
de um motor DC ou at fazer uma
fonte chaveada.
Outras caractersticas:
PWM Pulse Wide Modulation
Conhecendo o PIC
2 comparadores analgicos com
referncia interna, programvel, de
tenso. Quem gosta de amplificadores
operacionais prepare-se para se
divertir, e quem no os conhece vamos
ler um livro sobre AOPs.
Outras caractersticas:
Comparadores
Conhecendo o PIC
um sinal de onda quadrada que serve para fazer um
circuito lgico funcionar ou para sincronizar diversos
dispositivos ou circuitos.
O nvel alto do clock =+Vcc
O nvel baixo = zero volt.
O perodo alto (+Vcc) chamado de Ton e o perodo baixo
de Toff.
Ton = Toff. melhor que sejam iguais
T = Ton + ToFF ( a soma resulta no periodo)
T = 1
F
Osciladores: O que Clock?
Conhecendo o PIC
Ao usarmos um cristal de 4MHz teremos uma freqncia de
4MHz e o perodo de:
T = 1 = 1 = 250ns ou 250 nano segundos
F 4.000,000
Ou 0,000. 000.25 segundos.
Osciladores: O que Clock?
Conhecendo
o PIC
Divide-se clock por quatro, formando as fases Q1,
Q2, Q3 e Q4
PIPELINE: Busca a informao em um ciclo e a
executa no prximo
Para um clock de 4MHz, cada instruo executada
1s, desde que no afete o Program Counter
Osciladores: O que Ciclo de mquina?
Conhecendo o PIC
RC_CLKOUT = oscilador RC externo que deve
estar ligado no pino 16. No pino 15 teremos este
sinal dividido por 4.
RC_I/O = Oscilador externo mais que usa o pino 15
como I/O.
Osciladores: tipos aceitos pelo PIC16f628
Conhecendo o PIC
XT = cristal de 200kHz at 4MHz
HS = cristal acima de 4MHz
LS = cristal abaixo de 200kHz
INTOSC_I/O = oscilador interno com o pino 15
operando como I/O.
INTOSC_CLKOUT = o pino 15 teremos este sinal
dividido por 4
Osciladores: tipos aceitos pelo PIC16f628
Conhecendo o PIC
OS REGISTRADORES
Conhecendo o PIC
O REGISTRADOR W
Conhecendo o PIC
O nome registrador W vem de Registrador Work, que
traduzindo, quer dizer trabalho.
atravs dele que carregamos os outros registradores
com valores diversos e corretos para um perfeito
funcionamento de nosso projeto.
Caso desejamos colocar um determinado valor em um
registrador de uso geral (GPR), primeiro temos que
carregar o registrador W e depois passar para o outro
registrador.
O REGISTRADOR W
O incio de tudo...
Programando em
Assembly
Fique atento!
CONFIGURAES INICIAIS:
Desenhando o Circuito no Proteus
Programando em
Assembly
CONFIGURAES INICIAIS:
A lgica do nosso primeiro programa
Programando em
Assembly
LIST p=16f628a
#INCLUDE "P16F628.INC"
CONFIGURAES INICIAIS:
Incluso de cabealhos
Programando em
Assembly
Abrir arquivo do word.
Exemplo:
__CONFIG _CP_OFF &
_WDT_OFF &
_INTRC_OSC_NOCLKOUT
& _PWRTE_ON &
_LVP_OFF & _MCLRE_OFF
CONFIGURAES INICIAIS:
PALAVRA DE CONFIGURAO
Programando em
Assembly
#DEFINE BANK0 BCF STATUS, RP0
#DEFINE BANK1 BSF STATUS, RP0
#DEFINE BOTAO PORTB, 4
#DEFINE LED PORTB, 0
CONFIGURAES INICIAIS:
DEFINIES
Programando em
Assembly
ORG 0X00 ; inicio do programa
GOTO INICIO ; pula para o label INICIO
ORG 0X04 ; inicio da interrupo
RETFIE ; retorna da interrupo
CONFIGURAES INICIAIS:
VETORES DE INICIALIZAO
Nos microcontroladores da famlia 8051, o desvio
imediato do processamento para um endereo
especfico da memria de programa, onde se encontra
uma determinada sub-rotina, pode ser obtido
via hardware por meio do pedido de interrupo.
Programando em
Assembly
INICIO
CLRF PORTA
CLRF PORTB
BANK1
MOVLW B00000000'
MOVWF TRISA
MOVLW B'00110000'
MOVWF TRISB
CONFIGURAES INICIAIS:
INICIALIZAO DOS REGISTRADORES
A instruo
MOV A,B. serve
para
transferncia de
dados.
Programando em
Assembly
MOVLW B'10000011'
MOVWF OPTION_REG
MOVLW B'00000000'
MOVWF INTCON
BANK0
MOVLW B'00000111'
MOVWF CMCON
CLRF PORTA
CLRF PORTB
CONFIGURAES INICIAIS:
INICIALIZAO DOS REGISTRADORES
Programando em
Assembly
MAIN
BTFSS BOTAO
GOTO BOTAO_LIB
GOTO BOTAO_PRES
BOTAO_LIB
BCF LED
GOTO MAIN
BOTAO_PRES
BSF LED
GOTO MAIN
END
AGORA SIM TEMOS O PROGRAMA EM
ASSEMBLY
Programando em
Assembly
1 passo: Abra o proteus Isis
2 passo: Monte o circuito (fique atento!)
3 passo: Adicione um source.
4 passo: Edite o source.asm que voc criou
com o cdigo apresentado
5 passo: Compile o programa pelo comando
BUILD
6 passo: Carregue o programa para a
memria do microcontrolador
7 passo: Execute o programa.
TEMOS O PROGRAMA, ENTO VAMOS
EXECUT-LO
Agora sim pra valer... Cuidado ao errar, pois pode ser que voc
erre somente uma vez, pois o PIC frgil...
Gravando no PIC
1 passo: Abra o IC-PROG
2 passo: Mude o idioma para portugues.
3 passo: Ative o driver para windows XP
4 passo: Utilize a API do Windows
5 passo: Selecione o PIC
6 passo: Carregue o programa em HEX
para a memria do IC-PROG
7 passo: Configure os Fuses, caso
necessrio
8 passo: Apague a memoria do PIC e faa a
gravao do novo programa.
MAIS UM PASSO A PASSO
Agora chega de baixaria... Somos de alto nvel...
Sero apresentados 3 programas:
Liga simples
Pisca Pisca
Sequencial de 4 LEDs
Programando em C
#include "16f628a.h
#fuses INTRC_IO, NOMCLR,
NOWDT
CONFIGURAES INICIAIS:
Incluso de cabealhos e utilidades
Programando em C
Void main (){
SET_TRIS_A(255);
SET_TRIS_B(0);
while(true)
{
output_bit( PIN_B0, input(PIN_A0));
}
}
Programa por completo
Programando em C
#include "16f628a.h"
#use delay(clock=4000000)
#fuses INTRC_IO, NOMCLR,
NOWDT
CONFIGURAES INICIAIS:
Incluso de cabealhos e utilidades
Programando em C
void main() {
byte i=1;
SET_TRIS_A(255);
SET_TRIS_B(0);
while(true){
OUTPUT_LOW(PIN_B0);
delay_ms(1000);
OUTPUT_HIGH(PIN_B0);
delay_ms(1000); }
}
O PROGRAMA POR COMPLETO
Programando em C
#include "16f628a.h"
#fuses INTRC_IO, NOMCLR, NOWDT
void main()
{
static boolean led=0;
SET_TRIS_A(255);
SET_TRIS_B(0);
OUTPUT_B(0);
while(true)
{
if(input(PIN_A0))
{
output_bit(PIN_B0, led); //Quando pressiona A0, manda o bit da varivel led para o
B0
led=!led; //inverte o bit da varivel led
while(input(PIN_A0)) //Este lao deixa o microcontrolador sem fazer nada enquanto
{// o boto A0 ainda estiver pressionado, s voltando a rodar o programa quando
soltar
}// o boto A0. Isto evita totalmente que o programa pense que o boto foi
}// pressionado sem querer...
}
}
Outro exemplo
Programando em C
Com o cdigo compilado,
voc pode carreg-lo para
a memria do
microcontrolodor tanto do
Proteus quanto o real.
E agora?