Considerações básicas sobre o PIC16F877A

Considerações básicas sobre o PIC16F877A

(Parte 3 de 5)

♦ Clock http://www.solbet.com.br Considerações básicas sobre o PIC16F877A 13

♦ Controle

A alimentação deve estar entre 2 e 6 volts, preferencialmente 5 volts para facilitar o interfaceamento com integrados da família lógica TTL. Os terminais 32 e 1 devem receber a tensão de alimentação e o terminais 31 e 12 devem ser ligado à terra do circuito. É sempre interessante, com qualquer tipo de circuito que gere ou receba pulso, desacoplar a alimentação com um pequeno capacitor de 0.01 microfarads, ligado o mais próximo possível do pino de alimentação.

OSC1/CLKIN13IEntrada para cristal externo (fonte de clock)

OSC2/CLKOU14OSaída para cristal externo

MCLR/VPP 1 I/PMaster Clear (reset) externo. Lógica baixa para reset

RA0/AN02I/OI/O digital bidirecional ou entrada analógica 0

RA1/AN13 I/O I/O digital bidirecional ou entrada analógica 1

RA2/AN2/VREF4I/O digital bidirecional ou entrada analógica 2 ou tensão de referência analógica negativa

RA3/AN3/VREF+5 I/O I/O digital bidirecional ou entrada

analógica 3 ou tensão de referência analógica positiva

RA4/T0CKI6 I/O I/O digital bidirecional ou entrada de

clock para contador TMR0

RA5/S/AN47 I/O I/O digital bidirecional ou entrada

analógica 4 ou slave select para a porta de comunicação serial síncrona

RB0/INT3 I/O I/O digital bidirecional ou entrada

para interrupção externa

RB134 I/O I/O digital bidirecional
RB235 I/O I/O digital bidirecional
RB3/PGM36 I/O I/O digital bidirecional ou entrada

para programação em baixa tensão

RB437 I/O I/O digital bidirecional
RB538 I/O I/O digital

bidirecional http://www.solbet.com.br Considerações básicas sobre o PIC16F877A 14

RB6/PGC 39 I/O I/O digital bidirecional ou clock da programação serial (ICSP)

RB7/PGD40 I/O I/O digital bidirecional ou dados da

programação serial (ICSP)

C0/T1OSO/15 I/O I/O digital bidirecional ou saída para

cristal esxterno para TMR1 ou entrada de T1CK1 clock para contador TMR1

RC1/T1OSI/16 I/O I/O digital bidirecional ou entrada
I/O paraCCP2 Capture

para cristal esxterno para TMR1 ou ,Compare,PWM 2

RC2/CCP117 I/O I/O digital bidirecional ou I/O para

Capture,Compare,PWM 1

RC3/SCK/SCL18 I/O I/O digital bidirecional ou entrada de

clock serial síncrono ou saida para os modos SPI e I2C

RC4/SDI/SDA23 I/O I/O digital bidirecional ou entrada de

dados SPI ou I/O de dados I2C

RC5/SDO24 I/O I/O digital bidirecional ou saída de

dados SPI

RC6/TX//CK25 I/O I/O digital bidirecional ou

Transmissão para comunicação USART assíncrona ou via de clock para para comunicação USART síncrona

RC7/RX/DT26 I/O I/O digital bidirecional ou Recepção

para comunicação USART assíncrona ou via de dados para para comunicação USART síncrona

RD0/PSP019 I/O I/O digital bidirecional ou Porta

paralela escrava

RD1/PSP120 I/O I/O digital bidirecional ou Porta

paralela escrava

RD2/PSP221 I/O I/O digital bidirecional ou Porta

paralela escrava

RD3/PSP32 I/O I/O digital bidirecional ou Porta

paralela escrava http://www.solbet.com.br Considerações básicas sobre o PIC16F877A 15

RD4/PSP4 27 I/O I/O digital bidirecional ou Porta paralela escrava

RD5/PSP528 I/O I/O digital bidirecional ou Porta

paralela escrava

RD6/PSP629 I/O I/O digital bidirecional ou Porta

paralela escrava

