ApostilaPIC

41
CFP Senai Nilo Peçanha Curso Técnico de Eletrônica 1 - Introdução a Família de Microcontroladores PIC. Diferentes dos processadores utilizados em aplicações como computadores pessoais e Workstations (estações de trabalho, os microcontroladores estão escondidos" dentro de uma aplicação onde o usuário esta concentrado em um nível mais alto de interação com o produto (como teclados, displays e seus comandos). É muito raro um usuário conhecer ou querer conhecer o Microcontrolador utilizado dentro do produto, o que não ocorre nos usuários de PC, que estão intimamente familiarizados não somente com o tipo de processador, mas também como seu clock, capacidade de memória etc. Tipicamente os microcontroladores se caracterizam por incorporarem internamente memórias de programa e dados, vários periféricos como timers, watchdog timers, comunicação serial, conversares Analógico Digital, geradores de PWM, etc Fazendo com que a aplicação final fique eternamente compacta. A Microchip é uma precursora no uso da tecnologia RISC em microprocessadores, o nome RISC é a abreviação de Reduced Instruction Set Computer em português, computador com conjunto reduzido de instruções. Diferente da arquitetura Von Neumann, a estrutura RISC é baseada na arquitetura HARWARD que possui um barramento para dados e outro para o programa e tem como característica tamanhos diferenciados ( por exemplo no PIC 16C5X o barramento de dados é de 8 bits, enquanto o de programas é de 12 Bits) o que significa que a instrução está "empacotada" em uma única palavra de programa ( no caso do PIC16C5X de 12 Bits ) que além de conter um opcode (instrução contém operandos (dados para a execução da instrução) . Com isso conseguimos compactar o código e executá-lo em alta velocidade. A Microchip oferece 3 (três) famílias de microcontroladores de 8 Bits que se adaptam aos mais variados projetos, Estas famílias são: PIC 16C5X Linha Base da família de 8 Bíts PIC 16CXX Linha Intermediária da família de $ Bits PIC 17CXX Topo de Linha da família de 8 Bits Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 1

Transcript of ApostilaPIC

Page 1: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

1 - Introdução a Família de Microcontroladores PIC.

Diferentes dos processadores utilizados em aplicações como computadores pessoais e Workstations (estações de trabalho, os microcontroladores estão escondidos" dentro de uma aplicação onde o usuário esta concentrado em um nível mais alto de interação com o produto (como teclados, displays e seus comandos).

É muito raro um usuário conhecer ou querer conhecer o Microcontrolador utilizado dentro do produto, o que não ocorre nos usuários de PC, que estão intimamente familiarizados não somente com o tipo de processador, mas também como seu clock, capacidade de memória etc.

Tipicamente os microcontroladores se caracterizam por incorporarem internamente memórias de programa e dados, vários periféricos como timers, watchdog timers, comunicação serial, conversares Analógico Digital, geradores de PWM, etc Fazendo com que a aplicação final fique eternamente compacta.

A Microchip é uma precursora no uso da tecnologia RISC em microprocessadores, o nome RISC é a abreviação de Reduced Instruction Set Computer em português, computador com conjunto reduzido de instruções.

Diferente da arquitetura Von Neumann, a estrutura RISC é baseada na arquitetura HARWARD que possui um barramento para dados e outro para o programa e tem como característica tamanhos diferenciados ( por exemplo no PIC 16C5X o barramento de dados é de 8 bits, enquanto o de programas é de 12 Bits) o que significa que a instrução está "empacotada" em uma única palavra de programa ( no caso do PIC16C5X de 12 Bits ) que além de conter um opcode (instrução contém operandos (dados para a execução da instrução) . Com isso conseguimos compactar o código e executá-lo em alta velocidade.

A Microchip oferece 3 (três) famílias de microcontroladores de 8 Bits que se adaptam aos mais variados projetos, Estas famílias são:

PIC 16C5X Linha Base da família de 8 Bíts PIC 16CXX Linha Intermediária da família de $ BitsPIC 17CXX Topo de Linha da família de 8 Bits

2- Características da Arquitetura RISC

O alto desempenho da família de microcontroladores PIC pode ser atribuída as seguintes características de arquitetura:

2. 1 - Arquitetura Harward

A arquitetura Harward utiliza dois barramentos diferentes para acessar instruções e dados. A memória é dividida em duas partes uma parte possui os opcodes do programa a ser executado ligado ao microprocessador central por um barramento, e outra parte da memória possui dados utilizados por este programa ligados ao mesmo microprocessador por outro barramento.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 1

Page 2: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

Cabe salientar que o Microprocessador é uma parte integrante do Microcontrolador que é composto de microprocessador memórias e dispositivos de I/0 e acessórios.Exemplo de Arquitetura Harward.

2. 1. 1 - Arquitetura Von Neumann

A arquitetura Von Neumann é a tradicional e utiliza a mesma área de memória para opcodes e dados, um exemplo típico deste sistema é o microprocessador Z80.Examinando a memória Eprom utilizada em conjunto com o microprocessador é encontrado o seguinte código0000 06 O5 06 Opcode carregar B com um número

05 número a ser carregado no registrador B0002 OE FF 0E Opcode carregar C com um número

FF número a ser carregado no registrador CExemplo de arquitetura Von Newman.

2.2- Cicio de instruções

A entrada de Clock do PIC (pino OSCI / CLKIN ) é internamente dividida por quatro para gerar quatro clocks em quadratura sem sobreposição nomeados Q1, Q2 ,Q3, Q4 Internamente, o contador de programa PC é incrementado em Q1, e a instrução é retirada da memória de programa e colocada no registrador de instruções em Q4. Ela é decodificada e executada durante o cicio seguinte de QI até Q4.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 2

Page 3: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

2.3- Fluxo de Instruções Pipeline.

Um ciclo de instrução consiste em 4 ciclos Q ( Q I, Q2, Q3, Q4 A busca e execução da instrução são feitas em linha, de tal forma que a busca leva um ciclo de instrução e a execução leva outro cicio. Contudo devido a característica de pipeline, cada instrução é executada efetivamente em um ciclo, pois simultaneamente ocorrem a execução de uma instrução e a busca a instrução seguinte. Se uma instrução causa a alteração do Contador de Programa então dois cicios são exigidos para completar a instrução.Na maioria dos microcontroladores, a busca a execução das instruções é feita seqüencialmente. A arquitetura de pipeline sobrepõe busca e execução, tomando possível a execução de instruções em apenas um cicio de máquina.. Qualquer instrução de desvio como GOTO, CALL ou escrever no PC leva dois ciclos de máquina.Exemplo de um trecho de programa com PIC.

Carregar o registrador W com o número 55 em hexadecimal Escrever o conteúdo de W no portb. Chamar a subrotina "escreve" Setar o Bit 3 do porta

movlw 55h (move para w o n.' 5rnovwf portb (move para o portb o conteúdo de w)call escreve (chama subrotina 'escreve)bsf porta,3 (seta o bit 3 do porta)end ( fim de Programa)

busca opc 1moviw 55h executa opc. 1 busca opc.2movwf portb executa opc.2 busca opc.3 (endereço da subrotina "escreve")call escreve executa 'escreve"

despreza busca opc.4bsf porta,3 executa opc.4 busca opc.5end

2.4- Palavra de instrução longaA arquitetura com barramentos separados para instruções e dados

permitem larguras de barramento diferentes, com isso o barramento de instruções é otimizado para uma palavra de comprimento única. O número de bits do barramento de instruções depende de quantas instruções são implementadas e do número de registradores disponíveis em cada família de Microcontrolador.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 3

Page 4: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

PIC 16C5X Instrução de 12 Bits

PIC 16CXX Instrução de 14 Bits

PIC 17CXX Instrução de 14 Bits

2.5- Conceito de Registrador-Arquivo

Todas as instruções aritméticas e booleanas são feitas através do registrador de trabalho W. O destino da operação pode ser o próprio registrador W ou um dos registradores disponíveis no Microcontrolador, dependendo unicamente da instrução executada.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 4

Page 5: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

2.6- Interrupções

Várias fontes de interrupções podem ser utilizadas de forma interna e externa empregando 4 vetores de interrupção, com prioridade entre as interrupções setadas por software, possibilitando ainda a habilitação individual ou global das interrupções.

Existe ainda o modo SLEEP ou modo de economia de energia que pode ser despertado através de uma das interrupções. O tempo de espera da interrupção é de 3 ciclos de instrução.

3- Arquitetura de Hardware da Família PIC 16FSXA família dos microcontroladores PIC apresenta uma grande variedade de

microcontroladores, o Microcontrolador empregado para estudo foi o PIC 16F84 por possuir características que se adaptam a maioria dos processos industriais, possuir amemória de programa em FLASH EPROM que permite gravar o Microcontrolador via software, além de ser muito semelhante com microcontroladores mais poderosos os quais diferenciam apenas em número de portos, temporizadores e alguns acessórios como conversar AID e PWM.Na figura abaixo está representado de forma simplificada a arquitetura internada família PIC 16F8X. Ela é baseada em registradores com o barramento de memória de dados separado do barramento de memória de programa (arquitetura RISC). Este conceito permite ter um conjunto de instruções simples mas extremamente poderoso que enfatiza as operações de Bit, Byte e de registradores

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 5

Page 6: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

3.1 Descrição da pinagem do PIC 16F8XNome do Pino Dip I/O/P/ Type Buffer DescriçãoOSC1/CLKin 16 I St/Cmos(3) Entrada do oscilador a cristal ou Entrada de clock externoOSC2/CLKOUT 15 O - Saída para o oscilador a cristal. No modo Rc o pino

CLKOUT gera ¼ da frequencia do OSC1.MCLR 4 I ST Entrada Master Clear (Reset) ou entrada da tensão de

programação. Este pino é ativo em nível baixo durante o Reset.

RA0RA1RA2RA3RA4/TOCK1

1718123

I/OI/OI/OI/OI/O

TTLTTLTTLTTLST

PORTA Porto Bidirecional de I/O.Caso seja selecionado a entrada de clock em TMRO como Contador ou Timer a saída é em configuração Open Drain.

RB0/INT

RB1RB2RB3RB4RB5RB6RB7

6

78910111213

I/O

I/OI/OI/OI/OI/OI/OI/O

TTL/ST(1)

TTLTTLTTLTTLTTLTTL/ST(2)

TTL/ST(2)

PORTB Porto Bidirecional de I/O.O Software pode programar internamente os resisteore de Pull-Upde todas as entradas.RBO/INT seleciona o pino de interrupção externa.

Pino de InterrupçãoPino de InterrupçãoPino de Interrupção / Serial ClockPino de Interrupção / Serial Data

Vss 5 P - Ground para lógica e pinos de I/O.VDD 14 P - Positivo para lógica e pinos de I/O

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 6

Page 7: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

Legenda:

1 = lnput O = output I/O = lnput / Output P = Power- = Não Usado TTL = TTL lnput ST = Shimitt Trigger

1) Este Buffer é com entrada do tipo Shimitt Trigger e é configurado em conjunto com as interrupções externas.

2) Este Buffer é com entrada do tipo Shimitt Trigger e é configurado em conjunto com a programação Serial do Microcontrolador.

3) Este Buffer é com entrada do tipo Shimitt Trigger e é configurado como o modo de oscilador do tipo RC e entrada de clock externo.

3.2- Características Gerais do Microcontrolador

1) 35 Instruções de programa2) CPU RISC de alta performance3) Memória Flash Eprom de Ikb4) Memória RAM de 68 Bytes5) Freqüência máxima de operação de 10MHz6) Velocidade de instrução de 400ns por ciclo.7) Instruções de 14 Bits8) Dados de 8 Bits9) Pilha com 8 níveis de profundidade10) Endereçamento direto e indireto11) Quatro fontes de interrupçãoPelo pino RBOANT Interrupção ExternaPelo Overflow do TMROPelo pino 7 ou pino 4 do PORTBPela escrita completa da EEPROM12) 1000 cicios de programar (apagar e escrever) a Flash Eprom13) 10.000.000 ciclos de apagar e escrever na EEPROM de dados de memória.14) Retenção de dados na EEPROM superior a 40 anos.

