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 encontrado em diversos encapsulamentos:
PDIP,
QFP,
PLCC
Este modelo (16F877) possui 40 pinos (veja imagem
ao lado para o encapsulamento PDIP), sendo que destes 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 (limitaçã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 tempo 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 serem 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, transformando 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 comunicaçã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ápida.
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)
PORTc (com 8 I/Os disponíveis)
PORTe (com 3 I/Os disponíveis)
PORTb (com 8 I/Os disponíveis)
PORTd (com 8 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 E0: _________________
PINO B7: _________________
PINO D6: _________________
PINO C2: _________________
PINO D2: _________________
Observações importantes:
A letra F (PIC16F877) identifica que o microcontrolador em questão utiliza a tecnologia 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 processamento 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)
2)
3)
4)
5)
Quem fabrica o microcontrolador PIC ?
Quantos pinos de I/O o modelo PIC16F877 possui ?
O modelo PIC16F877 só é oferecido na versão PDIP ?
Posso gravar e regravar um PIC quantas vezes eu quiser ?
Para onde um programa é enviado quando programamos um microcontrolador PIC ?
6) Um pino do microcontrolador pode acionar diretamente um motor elétrico
que consome 100mA ? Por que ?
Programação – Daniel Corteletti – Aula 2
Descrição detalhada do PIC16F877
Página 3/6
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 mesmo tempo):
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
MCLR : Master Clear – Quando em nível baixo (0V),
define situação de RESET. Quando em nível alto
(5V), determina programa em execução. VPP : Tensão de programação – Quando este pino estiver em
13.4V, o microcontrolador entra em modo gravação,
permitindo a transferência de um programa via ICSP
RA0 – Entrada / saída digital. AN0 – Entrada analógica canal 0 para o ADC interno.
RA1 – Entrada / saída digital. AN1 – Entrada analógica canal 1 para o ADC interno.
RA2 – Entrada / saída digital. AN2 – Entrada analógica canal 2 para o ADC interno. Vref- - Uso do pino
para definir a referência negativa para o conversor
AD.
RA3 – Entrada / saída digital. AN3 – Entrada analógica canal 3 para o ADC interno. Vref+ - Uso do pino para definir a referência positiva para o conversor AD.
RA4 – Entrada / saída digital. TOCKI – Contador
rápido
RA5 – Entrada / saída digital. AN4 – Entrada analógica canal 4. SS – Slave Select para porta serial
síncrona
RE0 – Entrada / saída digital. RD – Entrada de
controle de leitura para porta paralela escrava. AN5
– Entrada analógica canal 5.
RE1 – Entrada / saída digital. WR – Entrada de
controle de gravação para porta paralela escrava.
AN6 - Entrada analógica canal 6.
RE2 – Entrada / saída digital. CS – “Chip Select”
para porta paralela escrava. AN7 – Entrada analógica canal 7.
VDD – Alimentação (preferência 3V a 5V)
VSS – Referência (0V / GND)
OSC1/CLKIN – Pino para ligação do circuito oscilador externo (entrada). Usado em conjunto com o pino OSC/CLKOUT. Recomendado usar cristal de 4 a
20 MHz
OSC2/CLKOUT – Pino para ligação do circuito
oscilador externo (saída).
RC0 – Entrada / saída digital. T1OSO – Saída do
oscilador do TIMER1. T1CKI – Entrada de clock para TIMER1.
RC1 – Entrada / saída digital. T1OSI – Entrada do
oscilador do TIMER1. CCP2 – Entrada de captura 2,
saída de comparador 2 ou PWM 2.
17. RC2 – Entrada / saída digital. CCP1 – Entrada de
captura 1, saída de comparador 1 ou PWM 1.
18. RC3 – Entrada / saída digital. SCK/SCL – Entrada ou
saída de sinal de clock serial síncrono para SPI e I2C.
19. RD0 – Entrada / saída digital. PSP0 – Pino 0 da porta
paralela escrava.
20. RD1 – Entrada / saída digital. PSP1 – Pino 1 da porta
paralela escrava.
21. RD2 – Entrada / saída digital. PSP2 – Pino 2 da porta
paralela escrava.
22. RD3 – Entrada / saída digital. PSP3 – Pino 3 da porta
paralela escrava.
23. RC4 – Entrada / saída digital. SDI – Entrada de dados
em SPI. DAS – Entrada/saída de dados em modo I2C.
24. RC5 – Entrada / saída digital. SD0 – Saída de dados
SPI.
25. RC6 – Entrada / saída digital. TX – Pino para transmissão serial assíncrona. CK – Clock para transmissão
síncrona.
26. RC7 – Entrada / saída digital. RX – Pino para recepção
serial assíncrona. DT – Dados da serial síncrona.
27. RD4 – Entrada / saída digital. PSP4 – Pino 4 da porta
paralela escrava.
28. RD5 – Entrada / saída digital. PSP5 – Pino 5 da porta
paralela escrava.
29. RD6 – Entrada / saída digital. PSP6 – Pino 6 da porta
paralela escrava.
30. RD7 – Entrada / saída digital. PSP7 – Pino 7 da porta
paralela escrava.
31. VSS - Referência (0V / GND)
32. VDD – Tensão de alimentação (mesma que pino 11)
33. RB0 – Entrada / saída digital. INT – Entrada de sinal de
interrupção via hardware.
34. RB1 – Entrada / saída digital.
35. RB2 - Entrada / saída digital.
36. RB3 – Entrada / saída digital. PGM – Entrada de sinal
para gravação em baixa tensão (5V)
37. RB4 – Entrada / saída digital.
38. RB5 – Entrada / saída digital.
39. RB6 – Entrada / saída digital. PGC – Clock para programação ICSP ou pino para depuração.
40. RB7 – Entrada / saída digital. PGD – Dados para programação ICSP ou pino para depuração.
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 tamanho regulável.
ADC : Conversor digital / analógico.
ICSP : Recurso de programação serial embutida, permitindo que um gravador seja construído com custo relativamente baixo.
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 estratégias de programação que serão utilizadas. Para
programas mais simples, recomenda-se a construçã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 programa 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 efetuados 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
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.
Página 6/6
Download

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