RD7/PSP730 I/O I/O digital bidirecional ou Porta

paralela escrava

RE0/RD/AN58 I/O I/O digital bidirecional ou Controle

de Leitura para a Porta paralela escrava ou entrada analógica 5

RE1/WR/AN69 I/O I/O digital bidirecional ou Controle de

Escrita para a Porta paralela escrava ou entrada analógica 6

RE2/CS/AN710 I/O I/O digital bidirecional ou Select

Control para a Porta paralela escrava ou entrada analógica 7

VSS12 31 P Referência TERRA
VDD1 32 P Alimentação Positiva (+5V)

Tabela 3.1 Descrição sucinta dos terminais do CI PIC16F877

O clock se utiliza dos terminais 13 e 14. São possíveis várias configurações de clock, todas elas descritas em detalhes mais adiante.

O terminal MCLR é uma entrada de controle com duas funções. Em primeiro lugar ele atua como reset do microcontrolador. Esta função é ativada quando o nível lógico deste terminal for feito igual a zero. A outra função é atuar como indicador de gravação da memória de programas. Para isto a tensão neste terminal deve ser feita igual a 13.5 volts. Para a operação normal este terminal deve ser mantido em cinco volts, ou na tensão de alimentação utilizada.

A descrição da estrutura interna do PIC16F877A As diferentes áreas de memória

O PIC possui três áreas de memória, a área de programas, a área de registros de arquivos e a EEPROM de dados.

O bloco com o nome “memória de programa”, é onde ficam residentes as instruções de programa do PIC16F877. Esta memória pode ser programada e alterada com pulsos elétricos, facilitando a experimentação com diversos programas. Se você já tem experiência com outros microcontroladores deve estar lembrado do ciclo grava_eprom-->coloca na placa do micro-->testa-- >apaga com ultravioleta , e assim sucessivamente. No caso das memórias EEPROM utilizadas no http://www.solbet.com.br Considerações básicas sobre o PIC16F877A 16

PIC16F877 este ciclo foi cortado substancialmente, pois tanto a gravação como modificação de programas podem ser feitos eletricamente, inclusive podendo-se efetuar estas operações sem necessidade de se retirar o microcontrolador do circuito. O espaço de memória de programas do PIC16F877 é de 1024 posições (1Kbyte), sendo que cada instrução possui 14 bits de comprimento. Os endereços de programa válidos no PIC16F877 variam de 0H a 3FFH.

É importante salientar que o único modo de se escrever na memória de programas é através de um dispositivo especialmente projetado para este fim. Não há possibilidade do próprio PIC escrever na sua área de memória de programas.

O segundo bloco de memória é o bloco correspondente aos registros de arquivos, “Register

File” Nesta área de memória ficam as informações que definem a forma de funcionamento do microcontrolador e também os dados do programa do usuário. O microcontrolador tem total acesso para escrever e ler nesta área.

Existem quatro bancos de memória para armazenar os registros. A tabela 3.1 apresenta uma descrição básica do espaço de memória de registros do PIC16F877. Observe que alguns registradores são duplicados em mais de banco de memória. Isto facilita a programação, visto que o acesso aos mesmos independe de conhecermos o banco atual em que estamos operando.

Você não precisa memorizar o endereço dos registradores. Para facilitar a vida do programador, normalmente todos os programas incluem um arquivo de definições, geralmente chamado de PIC16F877.INC , onde estão associados os nomes dos registros e os endereços correspondentes. Você só precisa se lembrar do nome do registro que deseja ler ou alterar.

A seleção de um determinado banco é feita através do registrador de status. Por exemplo:

Digamos que você precise alterar o valor de um bit do registrador TRISA. O endereço deste registrador é 05H no banco dois. Para alterá-lo você precisa primeiro selecionar o banco dois (veremos como se faz isto mais tarde), e então escrever no bit desejado do endereço cinco. O controle dos bancos é feito totalmente pelo seu programa, e você deve sempre tomar cuidado em qual banco está, principalmente no atendimento das rotinas de interrupt. Se você estiver programando em “C”esta preocupação normalmente é deixada para o compilador.

(Parte 3 de 5)

Comentários