3.3- Características periféricas

1) 13 pinos de I/0 com controle individual2) Alta corrente de fonte e de absorçãoa) 25 mA de corrente máxima de absorçãob) 2OmA de corrente máxima de fonte

3) TMRO Timer de 8 Bits ou Contador de 8 Bits programado com prescaler.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 7

Page 8: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

3.4- Características especiais do Microcontrolador.Circuito de programação da Flash Eprom via 2 pinos.POR Power On ResetPWRT Power up TimerOST Oscilador Start-up Timer'WDT Watchdog TimerProteção de CódigoModo SLEEP de operaçãoVários tipos de oscilador de operação

3.5- Características da Flash EEPROMBaixo consumo e alta velocidadeTensão de trabalho de 2V a 6V2V 32 KHz 15uA5V 4MHz < 2mAEm modo SLEEP < 1 uA com 2V

3.6- Aspecto Externo

3.7- Interface de FOUm circuito equivalente de um pino de I/O é mostrado na figura abaixo.

Todos os pinos de I/0 podem ser usados tanto como entrada quanto saída. A sua direção é definida pêlos registradores de direção TRISA TRISB. Cada bit desses registradores correspondem a um pino de I/0 que quando setado correspondem a entrada e quando resetados correspondem a saída. Por exemplo se quisermos setar a PORTA com o nibble menos significativo como entrada e o mais significativo como saída, então ovalor a ser escrito em TRISA será 0000 1 1 1 1 em binário, ou OF em hexa.

