Você está na página 1de 6

Programação – Daniel Corteletti – Aula 2 Página 1/6

Conhecendo o PIC16F877
Microcontrolador de 8 bits da Microchip Co.

O microcontrolador PIC16F877 pode ser encontra-


do em diversos encapsulamentos:

PDIP, QFP, PLCC

Este modelo (16F877) possui 40 pinos (veja imagem


ao lado para o encapsulamento PDIP), sendo que des-
tes 40 pinos, 7 pinos são usados para alimentação e
controle do mesmo.

PINO 1: Suporta 3 níveis de tensão. Quando este pino


estiver recebendo 5V, o microcontrolador estará em condições de executar o programa. Quando
este pino receber 0V (GND), o PIC será “resetado”. Quando este pino receber tensão de 13,4V, o
PIC irá entrar em modo gravação.

PINOS 11 e 32: Alimentação (máximo 5V)

PINOS 12 e 31: Referência (GND)

PINOS 13 e 14 : Onde estará ligado o resonador externo (cristal de clock).

Os demais pinos são conhecidos por I/Os (lê-se Aiôus, e vem do inglês Inputs/Outputs, que significa
entradas/saídas). Estas I/Os são agrupadas em PORTs (portos), de no máximo 8 pinos cada (limi-
tação pois o componente possui um núcleo de 8 bits).
Há um total de 33 I/Os disponíveis, que podem ser configuradas como entradas ou saídas em tem-
po de execução.
Quando um pino é configurado como ENTRADA, ele pode
ser conectado a algum sensor para detectar sinais digitais
através de variação da tensão de 0 e 5V. Quando um pino é
configurado como saída, o programa poderá acioná-lo, e
com isso gerar uma corrente baixa (max. 20 mA) com os
níveis de tensão de 0V ou 5V.

Alguns pinos, porém, possuem outras funções além de se-


rem entradas ou saídas digitais. Por exemplo, no diagrama
ao lado podemos observar que os pinos 2 a 10 (exceto o
pino 6) são entradas analógicas, e podem ser usados para
detectar uma variação de tensão entre 0V e 5V, transfor-
mando esta variação em uma informação binária de 10 bits.
Os pinos 39 e 40 também são pinos usados na gravação do
microcontrolador, e os pinos 25 e 26 são usados para co-
municação SERIAL padrão RS232. Os pinos 16 e 17 são
pinos geradores de pulso (PWM), que é similar a uma saída
analógica. Muito útil para controle de velocidade de motores,
por exemplo. O pino 6 é um pino usado para contagem rápi-
da.
Programação – Daniel Corteletti – Aula 2 Página 2/6
Tradicionalmente conhecemos os pinos do microcontrolador NÃO PELO SEU NÚMERO, mas sim
pela sua IDENTIFICAÇÃO DE I/0.

Os pinos são agrupados em PORTs, sendo:

PORTa (com 6 I/Os disponíveis) PORTb (com 8 I/Os disponíveis)


PORTc (com 8 I/Os disponíveis) PORTd (com 8 I/Os disponíveis)
PORTe (com 3 I/Os disponíveis)

EXERCITANDO: Identifique os seguintes recursos no microcontrolador PIC16f877a (qual o número


do pino no encapsulamento PDIP correspondente)

PINO A3: _________________ PINO B7: _________________ PINO C2: _________________


PINO E0: _________________ PINO D6: _________________ PINO D2: _________________

Observações importantes:

A letra F (PIC16F877) identifica que o microcontrolador em questão utiliza a tecno-


logia FLASH, ou seja, pode ser regravado. Alguns modelos (que utilizam a letra C
no nome, como o PIC16C877) só podem ser gravados uma única vez e são mais
baratos.

Outros modelos da família 16 (como o PIC16F870, PIC16F628, PIC16F84, ....)


possuem variações em termos de recursos (com mais ou com menos pinos de
I/Os, entradas analógicas, memória ROM, memória RAM, etc...), mas todos podem
ser programados com a mesma linguagem.

Modelos da família 18 são mais rápidos e um pouco mais caros, continuando a ser
de 8 bits.

Modelos da família 24 são de 16 bits, e indicados para aplicações que exijam mais
poder de processamento.

Os microcontroladores PIC são indicados para aplicações mais simples, que não
necessitem de grande volume de dados manipulados, e que não necessitem pro-
cessamento em tempo real de alta performance.

Quando transferimos um programa para o microcontrolador, este deve estar em


