Sunteți pe pagina 1din 5

Microcontrolador PIC16F628A

O microcontrolador PIC16F628A é um CI digital de arquitetura RISC( conjunto de instruções


reduzido) que possui 18 pinos. É fabricado pela Microchip ( www.microchip.com).

Os pinos do CI podem ser configurados como entrada, saida ou ter alguma função especial.
Podemos verificar isto pela pinagem do Integrado. Cada pino possui mais de uma função.

Diagrama de blocos do PIC

Internamente ,para efeito de análise, podemos dividir o PIC nos seguintes blocos internos:

O PIC16F628A possui um total de 13 entradas/saida separadas em dois grupos denominados


PORTAS. Desta forma temos as Porta A e a Porta B. A Porta A possui 5 pinos que podem ser
configurados como entradas ou saidas e seus nomes são definidos como RA0, RA1, RA2, RA3 e RA4.
A Porta B possui 8 pinos que também podem ser configurados como entrada ou saida, sendo seus
nomes RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7.
Para que o microcontrolador possa funcionar é necessária também a sua alimentação: São os pinos
Vss( Gnd) e Vdd(+5V). A tensão de alimentação nominal é 5 Volts podendo variar de 2 à 6 Volts.
O oscilador deve ser ligado aos pinos OSC1 e OSC2. Os tipos de osciladores serão
discutidos adiante. Temos ainda o pino MCLR que se refere ao pino de RESET. Toda vez que o pino
for colocado em nível baixo (Gnd), o microcontrolador será resetado.

Considerações sobre o hardware do PIC

Todo microcontrolador trabalha em cima de duas bases: Hardware e software. Falaremos agora
sobre alguns cuidados especiais antes de projetar o hardware necessário.

1) Existem 2 pinos para alimentação do integrado: pino 14(Vdd) e pino 5(Vss). A alimentação deve estar
entre 2 e 6 Volts. O típico é 5 Volts (TTL).

2) Todo microcontrolador possui um pino de Reset. No caso do PIC é o pino 4 (MCLR). Sua função é
inicializar o microcontrolador à partir da posição de memória zero. Este pino é ligado ao positivo da fonte
(Vdd). Toda vez que é ligado a alimentação o circuito é resetado automaticamente.

3) Oscilador : Podemos utilizar diversos tipos de osciladores. No caso, são do tipo de onda quadrada..

RC: Este tipo de oscilador é feito à partir de um resistor(R) e um capacitor(C). È o sistema mais barato,
mas possui a desvantagem de sofrer variação de frequencia com a temperatura.
CRISTAL: O cristal é um componente cujo funcionamento é parecido com o capacitor. Tanto que
sua simbologia é parecida com a do capacitor. Possui uma estabilidade em temperatura muito maior que a do
circuito RC. Ao variarmos a temperatura ambiente, o circuito não sofre variação de frequencia. Seu custo é
pouco maior que o dos circuitos osciladores normais, mas é o mais preciso.

São utilizados dois pinos para interligação do cristal: pino 16(OSC1) e pino 15(OSC2).

OSCILADOR EXTERNO: Estes circuito podem ser feitos à partir de portas lógicas, 555,
transistores, geradores de onda quadrada, etc. Possuem a desvantagem de utilizar muitos componentes e
sofrer variação de frequencia com a temperatura.

Nestes casos é utilizado somente o pino 16 (OSC1). Em todos os casos o pino MCLR deve
ser ligado ao Vdd (+5 Volts).

4) Programa: Todo microcontrolador necessita para funcionar de um programa colocado internamente em


sua memória Flash, ou seja, não adianta comprar o componente e somente substituir no circuito defeituoso
pois ele não vai funcionar. Ele necessita de um programa armazenado.
Antes de começarmos a falar sobre programação (Software) devemos nos familiarizarmos com
alguns termos utilizados.
Instrução: Tarefa ou ordem básica dada ao microcontrolador(somar, subtrair, mover, etc).
Mnemonico: Abreviação escrita de uma instrução. Mover -> Mov
Registrador: Local para armazenar uma informação binária (0 ou 1) de maneira temporária. Pode ser
entendido como um pedaço da memória RAM. No caso o registrador é volátil, ou seja, perde seu conteudo
com a queda de energia.
Work: Registrador temporário para operações da ULA. É conhecido pelo nome de acumulador e
seu simbolo é a letra W.
File: Referencia a um registrador genérico. Utilizaremos a letra F para representação dos mesmos.
Literal: Um numero qualquer que pode ser escrito em uma base qualquer: decimal, binário ou
hexadecimal. Utilizaremos a letra L para sua representação.
Bit: Refere-se a um bit específico dentro de um byte. Utilizaremos a letra B para sua representação.
Teste: Quando queremos testar o estado de um bit dentro de um byte. Utilizaremos a letra T.
Skip: Significa pulo ou salto e é utilizado para criar desvios no programa . Utilizaremos a letra S
para representá-lo.
Set: Refere-se ao ato de setar um bit (colocar em nível lógico 1). Utilizaremos a letra S.
Clear: Refre-se ao ato de limpar um bit(colocar em nivel lógico 0). Utilizaremos a letra C.
Zero: O resultado de uma operação matemática ou atribuição do valor zero a um registrador.
Utilizaremos a letra Z.
Todos os demais termos utilizados são auto-explicativos:
Add: Soma
And: Operação lógica E
Clr: Limpar, zerar (clear)
Com: Complemento. Inverte todos os bits de um byte.
Dec: Decremento de uma unidade (subtrai um)
Inc: Incremento de uma unidade (soma um)
IOR: Operação lógica OU
Mov: Mover, transferir para algum lugar
RL: (Rotate Left) Rotacionar um bit para a esquerda
RR: (Rotate Right) Rotacionar um bit para a direita
Sub: subtração
Swap: Inversão entre as partes altas e baixas de um byte (nibble)
XOR: Operação lógica OR Exclusiva

Programação assembler
A programação (software) que iremos desenvolver ao longo do semestre é chamado programação
assembler. É uma linguagem de programação baseada em abreviação de instruções (Mnemonicos).
É uma linguagem como outra qualquer mas requer mais cuidados que as outras pois é muito cheia
de detalhes.
Construção dos nomes das instruções
O processo de construção de uma instrução baseada em mnemonicos é fácil. Por exemplo,
digamos que voce deseja decrementar o valor de um determinado registrador. A instrução que fará isto é
composta pelos termos referentes à ação que se deseja:
Decrementar (DEC) um registrador(F) = DECF
O contrário também é possível:
DECFSZ = Decrementa(DEC) registrador(F) e salta(S), se o resultado for zero(Z).

Exercícios:
Baseado nos exemplos anteriores, escrever o mnemonico correspondente:

1)Incrementar registrador
2)Decrementar registrador
3) Operação lógica OU entre W e registrador
4) Limpa registrador W
5) Limpa registrador
6) Soma W com um outro registrador qualquer
7) Rotaciona à direita registrador
8) Rotaciona à esquerda registrador
9) Move registrador
10)Testa o bit do registrador e salta se ZERO.

Faça o mesmo mas agora escreva o que faz o Mnemonico:

1) CLRW
2) BSF
3) BCF
4) BTFSS
5) XORWF
6) MOVWF
7) MOVF
8) RLF
9) ANDLW
10) XORLW
11) XORWF
12) ADDWF
13) COMF
14) ADDLW
15) SWAPF