Nota-se que, os dados de saída se mantém armazenados em um flip-flop independente do pino de I/O, que pode estar configurado como entrada ou saída. Esse dado se mantém nessa condição até que um novo dado seja escrito. Para o processo de leitura o dado tem que estar estabilizado e o pino configurado para entrada pois a entrada não é armazenada em flip-flops.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 8

Page 9: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

Devido a estas características o programador deve ter alguns cuidados quando usar instruções do tipo READ and WRITE Por exemplo uma instrução BSF seta o bit de um porto, digamos que é desejo setar o bit 5 do portb ao executar a instrução será primeiro lido os oito pinos do porto depois setado o bit desejado no caso o bit 5 e o resultado será escrito no portob, se outro pino de I/O é usado como bidirecional, e nesse instante estiver configurado para entrada o sinal presente na entrada será lido e novamente escrito sobre o dado que estivesse previamente escrito no latch de saída do pino de I/O. Se o pino for configurado como entrada não haverá nenhum problema mas se ele for configurado para saída o dado no latch de saída pode ser desconhecido.

O que o programador deve sempre ter em mente é não provocar um curto circuito na saída do pino de I/O, se o pino estiver conectado a GND e no latch de saída estiver setado para 1 se o pino de I/O for configurado como saída irá circular uma alta corrente superior ao que o porto pode fornecer e inevitavelmente danificará ocomponente.

4- Organização da Memória de Programa

A memória de programa varia em tamanho e organização. Nos membros dafamília PIC 16CX a memória de programa é dividida em páginas. Isso se deve a limitação de endereçamento direto dado pelo contador de programa (PC) que tem 9bits, e acessa apenas 512 Bytes por vez. Para endereçar as páginas superiores temos que setar alguns bits no registrador STATUS .

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 9

Page 10: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

Esse controle de paginação é de responsabilidade do programador que deve ter a atenção e o cuidado no seu uso para evitar problemas de programação.Outra característica importante a ser salientada é a impossibilidade de se ler diretamente a memória de programa, fato muito comum em outras arquiteturas quando se utilizam tabelas. Amaneira com que isso é feito na arquitetura do PIC é utilizando a instrução "RETLW" que será visto mais adiante.

O PIC 16FXX possui 13 bits de PC capaz de endereçar até 8K de memória de programa não necessitando que o programador cuide da página atual do programa isso éfeito automaticamente pelo Microcontrolador.

5- Organização da memória de dados.A memória de dados é composta de registradores, ou bytes de RAM. Os registradores são divididos em dois grupos funcionais. Registradores especiais e Registradores de uso geral.