linguagem de máquina (ARQUIVO HEX), e será armazenado na memória ROM do
microcontrolador. Esta memória não será apagada até que outro programa seja
enviado, mesmo que a alimentação de energia elétrica seja desativada.

Exercitando (Responda)

1) Quem fabrica o microcontrolador PIC ?


2) Quantos pinos de I/O o modelo PIC16F877 possui ?
3) O modelo PIC16F877 só é oferecido na versão PDIP ?
4) Posso gravar e regravar um PIC quantas vezes eu quiser ?
5) Para onde um programa é enviado quando programamos um microcontrola-
dor PIC ?
6) Um pino do microcontrolador pode acionar diretamente um motor elétrico
que consome 100mA ? Por que ?
Programação – Daniel Corteletti – Aula 2 Página 3/6
Descrição detalhada do PIC16F877
Desenvolvido pela MICROCHIP (www.microchip.com)
CPU RISC de alta performance, baseado em uma arquitetura
Haward modificada. Suas características mais significativas são:
• Opera com somente 35 instruções (ASSEMBLY)
• Operações com duração de um único ciclo, exceto pelas
instruções de desvio que consomem dois ciclos de máquina.
Cada ciclo equivale a 4 pulsos do circuito oscilador (clock)
• Operação em até 20 MHz (20 milhões de pulsos de clock por
segundo = 5 milhões de ciclos de máquina por segundo = 200
ns por ciclo)
• 8 KWords de FlashROM (Word com 14 bits), suportando mais
de 8 mil instruções em um programa.
• 368 Bytes de memória RAM
• 256 Bytes de memória EEPROM (regravável via software e
não volátil)
• Capacitado para interrupções com 14 fontes diferentes (timer,
contagem, pulso externo, serial, etc...)
• Pilha física com 8 níveis de profundidade
• Endereçamento direto, indireto e relativo
• Power-on Reset, power-on tiimer, oscillator start-up timer
• Watch-dog Timer baseado em oscilador RC interno para
tratar um possível travamento de software
• Opção para proteção de código executável (Ativando-a, não é
mais possível se ler a memória, evitando a duplicação do có-
digo em outro microcontrolador)
• Modo SLEEP para poupar energia
• Opções diferentes para circuito oscilador
• Tecnologia CMOS FLASH/EEPROM de baixo consumo e alta
velocidade, permitindo armazenamento não volátil na memó-
ria EEPROM interna em tempo de execução.
• Programação ICSP (recurso embutido de gravação) através
de dois pinos, facilitando a gravação do microcontrolador.
• Capacidade opcional de gravação com tensão de 5V (LVP)
• Opção de depuração in-circuit através de dois pinos
• Tensão de trabalho de 2 a 5.5V
• Baixo consumo de energia (abaixo de 1mA)
• 3 timers (2 de 8 bits e 1 de 16 bits)
• 2 pinos para captura, comparação e módulos PWM
• 8 canais analógicos para um AD de 10 bits
• Porta serial sincrona com SPI (master) e I2C(mater/slave)
• Porta serial universal (RS232 ou RS485) com buffer via
hardware (2 bytes)
• Porta paralela escrava de 8 bits
• Detector Brown-out
• 33 pinos de entrada/saída configuráveis
Programação – Daniel Corteletti – Aula 2 Página 4/6
Descrição dos pinos (muitos pinos possuem várias funções, não significando que as funções possam ser exercidas ao mes-
mo tempo):