Entre os registradores de funções especiais estão o TMRO, o contador de programa PC, o registrador de STATUS, os registradores de I/O dos ports PORTA e PORTB , e o registrador de seleção FSR. Além disso, os registradores de funções especiais são usados para controlar a configuração dos ports de I/O e as opções de pré escala.

Os registradores de uso geral são usados para dados e controle de informação sob o comando das instruções. Para o PIC 16F84 o arquivo de registradores é compostode 12 registradores de funções especiais e de 68 registradores de uso geral apartir do endereço C0 hexa. No endereço 07 há o espaço para a implementação do PORTC implementado no PIC 16C55

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 10

Page 11: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

6- Registradores de Funções Especiais.

6.1- INDEF Indirect Data Addressing Register.Registrador de endereçamento indireto é utilizado em conjunto com o

registrador FSR para realizar endereçamento indireto. Qualquer instrução usando o registrador INDEF acessa um dado cujo endereço esta contido no registrador FSR. Cabe salientar que o registrador INDF não é um registrador fisicamente alocado.

6.2- TMRO Real Time Clock Counter.Relógio de tempo real e contador, o seu conteúdo é sucessivamente

incrementado utilizando um "clock" que tanto pode ser interno (derivado do sistema de"clock" do Microcontrolador ) ou externo ( aplicado ao pino TOCK1 ). Pode-se utilizar uma pré divisão interna que permite ampliar a contagem.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 11

Page 12: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

6.3- PC Program Counter Contador de programa é o registrador que gera o endereço da memória de

programa. Normalmente é incrementado de uma unidade após a execução de uma instrução, com exceção das instruções que utilizam desvios tais como GOTO, CALL. Dependendo do tipo de dispositivo utilizado o contador de programa e seus níveis depilha terão de 9 a 14 bits de largura no caso do PIC 16F84 a largura do byte de instrução é de 14 bits.

O PC tem todos os bits setados durante o Reset. Durante a execução do programa ele é automaticamente incrementado juntamente com a execução da instrução a menos que o resultado da instrução altere-o.

A instrução GOTO permite a alteração dos 9 bits mais significativos do PC no caso do PIC 16F84 os 2 bits mais significativos do PC são carregados com os bits de seleção da página PA1 , e PA2 do registrador STATUS. Portanto a instrução GOTO permite saltos para qualquer posição de memória em qualquer página.

A instrução CALL carrega os 8 bits do PC diretamente (PC <7:0>), enquanto que o 9o bit é colocado em "0" o valor do PC incrementa de um e será colocado na pilha. Nos casos onde a memória de programa for maior do que 512 bytes os 2 bits mais significativos (PC < 10:9>), são carregados com os bits de seleção da página PA1 e PA2 do registrador STATUS respectivamente.

A instrução RETLW carrega o PC com o conteúdo do topo da pilha (TOS). Se o PC for registrador de destino de qualquer instrução ( MOVCWF PC, ADDWF PC, etc. )então o resultado computado em 8 bits será carregado nos 8 bits menos significativos do PC o 9 o bit será colocado em "0", Nos Casos onde a memória de programa for maiorque 512 bytes os 2 bits mais significativos (PC < 10:9>), são carregados com os bits de seleção da página PA1 e PA2 do registrador STATUS respectivamente.

Deve-se notar que por causa do 9 o bit do PC ser igual a "0" nas instruções CALL ou qualquer instrução que se escreve no PC, todas as subrotinas ou saltos computados estão limitados aos primeiros 256 bytes de qualquer página de memória.

O incremento do PC quando estiver posicionado no último endereço de uma página selecionada de memória é possível e irá causar ao programa continuar na próxima página. Contudo os bits de seleção da página do registrador STATUS não irão mudar, e a próxima instrução GOTO CALL ADDWF ou MOVWF PC irá retornar para a página anterior, a menos que os bits tenham sido atualizados.

6.4- STACKRegistrador de topo de pilha no PIC 16F84 a pilha é implementada em 8

níveis de profundidade. O empilhamento é feito quando é chamada uma subrotina utilizando a instrução CALL. O desempilhamento é feito utilizando a instrução RETLW. Deve-se ter sempre em mente na hora de programar que temos somente 8 níveis de empilhamento disponíveis. Portanto podemos chamar até 8 subrotinas em cascata simultaneamente caso contrário o programa se perderá.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 12

Page 13: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

O maior inconveniente de pilha reduzido está na família PIC 16C5X que possui STACK de apenas dois níveis de profundidade o que significa dizer que é permitido chamar até 2 subrotinas em cascata no máximo.

Outra característica que deve ser lembrada é que não é possível empilhar dados,prática comumente utilizada nos outros microprocessadores e microcontroladores.

6.5- STATUSÉ o registrador que possui as FLAGS que indicam os resultados de

operações da unidade lógica e aritmética. (ALU) , e os bits de pré seleção da página da memória de programa para memórias maiores do que 512 palavras. Os bits 0,1 e 2) indicam o estado de uma operação aritmética executada na ALU. Os bits PD# ( bit 3) e TO# (bit4) indicam o estado do Reset. OS Bits RP0 e RP1 (bit 5 e bit 6) são utilizados como bits auxiliares (A9 e AIO) para certas operações do PC como por exemplo CALL e GOTO para a família PIC 16C5X. Os bits TO# e PD# são somente para leitura, não são possíveis de serem escritos.

Registrador STATUS PIC 16F8X

Bit 7 "IRP"Registrador de seleção de banco no endereçamento indireto (INDEF).O = Bank 0 , 1 ( 00h - FFh)1 = Bank 2 , 3 (100h - 1FFh)

Bit 6-5 "RP1; RP0"Registrador para seleção do bank usado no endereçamento direto.00 = Bank 0 ( 00h - 7Fh)01 = Bank 1 ( 80h - FFh)10 = Bank 2 (100h - 17Fh)11 = Bank 3( 1 80h - 1FFh)

Estes bancos são de 128 bytes somente o bit RP0 é usado para o PIC 16F8X, RP1 permanece em nível baixo, pois a memória RAM do PIC 16F84 vai até 7Fh.

Bit 4 "TO"Time Out bit1 = Após o Power Up, ou instrução CLRWDT ou instrução SLEEP0 = WDT ocorreu

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 13

Page 14: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

Bit 3 "PD"Power Down bit1 = Após o Power up ou após a execução da instrução CLRWDT0 = Execução da instrução SLEEP

Bit 2 "Z"Zero bit1 = resultado da operação aritmética ou lógica foi zero0 = resultado da operação aritmética ou lógica foi um

Bit 1 "DC"Digito Carry 1 Borrow para instruções do tipo ADDWF ou ADDLW (Para BOROW a polaridade é inversa)1 = Ocorreu carry no 4o bit menos significativo0 = Não ocorreu carry no 4o bit menos significativo

Bit 0 "C"Carry / Borrow para instruções do tipo ADDWF ou ADDLW1 = Ocorreu carry no bit mais significativo0 = Não ocorreu carry no bit mais significativo

6.6- Registrador FSR e WF

O registrador INDF não é um registrador fisicamente alocado, pode ser acessado diretamente ou indiretamente através do registrador FSR. O endereçamento de INDEF endereça realmente o registrador cujo endereço está contido no registrador de seleção FSR. Este processo é chamado de endereçamento indireto.

Como exemplo:O registrador 05 contém o valor 10hO registrador 06 contém o valor OAhCarregando o valor de FSR com o valor de 05Carregando o valor de INDEF, será retornado o valor do conteúdo do registrador no caso 10h.Incrementando o valor de FSR e lendo INDEF o conteúdo de retorno é 0Ah Resumindo FSR indica o registrador e INDEF indica o conteúdo do registrador, adiferença do PIC para outros processadores é que os registradores não possuem nomes especiais e sim ocupam na realidade posições de memória previamente definidas.

6.7- Registrador OPTIONO Registrador OPTION possui 8 bits de largura e contem vários bits de

controle e configuração do TMRO WDT prescaler interrupções através do TMRO e resistores Pull-up do portb.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 14

Page 15: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0Bit 7 Bit 6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Bit 7 RBPU Habilita resistores Puli-up do portb1 = Resistores Pull-up desabilitados0 = Resistores Pull-up habilitados

Bit 8 INTEDG Seleção da borda de interrupção1 = Interrupção ligada na subida da borda do clock do pino RBO/INT0 = Interrupção ligada na descida da borda do clock do pino RBOINT

Bit 5 TOCS Seleção da fonte do clock do TMR01 = Transição do pino RA4/TOCKI0 = Clock do ciclo interno de instruções ( CLKOUT )

Bit 4 TOSE Seleção da borda de transição do TMRO1 = Incremento na transição de nível alto para baixo do pino RA4/TOCK10 = Incremento na transição de nível baixo para alto do pino RA4/TOCK1

Bit 3 PSA Direção do Prescaler1 = Prescaler conectado com WDT0 = PresUer conectado com TMR0

Bit 2 1 e 0 Seleção da escala do Prescaler

Valor do Bit TMR0 WDT0 0 0 1:2 1:10 0 1 1:4 1:20 1 0 1:8 1:40 1 1 1:16 1:81 0 0 1:32 1:161 0 1 1:64 1:321 1 0 1:128 1:641 1 1 1:256 1:128

6.8- Registradores de I/0Os registradores de I/0 podem ser escritos ou lidos sobre o controle do

programa como qualquer outro registrador. Na condição de Reset todos os I/0s são definidos como entrada assim como todos os registradores de I/0 ( TRISA, TRISB e TRISC) são configurados com 1.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 15

Page 16: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

6.8. 1- PORTAEste registrador corresponde ao PORTA do Microcontrolador, ele possui

somente 5 bits ( RA0 a RA4 ) onde os demais bits não são implementados e são lidos como zero. Cada bit desse port pode ser individualmente configurado como entrada ou saída.

6.8.2- PORTBEste registrador corresponde ao PORTB do Microcontrolador, ele possui 8

bits (RBO a RB7 ). Cada bit desse port pode ser individualmente configurado como entrada ou saída.

6.8.3- PORTCEsse registrador está implementado no PIC 16C55/57 e corresponde ao

PORT C do Microcontrolador ( RCO a RC7)

6.8.4- TRISA, TRISB E TRISCSão os registradores referentes a configuração dos pinos de I/0 são

somente de escrita e não podemos ler os dados neles armazenados. A escrita é executada utilizando os dados armazenados no registrador W e utilizando a instução "TRISf' (entenda-se"f" como o nome do porto A, B ou C ).

Exemplo de programa utilizando PIC 16f84Declarar o endereço do PORTA (05h)Declarar o endereço do PORTB (06h)Configurar o portb como saídaConfigurar os 2 primeiros bits do porta como entrada e o resto como saída

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 16