1. MCLR : Master Clear – Quando em nível baixo (0V), 17. RC2 – Entrada / saída digital. CCP1 – Entrada de
define situação de RESET. Quando em nível alto captura 1, saída de comparador 1 ou PWM 1.
(5V), determina programa em execução. VPP : Ten- 18. RC3 – Entrada / saída digital. SCK/SCL – Entrada ou
são de programação – Quando este pino estiver em saída de sinal de clock serial síncrono para SPI e I2C.
13.4V, o microcontrolador entra em modo gravação, 19. RD0 – Entrada / saída digital. PSP0 – Pino 0 da porta
permitindo a transferência de um programa via ICSP paralela escrava.
2. RA0 – Entrada / saída digital. AN0 – Entrada analó- 20. RD1 – Entrada / saída digital. PSP1 – Pino 1 da porta
gica canal 0 para o ADC interno. paralela escrava.
3. RA1 – Entrada / saída digital. AN1 – Entrada analó- 21. RD2 – Entrada / saída digital. PSP2 – Pino 2 da porta
gica canal 1 para o ADC interno. paralela escrava.
4. RA2 – Entrada / saída digital. AN2 – Entrada analó- 22. RD3 – Entrada / saída digital. PSP3 – Pino 3 da porta
gica canal 2 para o ADC interno. Vref- - Uso do pino paralela escrava.
para definir a referência negativa para o conversor 23. RC4 – Entrada / saída digital. SDI – Entrada de dados
AD. em SPI. DAS – Entrada/saída de dados em modo I2C.
5. RA3 – Entrada / saída digital. AN3 – Entrada analó- 24. RC5 – Entrada / saída digital. SD0 – Saída de dados
gica canal 3 para o ADC interno. Vref+ - Uso do pi- SPI.
no para definir a referência positiva para o conver- 25. RC6 – Entrada / saída digital. TX – Pino para transmis-
sor AD. são serial assíncrona. CK – Clock para transmissão
6. RA4 – Entrada / saída digital. TOCKI – Contador síncrona.
rápido 26. RC7 – Entrada / saída digital. RX – Pino para recepção
7. RA5 – Entrada / saída digital. AN4 – Entrada analó- serial assíncrona. DT – Dados da serial síncrona.
gica canal 4. SS – Slave Select para porta serial 27. RD4 – Entrada / saída digital. PSP4 – Pino 4 da porta
síncrona paralela escrava.
8. RE0 – Entrada / saída digital. RD – Entrada de 28. RD5 – Entrada / saída digital. PSP5 – Pino 5 da porta
controle de leitura para porta paralela escrava. AN5 paralela escrava.
– Entrada analógica canal 5. 29. RD6 – Entrada / saída digital. PSP6 – Pino 6 da porta
9. RE1 – Entrada / saída digital. WR – Entrada de paralela escrava.
controle de gravação para porta paralela escrava. 30. RD7 – Entrada / saída digital. PSP7 – Pino 7 da porta
AN6 - Entrada analógica canal 6. paralela escrava.
10. RE2 – Entrada / saída digital. CS – “Chip Select” 31. VSS - Referência (0V / GND)
para porta paralela escrava. AN7 – Entrada analógi- 32. VDD – Tensão de alimentação (mesma que pino 11)
ca canal 7. 33. RB0 – Entrada / saída digital. INT – Entrada de sinal de
11. VDD – Alimentação (preferência 3V a 5V) interrupção via hardware.
12. VSS – Referência (0V / GND) 34. RB1 – Entrada / saída digital.
13. OSC1/CLKIN – Pino para ligação do circuito oscila- 35. RB2 - Entrada / saída digital.
dor externo (entrada). Usado em conjunto com o pi- 36. RB3 – Entrada / saída digital. PGM – Entrada de sinal
no OSC/CLKOUT. Recomendado usar cristal de 4 a para gravação em baixa tensão (5V)
20 MHz 37. RB4 – Entrada / saída digital.
14. OSC2/CLKOUT – Pino para ligação do circuito 38. RB5 – Entrada / saída digital.
oscilador externo (saída). 39. RB6 – Entrada / saída digital. PGC – Clock para pro-
15. RC0 – Entrada / saída digital. T1OSO – Saída do gramação ICSP ou pino para depuração.
oscilador do TIMER1. T1CKI – Entrada de clock pa- 40. RB7 – Entrada / saída digital. PGD – Dados para pro-
ra TIMER1. gramação ICSP ou pino para depuração.
16. RC1 – Entrada / saída digital. T1OSI – Entrada do
oscilador do TIMER1. CCP2 – Entrada de captura 2,
saída de comparador 2 ou PWM 2.

Glossário de termos relacionados ao microcontrolador PIC16F877


PORT : Agrupamento de pinos. Ex : PORT A : Pinos RA0 a RA5. PORT B : Pinos RB0 a RB7.
PWM : Modulação por largura de pulso. Permite simular uma saída analógica através de pulsos digitais rápidos e de tama-
nho regulável.
ADC : Conversor digital / analógico.
ICSP : Recurso de programação serial embutida, permitindo que um gravador seja construído com custo relativamente bai-
xo.
RAM : Memória de acesso aleatório, volátil e de alta velocidade de acesso.
ROM : Memória de programa, gravada quando se transfere o programa para o microcontrolador.
EEPROM : Memória fixa que pode ser gravada e apagada em tempo de execução.
SERIAL : Dispositivo de comunicação onde um bit é enviado de cada vez.
I2C : Padrão de comunicação serial desenvolvido pela PHILIPS.
SPI : Serial Peripheral Interface – Interface periférica serial : Padrão de comunicação serial que usa 4 fios.
Programação – Daniel Corteletti – Aula 2 Página 5/6

Diagrama de programação:
Passo 1 : Extração de requisitos – Levantar as
necessidades da automação junto ao cliente, aos
usuários do equipamento e as demais pessoas
envolvidas no processo de automação.

Passo 2 : Modelo de software – É a “planta


baixa” do programa. Define quais serão as estra-
tégias de programação que serão utilizadas. Para
programas mais simples, recomenda-se a cons-
trução de um fluxograma ou de um modelo gráfico
do programa. Para situações mais complexas, o
modelo deve prever a “quebra” do problema em
situações ou camadas mais simples, que podem
ser implementadas separadamente.

Passo 3 : Implementação – É a escrita do pro-


grama na linguagem de programação desejada
(no caso, linguagem C). Deve ser observado o
compilador a ser utilizado, bem como as variações
na sintaxe da linguagem de programação para a
ferramenta escolhida.

Passo 4 : Compilação – Ocorre a tradução da linguagem de programação para a linguagem nativa do microcontrolador.
Nesta etapa, parte dos erros (principalmente os erros de sintaxe) são detectados. Os erros de sintaxe são os erros causados
por erros de digitação ou uso incorreto de comandos.

Passo 5 : Transferência – Através de um programa específico, os dados contidos no arquivo HEX gerado pelo compilador
são transferidos para a memória ROM do microcontrolador.

Passo 6 : Testes – Aqui são descobertos os erros de lógica que podem ser gerados por um erro de digitação (pontuação
incorreta, comando inadequado, esquecimento de linhas, etc...). Esta etapa realimenta o processo, até que os testes efetua-
dos garantam a qualidade do programa criado.

Programas recomendados :
AMBIENTE ASSEMBLY : MPLAB / COMPILADOR C: CCS (PCW.EXE) / PROGRAMADOR : EPIC (EPICWIN.EXE)
Programação – Daniel Corteletti – Aula 2 Página 6/6

PARTES MAIS IMPORTANTES DO MICROCONTROLADOR PIC família 16

1) ACUMULADOR
Também conhecido por WORK REGISTER. É uma área de 8 bits
onde as informações são afetadas por um conjunto de instruções. É
onde o processamento ocorre na maioria dos casos.

2) REGISTRADORES (FILE REGISTERS)


São áreas de memória RAM que estão
ligadas ao funcionamento dos recursos e
periféricos do microcontrolador
No PIC16F877 a memória ROM é dividida
em 4 bancos de memória com 128 posições
cada, conforme tabela ao lado (extraída do
datasheet do microcontrolador em questão).

As áreas de memória marcadas como


GENERAL PURPOSE REGISTER são áreas de uso
geral (memória RAM livre).
Cada uma das demais posições possuem
uma função específica. Por exemplo, se gravarmos
informações na posição de memória 07h, na tabela
identificada como PORTC, estaremos acionando ou
desligando bits ligados aos pinos do PORTC.
Os registradores PORTA, PORTB, PORTC,
PORTD, PORTE (presentes no bank0) são usados
para acionar ou ler estados dos pinos.
Os registradores TRISA, TRISB, TRISC,
TRISD e TRISE (bank1) são usados para definir se os
pinos são de entrada ou saída digital de dados.
O registrador ADCON1 é utilizado para
configurar quantos e quais pinos serão entradas
analógicas.
O registrador STATUS possue alguns bits
que permitem modificar o BANK que pode ser
acessado pelas próximas instruções.

RESUMINDO

O processador do PIC é bastante simples em


termos de instruções, e cabe ao software agregar
complexidade usando estas instruções existentes.
O núcleo do microcontrolador pode mover
dados entre os registradores (F) e o registrador
principal (W), entre a ROM e o registrador principal.
Pode também acionar e desativar bits em quaisquer
uma das posições de memória.
Devido a sua simplicidade, somente uma
operação pode ser executada por vez (ciclo de
máquina).
Em condições normais de operação, cada
ciclo de máquina equivale a 4 ciclos de clock.
É possível também, através de registradores
especiais, se configurar, disparar, parar e controlar os
recursos periféricos do PIC, como PWM, Conversor
AD, contadores, timers, comunicação serial, etc...
Para conhecer mais sobre os procedimentos
de configuração e uso dos recursos do
microcontrolador em questão, utilize o DATASHEET do
mesmo, ou ainda algum livro sugerido na bibliografia
básica da disciplina.

Você também pode gostar