Page 17: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

6.9- Temporizador contador TMROO módulo temporizador contador(TMRO) tem as seguintes características:Temporizador contador de 8 BitsPode ser utilizado para leitura e escritaPré escala de 8 bits programável por softwareSeleção de clock interno ou externoSeleção do tipo de borda para clock externo

O modo temporizador é selecionado fazendo o bit TOCS = 0 (Timer O ChipSelect do registrador OPTION Bit 5 ). No modo temporizador, o modulo TMRO será incrementado a cada ciclo de máquina sem pré escala. Se um ciclo de escrita ocorrer em TMRO, o incremento será inibido pelos dois cicios de máquina seguintes. O usuário pode trabalhar com isso para ajustar o valor a ser temporizado.

O modo contador é selecionado fazendo o bit TOCS = 1 (Timer O Chip Select do registrador OPTION Bit 5 ).Nesse modo TMRO será incrementado a cada borda de subida ou descida do pino TOCKI. A borda responsável pelo incremento é determinada pelo bit TOSE. (Timer O Select Edge do registrador OFITION Bit 4 ). O bit TOSE =0 seleciona a borda de subida.

A pré escala é compartilhada entre o modulo TMRO e o Watch-dog Timer. A pré-escala é controlada no software pelo bit de controle PSA (Prescaler Assignament registrador OPTION Bit 3 ).

Quando o bit PSA = 0 a pré escala fica sob o controle do TMRO. A pré-escala é setada por software através dos bits PS2 PS0 (registrador OPTION Bit 2 ) com valores de seleção que variam de 1:2, 1.4 ... 1:256.

O uso da pré-escala pode ser para o WDT (Watch-Dog Timer ) ou para o TMRO(Timer / Counter), mas nunca simultâneo. Nada impede que na primeira fase do programa se utilize a pré escala para o WDT e na segunda fase para o TMRO. Por exemplo o WDT tem 18 ms de período sem pré escala, com pré escala de 128 o tempo sobe para 2,5 segundos.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 17

Page 18: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

7 - Características Especiais da CPU

7. 1 - Bits Especiais de ConfiguraçãoConsistem de 4 a 12 bits dependendo do tipo de PIC utilizado e que não

fazem parte da memória normal de armazenamento do programa. Eles são lidos e gravados utilizando-se um programador. Após serem habilitados não podem mais ser desabilitados pois funcionam como fusíveis internos.Habilita WDT (Watch-Dog Timer )Habilita proteção do código do programa ( impede que seja lido a programação interna do PIC)Definição da versão do oscilador ( 2 Bits )

Bit 13 : 4 Cp Código de proteção da memória de programa1 = Proteção de código desligada0 = Proteção de código ligada para toda a memória

Bit 3 PWRTE Habilitação do Timer após o Power-up1 = Timer desabilitado no Power-up 0 = Timer habilitado no Power-up

Bit 2 V;DTE Habilitação do Watch-Dog Timer1 = WDT habilitado0 = WDT desabilitado

Bit 1 e Bit 0 FOSC1 e FOSC0 Seletor do tipo de oscilador11 = RC Oscilador10 = XS Oscilador01 = XT Oscilador00 = LP Oscilador

7.2- Configurações do OsciladorO PIC 16F84 é preparado para operar com 4 tipos diferentes de oscilador,

através do programa de gravação do Microcontrolador é possível alterar os bits FOSC1 e FOSC2 para um dos 4 tipos de osciladorLP Cristal de baixa potênciaXT Cristal RessonadorHS Cristal Ressonador de Alta VelocidadeRC Resistor Capacitor

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 18

Page 19: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

7-3- Cristal cerâmico Ressonador operando no modo XT, LP ou HS.

Cabe salientar que valores elevados de capacitor podem levar o circuito a não oscilar pois aumentam o tempo de estabilização do oscilador.

7.4- Modo RCNeste modo de operação usamos um circuito RC para gerar a oscilação . Nestemodo não temos precisão dos valores de CLOCK, sendo mais usado nas aplicaçõesonde não é requerido rotinas de tempo baseadas no clock interno.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 19

Page 20: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

Utilizando Co = 33 pF e um trimpot de I0M a frequência de oscilação pode ser facilmente ajustada para 4 MHz, esta Freqüência é ajustada medindo no pino Fosc/4 a freqüência de 1 MHz.

8 - ResetO PIC pode ser resetado de varias formas diferentes.1) POR Power On ResetAo ligar o Nficrocontrolador é gerado um Reset através do pino MCLR, isto éconseguido facilmente ligando o pino MCLR ao Vdd + SV.2) MCLR durante operação normal3) MCLR durante o SLEEP4) WDT Reset pelo Watch-Dog Timer durante o modo normal de operação5) WDT Reset pelo Watch-Dog Timer durante o modo SLEEP

Circuito de Reset.

8. 1 - POWER-UP TIMER (PWRT)Ao Final do POR Power-on Reset o PIC aciona um sistema interno que

gera um delay de 72ms fixo para evitar que o Reset não seja corretamente executado principalmente por problemas de ruído ou demora na estabilização da fonte.8.2- Timer de partida do oscilador.

Quando utilizamos o modo ST, LP ou HS este timer é automaticamente acionado após o POR gerando além dos 72ms de atraso mais 1024 cicios de clock de espera para estabilização do clock.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 20

Page 21: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

9- Interrupções

As interrupções no PIC são habilitadas e sinalizadas pelo registro INTCON.Com exeção da interrupção de fim de escrita na EEPROM cujo bit sinalizador esta no registro EECOM1 todos os demais bits de controle de habilitação e sinalização estão no registro INTCOM.

GIE EEIE TOIE INTE RBIE TOIF INTF RB1FBIT 7 BIT 0

bit 7 GIE Habilitação global de interrupções1 = Habilita as interrupções que estejam individualmente selecionadas0 = Desabilita todas as interrupções

bit 6 EEIE Interrupção de fim de escrita na EEPROM1 = Habilita0 = Desabilita

bit 5 TOIE Interrupção Gerada pelo Overflow do TURO1 = Habilita0 = Desabilita

bit 4 INTE Interrupção externa pelo pino RBO/INT1 = Habilita0 = Desabilita

bit 3 RBIE Interrupção por mudanças no PORTB1 = Habilita0 = Desabilita

bit 2 TOIF Sinaliza interrupção pelo Overflow do TMRO(1)

1 = Ocorreu Overflow no TN1R00 = Ainda não ocorreu Overflow no TURO

bit1 INTF Sinaliza Interrupção externa no pino RBO/INT(1)

1 = Ocorreu um pedido de interrupção em RBO/INT0 = Não Ocorreu pedido de interrupção em RBO/INT

bit0 RBIF Sinaliza interrupção de mudanças no PORTB(1)

1 = Um ou mais bits de RB7 à RB4 mudou de estado.0 = Nenhum dos bits de RB7 à RB4 mudou de estado.(1) Devem ser zerados pelo software

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 21

Page 22: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

9. 1 - Princípio de atendimento a InterrupçõesAo aceitar interrupção a CPU faz GIE = O para inibir que outras

interrupções possam interromper a que já está sendo executada, salva no STACK o endereço de retomo ( a próxima após PC atual no caso PC + 1 ) e depois desvia para o endereço 004 da memória de programa.

Ao encontrar a instrução RETFIE (Return From Interrupt ) a CPU finaliza a interrupção em andamento, recupera o PC do STACK e faz novamente GIE = 1.

9.2- Fonte de InterrupçãoComo a interrupção sempre desvia o PC para o endereço 004 h o software

deve verificar nos bits de requisição de interrupções qual está setado, determinando a fonte da interrupção.Esses Bits são: RBIF, TOIF, EEIFOBS:

Mesmo com GIE = O os bits de sinalização de interrupção são setados no programa pela respectiva fonte de interrupção, é conveniente observar se já não esta sendo requisitada alguma interrupção antes de habilitar GIE.

9.3 Desabilitando InterrupçõesEm certas aplicações é necessário desabilítar temporariamente as

interrupções como na escrita na EEPROM.Se um pedido de interrupção for aceito no mesmo momento é possível que

a interrupção seja atendida e ao voltar desta a instrução RETFIE ira mudar o valor tornando GIE = 1 novamente. Assim pensamos que as interrupções estão desabilitadas mas na verdade foram reabilitadas pelo fim da interrupção que foi atendida.

Para assegurar que GIE = 0 deve-se fazer o teste do bit após o pedido de desabilitar interrupções.

EX: trecho de programa que testa se GIE = O

ezerobcf INTCOM,GIE ;zera o bit GIE do registro INTCOMbtfsc INTCOM,GIE ;Testa se realmente é zerogoto ezero

... ;continua o programa

9.4- Interrupção da EEPROMSempre que uma operação de escrita na EEPROM for finalizada o bit

EEIF(EECON1 Bit 4 ) será setado gerando o pedido de interrupção da EEPROM que será atendido se os bits EEIE E GIE = 1.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 22

Page 23: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

9.5- Interrupção do TMR0Ao ocorrer um Overflow, no registro do TMR0 o bit TOIF será setado e a

interrupção do timer será requisitado se TOIE = 1 e GIE = 1Cabe lembrar que o TMRO terá seu registro TMRO incrementado sempre

independente dos bits de controle quando usar um clock interno (fosc/4) não há controle para para o TMRO nesta forma de operação.

9.6- Interrupção de mudanças no PORTBUma mudança de estado nos bits de RB4 à RB7, ajustados como entrada,

vão pedir a CPU uma interrupção setando o Bit RBIF esta interrupção será atendida se RBIE = 1 e GIE = 1.

9. 7- Interrupção externa RBO/INTO pino RBO/INT ao invés de I/O digital pode ser usado como entrada de

sinal externo para interrupção.Sempre que INTE = 1 e GIE = 1 a variação de 1 para 0 (INTEDG = 1 ) ou

de 0 para 1 ( INTEDG = O ) neste pino fará INTF = 1 sinalizando o pedido de interrupção externa.

OBSO Hardware não reseta os bíts de pedido de interrupção INTF, RBIF, EEIF

eTOIF cabe ao usuário zerar os mesmos bits antes da instrução RETFIE. Antes de atender a uma interrupção é necessário salvar os registros que por ventura possam ser alterados pela rotina de interrupção principalmente o W e o STATUS.

1 O- WDT Watch-Dog TimerO Watch-Dog Timer é um Timer especial que roda livremente sem qualquerl

igação com o clock ou na dependência de sinais externos. O WDT funciona mesmo que o clock seja retirado do sistema.Se ocorrer um time out do WDT a CPU será resetada e se isto ocorrer durante o modo SLEEP a CPU retomará a operação normal, no endereço logo após a instrução SLEEP.

O WDT pode estar permanentemente ligado ou desligado, sendo esta opção ajustada com o fusível de programação WDTE.

A finalidade do WDT esta em recuperar a CPU de eventuais travamentos no programa, que podem ocorrer por interferências externas ou até mesmo de erros no software.

Se o WDT estiver habilitado devemos de tempos em tempo reseta-lo para que não ocorra um Reset indesejável na CPU, isto é possível com a instrução CLRWDT.

O período médio do WDT é de 18ms sem o uso de prescaler que pode chegar até aproximadamente 2 segundos ( usando prescaler de 1: 128 o tempo de WDT é 18 ms x 128 = 2,304s).As instruções que zeram o registro do WDT são o SLEEP e o CLRWDT.

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 23

Page 24: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

O uso do WDT com a interrupção é desaconselhado pois o programa pode estar travado e ainda assim estar atendendo a interrupções normalmente.11 – SLEEP

O modo SLEEP ou Power-Down, faz com que o chip entre em estado de economia de energia, este sistema é útil em sistemas alimentados a bateria. no modo SLEEP o chip consome aproximadamente 60 uA quando o normal é de 7mA em operação normal. Esta característica aliada aos resistores Pull-up do PORTB e a interrupção nas mudanças de estado permite o projeto de sistemas para funcionar abateria com longa duração.

Para entrar no modo de economia de energia basta executar a instrução SLEEP. Neste modo se o WDT estiver habilitado o mesmo será zerado e continuará rodando o bit PD que sinaliza o modo de Power-Down será zerado e o bit TO ( Time Out) será setado e o oscilador interno desligado, não gerando mais as fases de Ql à Q4 parando tanto a CPU como o TMRO.

Se uma escrita estiver ocorrendo na EEPROM esta será finalizada e após entrará no modo SLEEP.Para sair do estado de SLEEP existem 3 maneiras.

1) Reset pelo pino MCLR iniciando o processamento apartir do endereço 000h.2) Time Out do Watch-Dog.3) Interrupção externa do bit RBO/INT, interrupção por mudanças no portb4) Interrupção de fim de escrita na EEPROM.

As interrupções acima citadas, para tirarem a CPU do estado de SLEEP, precisam estar com os bits de requisição individual habilitadas embora GIE (Habilitador Global das Interrupções)não necessita estar habilitado.

Se GIE = 1 A instrução imediatamente após o SLEEP será executada e então a interrupção é atendida.

Se GIE = 0 A CPU volta a funcionar pela execução da instrução imediatamente após a instrução SLEEP, neste caso a instrução SLEEP funciona como uma subrotina que parou todo o CHIP.12- Software do PIC

O conjunto de instruções do PIC é formado por 36 instruções todas formadas por apenas uma palavra de 14 bits. Nesta palavra está o código da função a ser executada, além dos parâmetos necessários, como constantes, registros e bits. O conjunto destas instruções pode ser dividido em 3 tipos diferentes, operações de byte com registros, operações de bit com registros, operações com constantes e de controle.OBS:As seguintes convenções são adotadas pêlos compiladores assembier.f registro alocado nas posições de 0 a 7F (128 registros)w Registro Wb bit utilizado pela operação varia de 0 à 7k constante ou labeld destino do resultado

Se d = 0 o resultado é armazenado em WSe d = 1 o resultado é armazenado no f (file)

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 24

Page 25: ApostilaPIC

CFP Senai Nilo Peçanha Curso Técnico de Eletrônica

Conjunto de Instruções

1) Operações de byte com registros.

Instrução Operandos Descrição Ciclos Bits envolvidos

ADDWF f,d Soma W e f 1 CD,ZANDWF fd AND entre W e f 1 ZCLRF f Zera f 1 ZCLRW - Zera W 1 zCOMF f,d Complernenta f 1 ZDECF f,d Decrementa f 1 ZDECFSZ f,d Decrementa f e pula se f=0 1 (2) -INCF f,d Incrementa f 1 (2) ZINCFSZ f,d Incrementa f e pula se f = 0 1 -IORWF f,d OR entre W e f 1 ZMOVF f,d Move f 1 ZMOVWF f Move W para f 1 -NOP Nenhuma operaçãoRLF f,d Roda a esquerda pelo Carry 1 CRRF f,d Roda pela direita pelo Cany 1 CSUBWF f,d Subtrai W de f 1 C,CD,ZSWAPF f,d Troca nibles em f 1 -XORWF f,d XOR entre W e f 1 Z

Operações de bit com registros.

BCF f,b Zera bit "b" em f -BSF f,b Seta bit "b" em f -BTFSC f,b Testa bit "b" em f se zero pula 1 (2) -BTFSS f,b Testa bit "b" em f se um pula 1 (2) -

Operações com constantes e de controle.

ADDLW k Soma W com k 1 C,DCZANDLW k AND de W com k 1 ZCALL k Chamada de subrotina k 2 -CLRWDT Zera o Timer Watch-Dog 1 TO/PDGOTO k Desvia para o label k 1 -IORLW k Or entre W e k 1 Z MOVLW k W=k 1 -RETFIE k Retorno de interrupção 2 -RETURN Retorno de subrotina 2 -SLEEP Entra no modo SLEEP 1 TO/PDSUBLW k Subtrai k de W 1 C, DC, ZXORILW k XOR entre W e K 1 Z

Microprocessadores e Microcontroladores Prof. Antonio Cesar Branco 25