5/27/2018 Apostila PIC LE RevA
1/123
E L.
R. Vereador Jos Eduardo da Costa, 169Santa Rita do Sapuca MG
CEP: 37540000+55 35 3471 6898.esto.com.br
5/27/2018 Apostila PIC LE RevA
2/123
E T
2M IC16F877A
Reiso Principais Autores Descrio da Verso Data de Trmino
1 Jos Domingos AdrianoReiso inicial para a noa ersodo kit
C 2008 E .
D B
E L
R. Vereador Jos Eduardo da Costa, 169Santa Rita do Sapuca MG
CEP: 37540000+55 35 3471 6898
.esto.com.br
5/27/2018 Apostila PIC LE RevA
3/123
E T
3M IC16F877A
Introduo .............................................................................................................................................. 6
1 CONCEITOS BSICOS ................................................................................................................ 71.1 Sistema Computacional .......................................................................................................... 7
1.1.1 Memrias........................................................................................................................... 8
1.1.2 Memria de programa ...................................................................................................... 8
1.1.3 Memria de Dados ............................................................................................................ 9
1.1.4 Barramentos ...................................................................................................................... 9
1.1.5 Dispositios de entrada e sada ....................................................................................... 10
1.1.6 Perifricos ........................................................................................................................ 13
1.1.7 CPU .................................................................................................................................. 14
1.2 Arquitetura Computacional ................................................................................................... 171.2.1 Arquitetura onNeumann .............................................................................................. 17
1.2.2 Arquitetura Harard ........................................................................................................ 18
2 O MICROCONTROLADOR PIC16F877A ................................................................................. 20
2.1 A Microchip .......................................................................................................................... 20
2.2 Microcontroladores PIC ........................................................................................................ 20
2.3 A Arquitetura do PIC16F877A ............................................................................................. 21
2.4 Gerao de clock ................................................................................................................... 222.4.1 Modos LP,XT e HS ............................................................................................................ 23
2.4.2 Modos RC......................................................................................................................... 25
2.4.3 Modo INTOSC .................................................................................................................. 26
2.4.4 Comparao entre os modos de oscilador ...................................................................... 26
2.4.5 Clock e eecuo das instrues ..................................................................................... 26
2.5 Memrias .............................................................................................................................. 272.5.1 Memria de programa .................................................................................................... 27
2.5.2 Memria de dados .......................................................................................................... 28
2.6 RESET .................................................................................................................................. 312.6.1 POR PoerOn Reset .................................................................................................... 31
2.6.2 PWRT Poerup Timer ................................................................................................. 31
2.6.3 OST Oscillator Startup Timer ....................................................................................... 31
2.6.4 BOR Bronout Reset ................................................................................................... 31
2.6.5 Seqncia de inicialiao ............................................................................................... 32
2.6.6 Identificao de Reset pelo Softare .............................................................................. 322.7 Watch-Dog Timer ................................................................................................................. 33
2.8 Modo de baixo consumo Modo SLEEP............................................................................. 33
5/27/2018 Apostila PIC LE RevA
4/123
E T
4M IC16F877A
2.9 Caractersticas especiais ....................................................................................................... 342.9.1 Proteo de Cdigo (Code Protect) ................................................................................. 34
2.9.2 Locais de Identificao (ID Locations) ............................................................................. 34
2.9.3 Pinagem e Hardare Bsico ............................................................................................ 34
2.10 Gravao ............................................................................................................................... 36
2.11 O conjunto de instrues do PIC16F877A ........................................................................... 372.11.1 Manipulao de Bte .................................................................................................. 39
2.11.2 Manipulao de bit ..................................................................................................... 40
2.11.3 Matemticas ............................................................................................................... 41
2.11.4 Lgicas ......................................................................................................................... 44
2.11.5 Testes .......................................................................................................................... 48
2.11.6 Chamadas e desio ...................................................................................................... 49
2.11.7 Controle ....................................................................................................................... 51
2.12 Programando em assembly ................................................................................................... 52
2.13 Estrutura do Programa .......................................................................................................... 53
2.14 Programao estruturada....................................................................................................... 56
3 PROGRAMANDO O PIC16F877A ............................................................................................. 58
3.1 Diretivas ................................................................................................................................ 58
3.2 Variveis ............................................................................................................................... 61
3.3 Sub-rotinas ............................................................................................................................ 623.3.1 Passagem de Parmetros ................................................................................................ 63
3.3.2 Chamada X Desio (CALL X GOTO) .................................................................................. 64
3.4 Atribuio ............................................................................................................................. 66
3.5 Entrada e Sada ..................................................................................................................... 67
3.6 Estruturas de Deciso ............................................................................................................ 68
3.7 Condies ............................................................................................................................. 69
3.8 Se .......................................................................................................................................... 71
3.9 Se seno ................................................................................................................................ 723.10 Se seno se ............................................................................................................................ 73
3.11 Caso ...................................................................................................................................... 75
3.12 Estruturas de repetio .......................................................................................................... 773.12.1 FaaEnquanto ............................................................................................................ 78
3.12.2 Enquanto ..................................................................................................................... 78
3.12.3 Para ............................................................................................................................. 79
3.13 Temporizao por software Rotinas de atraso ................................................................... 80
4 RECURSOS AVANADOS ......................................................................................................... 844.1 Display de cristal Lquido ..................................................................................................... 84
4.2 Teclado ................................................................................................................................. 87
5/27/2018 Apostila PIC LE RevA
5/123
E T
5M IC16F877A
4.3 Interrupes .......................................................................................................................... 894.3.1 Utiliao das Interrupes ............................................................................................. 92
4.3.2 Interrupo eterna em RB0 ........................................................................................... 96
4.3.3 Interrupo por mudana no portal B ............................................................................. 96
5 PERIFRICOS DO PIC16F877A .............................................................................................. 98
5.1 Timers ................................................................................................................................... 985.1.1 Timer 1 ............................................................................................................................. 98
5.1.2 Oscilador do timer 1 ...................................................................................................... 101
5.1.3 Interrupo .................................................................................................................... 101
5.2 Mdulo CCP ....................................................................................................................... 1015.2.1 Modo captura ................................................................................................................ 102
5.2.2 Modo comparao ........................................................................................................ 103
5.2.3 Modo PWM ................................................................................................................... 103
5.2.4 Interrupo .................................................................................................................... 106
5.3 Comunicao Serial ............................................................................................................ 1065.3.1 Comunicao Paralela ................................................................................................... 106
5.3.2 Comunicao serial ........................................................................................................ 107
5.3.3 EIA232C ........................................................................................................................ 109
5.3.4 A USART do PIC16F877A................................................................................................ 110
5.3.5 Transmisso ................................................................................................................... 112
5.3.6 Recepo ....................................................................................................................... 113
5.4 Conversor Analgico para digital ADC ........................................................................... 1145.4.1 Configurao e uso ........................................................................................................ 116
5.5 Memrias EEPROM e Flash ............................................................................................... 1185.5.1 Memria EEPROM ......................................................................................................... 118
5.5.2 Rotinas de acesso a EEPROM ........................................................................................ 119
5.5.3 Memria FLASH de programa ....................................................................................... 120
5.5.4 Rotinas de acesso a FLASH. ........................................................................................... 120
Apndices ............................................................................................................................................ 122
Apndice A Conjunto de Instrues do PIC16 ............................................................................. 122
Apndice B Mapeamento de memria de dados ........................................................................... 123
5/27/2018 Apostila PIC LE RevA
6/123
E T
6M IC16F877A
IntroduoEst apostila tem o objetio de serir como liro teto para um curso de microcontroladores PIC16.
Esse contedo foi preparado para ser usado em disciplinas de microcontrolador/microprocessadores
em cursos tcnicos ou superiores na rea de tecnologia.
Os prrequisitos para o bom aproeitamento do curso so conhecimentos bsicos de informtica,
eletrnica bsica, eletrnica digital bsica (principalmente memrias, contadores, portas lgicas e
flipflops ). Tambm recomendel para o bom andamento do curso que os alunos j tenham
freqentada alguma matria de programao (seja qual for a linguagem estudada).
O curso estruturado em 5 captulos que abordam o funcionamento do PIC16F877A, partindo de
conceitos mais gerais e especialiando a cada passo, at tratar rios dos perifricos.
O captulo inicial com os conceitos bsicos sobre microcontroladores e sistemas computacionais, e
tem o objetio de equaliar os prrequisitos sobre o assunto. Este captulo pode ser omitido, sem
qualquer prejuo no andamento do curso, caso esses conceitos j tenham sido estudados em outras
disciplinas.
O captulo 2 apresenta os microcontroladores PIC16 , tratando tanto de hardare como de
softare, alm de traer os fundamentos de programao em linguagem assembl. So discutidos
organiao de memria e funcionamento da CPU, alm das principais caractersticas destes
microcontroladores.
De posse dos conhecimentos do Captulo 2 feito um estudo mais aprofundado de tcnicas de
programao segundo os preceitos da programao estruturada e engenharia de softare. Vale
ressaltar a importncia dessa unidade, isto que ela isa formar as bases da lgica de programao eque o desenolimento com microcontroladores basicamente um desenolimento de softare.
O captulo 4 apresenta algumas aplicaes aanadas de programao, com displas LCD, teclados
matriciais e, principalmente, interrupes.
No ltimo captulo so apresentados alguns dos principais perifricos do PIC16F877A, tambm
encontrados em outros microcontroladores da famlia PIC16. Destes, so fundamentais os timers e
comunicao serial. Os demais podero ser sacrificadas ou resumidas, caso a carga horria no
suporte a totalidade do contedo, apesar de ser recomendado dar uma maior ateno ao conersor
analgico para digital.
5/27/2018 Apostila PIC LE RevA
7/123
E T
7M IC16F877A
1 CONCEITOS BSICOSInicialmente ser apresentado o conceito de microcontroladores de forma genrica, que
posteriormente ser estendido ao PIC16F877A e pode ser aplicado a qualquer outro
microcontrolador.
importante este embasamento terico no somente para garantir um melhor aproeitamento no
estudo do PIC 16F877A como tambm para tornar o leitor apto a entender o funcionamento de
outros microcontroladores, tanto da linha PIC como de outros fabricantes. Esses conhecimentos
tambm so importantes na escolha do microcontrolador a ser utiliado em um projeto, pois permite
estabelecer as bases conceituais para a comparao de suas caractersticas.
1.1 Sistema ComputacionalInicialmente deemos conceituar o que em a ser um . Os sistemas
computacionais so compostos por sistemas combinacionais e seqenciais. O que caracteria um
sistema computacional a possibilidade de ser programado.
Um sistema computacional composto por (parte fsica) e (programa). O
hardare dos sistemas computacionais, ao contrrio do que ocorre com sistema combinacionais e
seqenciais, no possui uma aplicao especfica. necessrio que eista um softare para ser
. Em contrapartida, um mesmo hardare pode eecutar uma infinidade de funes
diferentes, simplesmente alterando o seu softare.
Uma boa analogia imaginar o hardare como um instrumento musical e o softare como uma
partitura. Um piano por si s no fa nada, necessria uma msica que possa ser eecutada a fim
de se obter algum resultado. Da mesma forma que a msica contida na partitura, um programa sercomposto por um conjunto limitado de smbolos (no caso da partitura so as notas musicais e no
caso do programa so as ) que podem ser organiados de diersas formas diferentes,
obtendose diferentes resultados.
Como eemplo de sistema computacional, o primeiro que nos em em mente o computador
pessoal (PC), hoje to difundido. Contudo, eistem rios equipamentos, to ou mais comuns que os
PCs, que so sistemas computacionais. Por eemplo, os , os , as
calculadoras, s, etc. Alm disso, temos os microcontroladores, que so o objetio desse
nosso estudo, que esto presentes nas mais diersas aplicaes.
A estrutura de um sistema computacional como a apresentada no diagrama em blocos abaio
(Figura 1.1).
5/27/2018 Apostila PIC LE RevA
8/123
E T
8M IC16F877A
Figura 1.1 Diagrama em blocos genrico de um sistema computacional
1.1.1 MemriasMemrias so dispositios que armaenam informaes. No caso de um sistema computacional, essa
informao, assim como a memria, pode ser diidida em dois tipos: de programa e de dados.
Eistem tambm (btes de memria) com funes especiais que trabalham junto ao
processador (CPU).
1.1.2 Memria de programaSua funo armaenar o softare (programa) a ser eecutado no sistema. Tambm utiliada para
guardar tabelas de constantes
Eistem endereos de memria de programa eistem alguns com finalidade especfica, chamados
etores, que so endereos para onde o programa desia quando ocorrem determinados eentos.
Temos o , que o endereo pelo qual o programa comea a ser eecutado e o
, que para onde o programa desia quando ocorreu um pedido de interrupo
(trataremos desse conceito mais adiante).
De uma forma geral, a memria de programa uma memria no oltil. O tipo dessa memria pode
ser:
OM ( O M): somente de leitura. Geralmente chamada de maskedROM
(masked = mascarado), graada pelo fabricante do componente, o que em quantidades
muito grandes redu custos.
O (O ): programel somente uma e, utiliada em produo.
EOM (E O M) : apagel atras de lu ultra
ioleta. Utiliada no processo de desenolimento e algumas ees no produto acabado,quando h a necessidade de se poder alterar o softare.
C
(C)
D
M
D
E
Mundo
Eterno
Barramento deDados
5/27/2018 Apostila PIC LE RevA
9/123
E T
9M IC16F877A
F: uma memria eletricamente apagel (EEPROM Electrical Eresable Read Onl
Memor) com tempos de acesso para leitura rpido. Oferece uma grande fleibilidade,
pois geralmente possel reprogramar um equipamento sem troca de componentes.
Praticamente todos os microcontroladores j possuem internamente algum desses tipos de memria
de programa. Atualmente quase todos os microcontroladores possuem erses em memria Flash,
pois a mesma apresenta muitas antagens a um custo dos mais baios.
1.1.3 Memria de Dados a memria onde so armaenados os dados a serem processados pelo computador (as arieis
dos programas e outras informaes.). Como esses dados so constantemente alterados, a memria
utiliada para armaenalos do tipo RAM. Como se trata de uma memria oltil, quando a
alimentao cortada esses dados so perdidos.
Alguns microcontroladores disponibiliam tambm memrias EEPROM para armaenar dados queno deem ser perdidos com a falta de energia.
1.1.4 BarramentosAs rias partes de um sistema computacional (CPU, memrias, dispositios de entrada e sada) so
ligadas entre si atras de barramentos, ou ias, que so ligaes fsicas de comunicao paralela
entre os componentes. So eles:
Barramento de dados: pelo qual os dispositios de I/O e memrias trocam dados com o
processador
Barramento de endereos: permite ao processador enderear qual dispositio seracessado
Barramento de controle: indica se o acesso de leitura ou escrita, se feito a posio de
memria ou a I/O.
Barramento de programa: por onde o processador recebe as instrues que compe o
programa.
O tamanho do barramento de dados limita o tamanho de dados que trafegam pelo sistema. Por isso
comum classificar os sistemas computacionais pelo tamanho de seu barramento; temos ento
sistemas de 8 bits, 16 bits, 32bits, etc. Os microcontroladores so em sua maioria de 8 bits, apesar de
eistirem alguns modelos de 16 bits.
J o tamanho do barramento de endereos nos informa qual a quantidade mima de endereos de
memria ou dispositios de I/O e perifricos podem ser acessados. Por eemplo, um barramento de
endereos de 10 bits permite acessar 210 = 1024 endereos.
Todos os dispositios de um sistema computacional faem uso do barramento de dados para trafegar
informaes. Para que o sistema funcione corretamente podemos apresentar o processo de forma
simplificada assim: o processador (que coordena o processo) escree no barramento de endereos o
endereo do dispositio a ser acessado. Atras do barramento de controle ele informa ao
dispositio se o acesso de leitura ou escrita (a definio de leitura ou escrita de dispositios sempre feita pelo ponto de ista do processador). No caso de um aceso de leitura o dispositio escree no
5/27/2018 Apostila PIC LE RevA
10/123
E T
10M IC16F877A
barramento de dados e a informao lida pelo processador. No caso de um acesso de escrita, o
processador enia dados para o barramento de dados que so lidos pelo dispositio acessado.
Como dispositios de um sistema computacional usam o mesmo barramento de dados para trafegar
informaes preciso que, quando um dispositio estier escreendo no barramento (portanto
aplicando neis de tenso ao barramento) os demais dispositios no causem conflito de dados. Defato, todos os dispositios presentes em um sistema computacional so capaes de ficar em estado
de alta impedncia enquanto no forem acessados para leitura.
1.1.5 Dispositivos de entrada e sadaSo responseis por realiar a interface do processador com o mundo eterno. atras deles
que um sistema computacional adquire dados eternos e aciona processos. So comumente
chamados de I/O(I/O Entrada/Sada), I/O(no ingls,) ou
simplesmente .
A funo dos transferir ao mundo eterno um dado que esteja presente nobarramento de dados. Para isso so utiliados , pois permitem o carregar dados somente
quando so acionados, retendo esses dados independente de haerem alteraes em suas entradas.
Os deem permitir a transferncia de dados do mundo eterno para o
barramento de dados quando acionados e em alta impedncia no restante do tempo. Para tanto, so
tradicionalmente utiliados com sada para essa funo.
A seleo dos dispositios de I/O a partir do barramento de endereos feita por decodificadores
ligados ao barramento de endereos e seu acionamento feita atras do barramento de controle.
E 1.1
A 1.2, ,
, .
A . C (DEC),
.
O RD ( ), WR ( ) IORQ (I/O I/O)
.
P , .O
0. E ,
IORQ RD . A 1
, CPU.
5/27/2018 Apostila PIC LE RevA
11/123
E T
11M IC16F877A
F 1.2 P
P ,
.O
0. E
WR IORQ. N 1 AND E
, .
F 1.2 P
A funo do microcontrolador, como o prprio nome di, controlar processos e circuitos. Para
otimiar essa funo, seus portais de entrada e sada so tratados como registros de funes
especiais, ou seja, so lidos e escritos como se fossem simples btes de memria. Em sistemas como
microprocessadores geralmente o tratamento diferente, haendo instrues especficas para
acesso aos portais e outras implicaes, que diminuem a eficincia do cdigo gerado quando setrabalha intensamente com entrada e sada.
5/27/2018 Apostila PIC LE RevA
12/123
E T
12M IC16F877A
Para maior fleibilidade do sistema, geralmente os microcontroladores utiliam um sistema de
portais mais compleo que o apresentado acima, que permite que um mesmo terminal do
microcontrolador seja configurado como entrada ou sada. Para que isso seja possel utiliado um
registro de portal (PORT) e um registro de direo de dados (DDR Data Direction Register). Esse
ltimo permite selecionar a direo de cada bit de um portal de sada, indiidualmente. A figura 1.3a
e 1.3b abaio mostram o esquema genrico de um bit de portal do PIC16F877A. Outros
microcontroladores utiliam configuraes semelhantes.
F 1.3 E I/O
OPERAO DE ESCRITA OU SADA DE DADOS: ao acionar o controle WR PORT, o latch de sada (Data
Latch) armaena a informao complementar do barramento de dados em sua sada complementar
Q barra. Vamos admitir que o registro de direo de dados (TRIS Latch) foi carregado inicialmentecom o alor 0. O registro de direo de dados habilitado atras do controle WR TRIS e a
informao de direo fica armaenada em sua sada. Para Q=0 e Q barra=1 na sada do registro de
direo, o pino I/O estar configurado como sada e temse a transferncia da informao Q barra
do latch de sada para o drier do pino I/O conforme o arranjo das portas lgicas. Se este ltimo Q
barra =0 o transistor N ser cortado e P ser atiado permitindo que a tenso Vdd aparea no
pino I/O como nel lgico 1 que era a informao original do barramento de dados. Se Q barra =1
o transistor P ser cortado e N estar atio. A tenso no pino I/O cai para o nel Vss indicando
nel lgico 0.
5/27/2018 Apostila PIC LE RevA
13/123
E T
13M IC16F877A
Figura 1.3b Esquema tpico de um pino de I/O
OPERAO DE LEITURA OU ENTRADA DE DADOS: noamente admitamos que o registro de direofoi carregado inicialmente com o alor 1 em sua sada. Agora, o arranjo das portas lgicas permite
o corte simultneo dos dois transistores do drier configurando o pino I/O como entrada de dados.
Assim, o controle RD PORT habilita o latch de entrada e o buffer tristate, o que possibilita que a
informao do pino de I/O trafegue pelo barramento de dados. No restante do tempo o buffer fica
em alta impedncia.
Caso seja feita uma operao de escrita em um terminal configurado como entrada, o dado escrito
ser armaenado no latch de dados, mas no ser transferido para o terminal, pois o drier est
desatiado. Por outro lado, se for realiada uma operao de leitura em um terminal configurado
como sada, o alor lido ser o dado presente no terminal, que o mesmo escrito no latch de dadosanteriormente.
1.1.6 PerifricosAlm dos portais de I/O e as memrias, podemos ter muitos outros tipos de dispositios ligados ao
barramento de dados. Esses dispositios nada mais so do que circuitos destinados a realiar funes
especiais. Esses dispositios perifricos so particularmente importantes nos microcontroladores.
Como perifricos mais comuns podemos citar os temporiadores e contadores (Timers), os mdulos
de comunicao serial, conersores AD e DA, mdulos de CCP (Captura, comparao e PWM), driers
de LCD, comparadores analgicos, etc.
5/27/2018 Apostila PIC LE RevA
14/123
E T
14M IC16F877A
O modo de acesso aos perifricos semelhante ao de acesso aos portais de I/O. Eles muitas ees
possuem rios registros de parmetros que podem ser configurados, e um ou mais registros de
entrada e sada de dados.
Quando estiermos tratando dos perifricos do PIC16F877A mostraremos como trabalhar com eles
e, apesar de cada microcontrolador apresentar um conjunto de perifricos diferentes, seufuncionamento muito semelhante.
1.1.7 CPUA CPU (Central Processing Unit Unidade Central de Processamento) ou processador parte
principal de um sistema computacional. comum se referir CPU dos microcontroladores como core
(ncleo). Sua funo eecutar as instrues do programa e processar dados. Para tanto ela controla
todas as demais partes do sistema e enia ou recebe dados dessas partes. Ela tambm capa de
interpretar e colocar em eecuo as instrues que compe o programa e realiar operaes lgicas
e aritmticas.
Genericamente um processador organiado conforme o diagrama em blocos da figura 1.4.
F 1.4 D CPU
Os nomes de cada bloco esto em ingls no diagrama para facilitar a identificao desses blocos nos
manuais de microcontroladores e microprocessadores, que comumente so escritos nessa lngua. Os
blocos pontilhados podem ou no estar presentes. As ias em amarelo representam o barramento dedados interno do processador, que ligado ao barramento de dados do sistema. As ias em erde
so outras ias de dados e sinais de controle.
5/27/2018 Apostila PIC LE RevA
15/123
E T
15M IC16F877A
O principal bloco de um processador o (I D).
Voltando a analogia entre um sistema computacional e um instrumento musical, o decodificador de
instrues pode ser comparado ao msico, que age sobre o instrumento (hardare) eecutando a
msica (softare).
Esse bloco composto por um decodificador e um contador. Tal decodificador pode ser isto comoum liro de receitas culinrias. No liro, cada pgina contm uma receita e dentro de cada receita h
os passos para sua eecuo. De modo anlogo, cada do processador como o endereo
de uma pgina onde est a seqncias de acionamento dos sinais de controles (internos e eternos
ao processador) que permitem a eecuo da instruo. O contador eistente responsel por
faer com que os passos para a eecuo de uma instruo sejam eecutados em seqncia. Cada
modelo de processador possui um conjunto, ou , de instrues que pode eecutar.
O barramento de (I C) permite ao decodificador de instrues
controlar os blocos internos do processador, enquanto o barramento de (E
C) j foi discutido e tem a funo de indicar se o acesso de leitura ou escrita, se emmemria ou dispositios de I/O.
O programa armaenado na memria uma seqncia de instrues. Podemos ento supor que
para enderear corretamente essas instrues deeria haer um contador. Ele eiste e chamado
C ou C (P C). A cada instruo iniciada o PC incrementado.
Portanto ele aponta a prima instruo, isto , contm o endereo da prima instruo a ser
eecutada. A sada desse contador ligada a um registro (P A) que carregado ao
final de cada instruo com o endereo da prima instruo. A sada do registro Program Addressing
est ligada ao barramento de endereos da memria de programa.
Quando a CPU resetada, o PC automaticamente carregado com o alor do etor de reset. Durante
a eecuo do programa, um alor pode ser carregado no PC. Isso ocorre para desiar o fluo do
programa. Eistem instrues que realiam essa alterao de fluo, que pode ser de dois tipos:
desio ou chamada.
Quando ocorre um o contedo do PC alterado para que ele passe a eecutar o programa a
partir de outro ponto.
Na eecuo de uma o fluo do programa tambm desiado para um determinado ponto
para eecutar um trecho do programa, mas nesse caso ele dee retornar ao ponto do programa onde
ocorreu o desio (mais precisamente primeira instruo aps a instruo de chamada). Isso
permite eecutar uma , conceito que ser discutido quando tratarmos do softare.
Em uma chamada o dee ser armaenado em algum lugar, caso contrrio no
seria possel retornar ao ponto onde a chamada ocorreu. Esse lugar chamado de pilha (). O
nome pilha se dee a seu funcionamento, que semelhante a uma pilha de pratos: como pode haer
rias chamadas consecutias sem que haja retorno, os endereos de retorno so armaenados uns
sobre os outros. Quando ocorre uma (que o que fa o programa retornar da
chamada), o programa olta para o ltimo endereo guardado, e assim sucessiamente at que a
pilha esteja aia. A pilha ento uma poro de memria onde podem ser armaenados os
endereos de retorno.
5/27/2018 Apostila PIC LE RevA
16/123
E T
16M IC16F877A
Para indicar a prima posio lire na pilha eiste um registro (na erdade um contador) chamado
(S P) que aponta o topo. Esse registro incrementado cada e que um
noo endereo de retorno armaenado na pilha e decrementado quando ocorre um retorno.
Uma e determinado o endereo, seu contedo lido e armaenado em um registro chamado
(I R). Desse registro, parte da instruo ai para odecodificador de instrues e parte pode ir para a ALU e/ou parte para o registro de endereamento
de dados (D A). Para entender o porque disso, deemos ter em mente que uma
instruo nada mais que uma palara binria. Parte dela, que efetiamente a instruo, indica ao
decodificador de instrues qual a seqncia de aes dee ser eecutada (qual a pgina do
decodificador de instrues). O restante constitui os da instruo, ou seja, os dados a
serem processados. Esses dados podem ser constantes ou endereos de dados arieis na memria
RAM. Conforme sua naturea e a instruo a ser eecutada eles tem um destino ou outro.
A unidade ou AL (A L U) o circuito responsel pelos clculos
em um processador. Como prprio nome di, ela responsel pela realiao de operaes lgicas,(E, OU, OUeclusio, deslocamentos, rotaes, complemento), e aritmticas (incremento,
decremento, adio, subtrao, multiplicao, e diiso). Os processos de diiso e multiplicao so
feitos com a ALU utiliando seqncias somas e subtraes, o que efetiamente o que a ALU capa
de faer.
A ALU trabalha juntamente com dois registros especiais: o A(A) e o registro de
de operaes aritmticas (S). comum se referir ao acumulador simplesmente como
Acc ou, no caso dos PICs, como W (W Trabalhador ). O acumulador quase sempre est
enolido nas operaes realiadas pela ALU. Ele pode ser um dos operandos, pode ser onde se
armaena o resultado ou pode ser as duas coisas. H tambm microcontroladores onde qualquertransferncia de dados entre dois endereos da RAM passa pelo acumulador.
Quanto ao registro de status, sua funo indicar resultados noteis das operaes matemticas.
Esses resultados so indicados por , que so bits desse registro. Atras da anlise dos flags
possel saber, dentre outras coisas, se uma operao resultou em ero; se houe estouro da
capacidade de armaenamento (), que acontece quando um resultado maior que o
mimo alor possel de ser representado pelo sistema; se o resultado de uma operao aritimtica
negatio ou positio. Eiste uma interao do registro status com o decodificador de instrues,
pois atras da anlise de seus flags possel realiar instrues de testes.
Para acessar a memria de dados e os perifricos eiste um registro, que em nosso sistema
chamado de (D A) que pode receber alores de duas formas.
A primeira diretamente de parte da instruo. Nesse caso se est faendo referncia a endereos
da RAM conhecidos e fios, pois so carregados alores constantes eistentes no programa. Esse
modo chamado .
Em muitos casos necessrio faer referncias a endereos arieis. Isso feito carregando o
registro de endereamento com dados proenientes de um outro registro, o
(I A). Como qualquer outro registro, ele pode ser carregado
com um alor, constante ou proeniente de uma ariel, pode ser incrementado, decrementado ouparticipar que qualquer operao lgicoaritmtica. Sua funo semelhante a dos ponteiros em
linguagens de alto nel.
5/27/2018 Apostila PIC LE RevA
17/123
E T
17M IC16F877A
Todo o sistema computacional trabalha sincroniado com um mesmo sinal de . Deemos
lembrar que esse clock o que fa o decodificador de instrues passar de uma instruo para a
outra, e tudo o mais dee estar sincroniado com ele, seno haeria o caos. Para gerar esse sinal de
clock necessrio um oscilador. Nos microcontroladores esse oscilador j fa parte do componente
Independente da forma como o clock gerado, esse sinal aplicado a CPU e aos perifricos. comum que a freqncia do clock dos perifricos seja menor que a da CPU. Para tanto so utiliados
diisores de freqncia
Outro ponto importante o reset. Alm do reset que ocorre quando o sistema ligado, chamado de
P , os microcontroladores apresentam rias outras fontes de reset. Esses resets so
protees do sistema.
Sntese genrica de operao de uma CPU:
1) O iniciar um programa, o contador de programa aponta para o primeiro endereo na
memria de programa.2) Neste endereo comea o programa.3) O registrador de instruo armaena o dado guardado neste endereo. Este dado
composto da instruo e do operando. O operando pode ser proeniente da memria deprograma ou da memria RAM ( memria de dados ).
4) O decodificador de instruo recebe a instruo do registrador de instruo.5) A instruo corresponde a uma seqncia de passos programados em uma ROM, o chamado
microcdigo.6) Um contador dentro do decodificador de instruo arre essa seqncia de passos.7) O decodificador de instruo comea ento a acionar os dispositios dentro ou fora da CPU
atras dos barramentos de dados, controle e endereo.
8) A partir desse ponto os dispositios podem ser acionados nas mais diersas seqncias deoperao dependendo da necesidade de processamento imposta pelo cdigo, por eemplo:
O contador de programa aponta para o primo endereo de memria de programaonde pode estar o alor de uma instruo com operando. A memria de programa habilitada e esse alor passado do para a ALU atras do registro de instruo.
O contador de programa aponta para o primo endereo na memria de dados. Amemria de dados habilitada e o alor armaenado nesse endereo passa para oacumulador.
A ALU opera aritmeticamente esses dois dados, sinalia para o registrador de estadosqual foi e estado da operao e disponibia o resultado em sua sada.
Uma memria ou um dispositio de sada pode ser habilitado e o resultado serarmaenado em um desses dispositios.
Em resumo sempre ocorre um processo de BUSCA e EXECUO da instruo. A busca se
refere a localiao das instrues e dos operandos na memria e a eecuo se refere ao
acionamento de dispositios em seqncia para conseguir o resultado desejado.
1.2 Arquitetura Computacional
1.2.1 Arquitetura von-NeumannNa N, as memrias tanto de dados quanto de programa, so acessadas
usandose o mesmo barramento de dados; os portais de I/O tambm faem uso do barramento de
dados. Ou seja, a memria e os dispositios de I/O compartilham o mesmo barramento em
momentos distintos.
5/27/2018 Apostila PIC LE RevA
18/123
E T
18M IC16F877A
Vale lembrar aqui que uma instruo como uma operao matemtica, isto , composta de
, que indicam o que ser feito, e , que so os parmetros enolidos na
operao.Desta forma, o processo de eecuo de cada instruo diidido em dois momentos: a
leitura da instruo e a leitura dos operandos (fetch) e a eecuo da instruo propriamente dita.
Notase que dessa forma o processador est parte do tempo ocupado com a leitura da memria de
programa e, conseqentemente no fica eecutando o firmare o tempo todo. Outra caracterstica
da arquitetura onNeumann que, isto que os operandos das instrues so geralmente do
mesmo tamanho do barramento de dados, quanto mais complea a instruo maior ser a
quantidade de endereos ocupados por ela na memria. Isto quer dier que por eemplo, para um
barramento de 8 ias, uma instruo de 16 bits buscada e eecutada em duas partes de 8 bits. Por
outro lado, como a compleidade da instruo no tem limite a no ser o espao ocupado, podemos
ter um set de instrues to compleo quanto se queira.
Podemos concluir que arquitetura onNeumann consome muito tempo de processamento com a
leitura da instruo e dos operandos. Concluise tambm que instrues diferentes ocupam
quantidades diferentes de memria e so eecutadas em tempos diferentes.
F 1.5 A N
Os sistemas de arquitetura onNeumann geralmente tm conjuntos de instrues compleos, o que
equiale a dier que possuem um grande nmero de instrues e cada instruo realia uma grande
seqncia de aes. Processadores desse tipo so chamados CISC (C I S CPU CPU com Set de Instrues Compleo).
1.2.2 Arquitetura HarvardJ a arquitetura chamada de H, que utiliada nos microcontroladores PIC, tem
como principal caracterstica acessar a memria de dados separadamente da memria de programa.
A principal antagem dessa arquitetura que a leitura de instrues e de alguns tipos de operandos
pode ser feita ao mesmo tempo em que a eecuo das instrues (tempo Tc). Isso significa que o
sistema fica todo o tempo eecutando instrues, o que acarreta um significatio ganho de
elocidade. Enquanto uma instruo est sendo eecutada, a seguinte est sendo lida. Esse processo conhecido como(canaliao) e ilustrado pela figura 1.6 abaio.
Memria
CPU
I/O
Programa Dados
Barramento de
Dados
5/27/2018 Apostila PIC LE RevA
19/123
E T
19M IC16F877A
C
I/O
M
D
M
B
B
D
F 1.6 P
O barramento de programa no necessariamente tem o mesmo tamanho do barramento de dados.
Dessa forma, em uma nicada memria de programa pode conter operando e operadores, o
que nos permite carregar toda a instruo em um nico ciclo de leitura da memria.
F 1.7 A H
Podese notar ento que os tempos de eecuo e de leitura esto atrelados e so os menoresposseis. Isso acarreta em as instrues no poderem eecutar uma grande seqncia de aes, ou
seja, no eistem instrues compleas. Por isso, os PICs so considerados processadores RISC
(R I S CPU CPU com Set de Instrues Reduido). O nmero de instrues
reduido, o que no significa que no se possa eecutar programas compleos, mas sim que
seqncias compleas de aes deem ser construdas por seqncias de instrues bsicas.
5/27/2018 Apostila PIC LE RevA
20/123
E T
20M IC16F877A
2 O MICROCONTROLADOR PIC16F877A
2.1 A MicrochipO fabricante dos microcontroladores PIC a empresa americana Microchip. Atualmente ela um dos
maiores fabricante mundiais de microcontroladores de 8, 16 e 32 bits, alm de possuir uma amplalinha de memrias e componentes analgicos.
A Microchip trabalha com uma poltica de suporte ao cliente muito eficiente, que proaelmente
uma das causas de seu sucesso. Em seu site (.microchip.com) eiste uma grande quantidade de
informao disponel. Alm dos manuais dos componentes, eistem muitas notas de aplicao
(A N) e projetos de referncia, que so de grande ajuda para a formao da base de
conhecimentos do estudante de microcontroladores PIC.
2.2 Microcontroladores PIC
Os PICs so diididos em famlias. Cada famlia, ou plaforma, tem rios componentes, comtamanhos e recursos diferentes; no entanto o cdigo desenolido para um componente de uma
determinada famlia compatel com os demais componentes da mesma famlia, eceto por umas
poucas alteraes, que ser referem principalmente aos perifricos. Cada famlia tem seu prprio set
(conjunto) de instrues. Essas instrues so comandos em linguagem de programao assembl
que compe os softares graados nos microcontroladores, com as quais o aluno entrar em
contato mais adiante. Dessa forma, ao se estudar um componente especfico de uma famlia, se est
adquirindo conhecimento para trabalhar com microcontroladores de toda a famlia.
As famlias so se diidem ainda conforme o tamanho do barramento de bits, haendo
microcontroladores de 8, 16 e 32 bits.
As famlias de microcontroladores PIC so:
8 bitso Famlia PIC10o Famlia PIC12o Famlia PIC14 e PIC17o Famlia PIC16o Famlia PIC18
16 bits:
o Famlias PIC24F e PIC24Ho Familias dsPIC30F e dsPIC33F
32 bits
5/27/2018 Apostila PIC LE RevA
21/123
E T
21M IC16F877A
o PIC32o
Os componentes diferem entre si basicamente em:
Quantidade de memria RAM
Quantidade de memria EEPROM de dados (alguns no tm nada) Quantidade de memria Flash de programa
Nmero de pinos (8,14,18,28,40, ...)
Freqncia mima de clock
PerifricosNesse curso abordaremos o PIC16F877A, que um dos componentes mais completos da famlia
PIC16. Conforme foi dito anteriormente, ao se estudar um membro de uma famlia o estudante
tornase apto a trabalhar com toda a famlia.
2.3 A Arquitetura do PIC16F877A
A figura 1.1 apresenta o diagrama em blocos do PIC16F877A.
Tratase de um microcontrolador de 8 bits de arquitetura Harard. Seu barramento de programa de
14 bits. A estrutura do PIC16F877A semelhante ao sistema genrico estudado na aula 1. Seu
funcionamento e anlise tambm so semelhantes aquele sistema genrico consistindo nas etapas
de busca de instruo com habilitao e leitura de memria de programa e, eecuo da instruo
com decodificao da instruo e acionamento de dispositios em seqncia para o processamento
da atiidade programada. Podem ser obserados os barramentos de dados e de programa. Alm
disso, notase como operandos da ALU e de endereamento da memria de dados em diretamente
da memria de programa.
Tambm so dignos de nota os perifricos, localiados na parte inferior do diagrama, que esto
ligados ao barramento de dados.
5/27/2018 Apostila PIC LE RevA
22/123
E T
22M IC16F877A
F 2.1 D PIC16F877A
2.4 Gerao de clock
Os microcontroladores PIC possuem um circuito de oscilao interna, isto , so capaes de gerar seu
prprio clock (ou sinal de relgio) com acrscimo de poucos (ou nenhum) componentes eternos.
Eistem sete modos diferentes de clock, e cada componente da famlia utilia alguns deles. O modode clock para cada aplicao selecionado no momento da graao do microcontrolador e no
pode ser alterado pelo programa. So eles:
L: Cristal/Ressonador de baia freqncia e baio consumo (Lo Frequenc (Poer)
Crstal)
: Cristal/Ressonador (Crstal/Resonator);
H: Cristal/Ressonador de Alta Freqncia (High Speed Crstal/Resonator);
C: Oscilador RC Eterno (Eternal Resistor/Capacitor);
o Com sada de clock
o Sem sada de clock INOC (INC): Oscilador RC Interno de 4MH (Internal Resistor/Capacitor) Esse modo
no est presente no PIC16F877A, mas eiste em outros componentes da famlia PIC16;
5/27/2018 Apostila PIC LE RevA
23/123
E T
23M IC16F877A
o Com sada de clock
o Sem sada de clock
O.: resistores, indutores, capacitores e cristais podem ser combinados formando circuitos
osciladores em freqncias determinadas. Mais detalhes sobre os conceitos, funcionamento eprojeto desse tipo de circuito podem ser encontrados em liros de eletrnica com captulos sobre
osciladores.
2.4.1 Modos LP,XT e HS
Os modos LP, XT e HS utiliam um cristal ou ressonador cermico para estabiliar o clock. A diferena
est na faia de freqncia de cada modo e no consumo de energia associado a cada freqncia.
O consumo de energia em sistemas computacionais est diretamente relacionado com o a
freqncia de operao do sistema porque a dissipao de potncia (transformao de energiaeltrica em energia trmica) nos transistores que compem os circuitos integrador digitais se d nos
momentos de transio de baio para auto e de auto para baio. Assim, quanto mais transies por
unidade de tempo (ou seja, quanto maior a freqncia) maior a dissipao de energia e, portanto,
maior o consumo.
O L referese a cristal/ressonador cermico de baia freqncia. Esse modo trabalha com
freqncias de oscilao de at 200 kH e nele conseguimos o menor consumo dos trs modos em
questo.
O abrange as freqncias de 200 kH at 4 MH e apresenta um consumo mdio.
O H para freqncias de 4 a 20 MH e tem o mais alto consumo.
Cada faia de freqncia possui um ganho do circuito oscilador, que ajustado de forma diferente
para cada modo. recomendado que se use o modo adequado para cada freqncia, caso contrrio
pode ocorrer mau funcionamento do oscilador.
Alm do cristal ou do ressonador, nos modos LP, XT e HS, deem eistir capacitores ligados dos
terminais do cristal terra, conforme mostra a figura 2.2.
Os alores desses capacitores C1 e C2 so os indicados nas tabelas C S C
Oque se encontra nos manuais de cada PIC na seo que trata de configuraes do oscilador.
Para o PIC16F877A os alores so os apresentados na tabela 2.2. O alor de RF representa o ajuste
interno do oscilador para cada modo (XT, LP e HS). O resistor RS pode ser necessrio para alguns
tipos de corte de cristal, mas geralmente no usado. O Comando SLEEP desatia o oscilador no
modo de baio consumo, do qual trataremos mais adiante.
5/27/2018 Apostila PIC LE RevA
24/123
E T
24M IC16F877A
F 2.2 C O C/R
M O F C C C1 C2
L32 kH 33 pF
200 kH 15 pF
100 kH 47 a 68 pF
1 MH 15 pF
4 MH 15 pF
H
4 MH 15 pF
8 MH 15 a 33 pF
20 MH 15 a 33 pF
T 2.1 S
Capacitores maiores aumentam a estabilidade do oscilador, mas tambm aumenta o tempo de
partida.O o tempo necessrio para que o oscilador se estabilie,
pois a oscilao no ocorre de forma imediata assim que o circuito alimentado,conforme mostra a
figura2.3. Esse tempo depende de uma srie de fatores, alm dos capacitores, com temperatura,
tenso de alimentao e at capacitncias parasitas do laout da placa. Esse tempo dee ser
considerado pois o programa s ser iniciado (ou reiniciado, no caso do modo de baio consumo)
quando o oscilador se estabiliar.
5/27/2018 Apostila PIC LE RevA
25/123
E T
25M IC16F877A
Figura 2.3 Partida do oscilador
Tambm possel aplicar sinais de clock gerados eternamente, bastando para isso selecionar o
modo relatio a faia de sinal utiliado. Nesse caso o sinal dee ser aplicado ao pino OSC1/CLKIN e o
pino OSC2/CLKOUT dee permanecer em aberto.
2.4.2 Modos RCTambm possel trabalhar com osciladores RC (Resistor/Capacitor). Para isso utiliada a
montagem da figura 2.4 e selecionado o modo de oscilador como RC.
F 2.4 C RC.
O modo RC apresenta algumas limitaes: a freqncia de trabalho dependente de rios fatores
(alores de resistor e de capacitor, tenso de alimentao, temperatura) e apresenta pouca
estabilidade (tolerncia dos resistores e capacitores, ariao na tenso de alimentao, ariaes de
temperatura). Por eemplo, em uma produo em quantidade de produtos utiliando PICs no modoRC, a freqncia de cada produto pode ariar em funo da tolerncia dos resistores utiliados. No
possel garantir preciso em nada que se baseie em tempo no programa. Assim esse modo s
recomendado para aplicaes nas quais a freqncia no um fator crtico. Essa situao que
justifica a utiliao do modo, pois um oscilador RC tem custo menor que um a cristal.
O resistor REXT dee estar entre 3ke 100ke o capacitor CEXT dee ser superior a 20pF. O circuito
pode funcionar sem capacitor CEXT, mas nessa situao ele se torna muito suscetel a ariaes
drsticas de freqncia deido a capacitncias eternas (do prprio laout, por eemplo). Alm
disso, a ariao da freqncia maior para resistores maiores e capacitores menores.
5/27/2018 Apostila PIC LE RevA
26/123
E T
26M IC16F877A
No modo RC com sada de clock o terminal OSC2/CLKOUT apresenta a freqncia do oscilador diida
por quatro, que pode ser utiliado como fonte de clock para outros pontos do circuito. J no modo
sem sada de clock, esse terminal pode ser utiliado como I/O.
2.4.3 Modo INTOSCEsse modo de oscilador no est disponel no PIC16F877A, mas pode ser encontrado em outros
modelos de microcontroladores. No modo INTOSC (ou INTRC) no se necessita de nenhum outro
componente eterno. Portanto, alm da reduo de custos, ele libera terminais do microcontrolador
para serem utiliados como I/O.
Nesse modo, o sinal de clock obtido de forma semelhante ao funcionamento do modo RC, porm o
resistor e capacitor so implementados na prpria pastilha do componente. Deido a isso temos
geralmente uma ou duas freqncias de clock fias.
Tipicamente o oscilador interno menos preciso que o oscilador a cristal mais preciso que o
oscilador RC, com tolerncias entre +/ 1 e 10 %.
2.4.4 Comparao entre os modos de osciladorNa tabela 2.2 feita uma comparao entre os diferentes modos de oscilador.
Q T O
Cristal (HS, XT e HS) RC Eterno RC InternoPreciso Preciso Impreciso Pouco precisoEstabilidade Estel Instel Pouco EstelVariedade de freqncias Pequena Grande NenhumaCusto Alto Baio Nenhum
T 2.2 S
2.4.5 Clock e execuo das instruesCada instruo eecutado pelos microcontroladores PIC16 gasta 4 ciclos de clock, chamados ciclos
Q. Esses 4 ciclos compem um (TCY) que dura 4 ees mais que um ciclo Q ,
portanto um ciclo de instruo tem da freqncia do oscilador e o sinal desse ciclo maior
chamado de ou . Ou seja, o tempo de eecuo de cada
instruo e de 4 perodos de clock.
Em cada um dos ciclos Q realiada uma etapa da instruo, conforme mostrado na tabela 2.2.
Graficamente esse processo apresentado na figura 2.5.
C A
Q1 Ciclo de decodificao da instruoQ2 Ciclo de leitura de dadosQ3 Ciclo de processamentoQ4 Ciclo de escrita de dados
Tabela 1.2 Ciclos de execuo das instrues
5/27/2018 Apostila PIC LE RevA
27/123
E T
27M IC16F877A
F 2.5 C
Alguns perifricos e algumas funes do PIC no so sincroniados nem com o clock do oscilador
nem com o clock de perifricos, mas com os ciclos Q.
2.5 Memrias
2.5.1 Memria de programa
O PIC16F877A possui 8Kpalaras de memria de programa. J que se trata de um processador RISC,o tamanho das palaras da memria de programa maior que o barramento de dados. Assim, apesar
de ser um microcontrolador de 8 bits, a memria de programa composta por palaras de 14 bits.
Cada palara, isto , cada endereo de memria de programa guarda uma instruo. Dessa forma,
um programa de 500 instrues ocupar 500 btes.
O etor de reset o endereo 0000h. Como imos, isso significa que o programa dee ser escrito a
partir desse endereo. O etor de interrupo, para todas as interrupes o 0004h.
A memria do tipo FLASH, suportando um grande nmero de reescritas. possel, atras de
rotinas que trataremos em outro ponto do curso, realiar escrita na memria e programa.
Na estrutura das instrues de chamada e desio da famlia 16F o espao reserado para endereo
de 11 bits. Portanto possel enderear diretamente 2048 endereos de memria. Sendo que o
PIC16F877A tem 8k endereos de memria de programa, essa memria diidida em unidades que
chamaremos de . Dentro de uma mesma pgina possel realiar saltos e desios para
qualquer ponto. Mas se um salto ou desio ai de uma pgina para outra necessrio faer um
ajuste prio dos dois bits mais significatios do SFR PCLATH, conforme mostrado na tabela abaio.
PPCLATH
Bit 4 Bit 3
0 0 01 0 12 1 03 1 1
Tabela 2.3 Pginas de memria de programa
A figura 2.6 apresenta o mapemamento de memria de programa.
5/27/2018 Apostila PIC LE RevA
28/123
E T
28M IC16F877A
0000h Vetor de reset
0001h0002h Uso geral0003h
0004h Vetor de interrupo
0005h Pgina 0.. Uso geral.07FFh
0800h.
. Uso geral Pgina 1.0FFFh
1000h.. Uso geral Pgina 2.17FFh
1800h.. Uso geral Pgina 3
.1FFFh
F 1.6 M PIC16F877A
Os demais microcontroladores da famlia PIC16F seguem esse mesmo mapeamento de memria,
contudo nem todos os modelos tm 8kords, isto , alguns no tem todas as pginas
implementadas. Por eemplo, o PIC16F874A tem as pginas 0 e 1 mas no as 2 e 3, portanto tem 4k
ords; j o 16F628A tem 2kords, ou seja, somente a pgina 0.
2.5.2 Memria de dadosO core (ncleo ou processador do microcontrolador) da famlia PIC16 eistem 9 ias de
endereamento o que permite um acesso a 512 endereos diferentes (29 = 512). Contudo, nem
sempre temos memria RAM implementada para todos os endereos. A quantidade e a disposio
da RAM de dados aria de microcontrolador para microcontrolador.
No PIC16F877A eistem 368 btes de memria RAM de dados. Ela composta por registros de
funes especiais (SFR S F R) e a RAM de uso geral (GPR G P
RAM). Os SFR so responseis pelo controle da CPU e dos perifricos, alm de conterem os registros
dos portais. Na RAM de uso geral onde o programa armaenar suas arieis.
A memria RAM pode ser acessada de duas formas: por acesso direto e por acesso indireto. Acesso
direto ocorre quando o endereo acessado fa parte da prpria instruo ( um dos operandos). J oacesso indireto feito atras de duas arieis, uma contendo o endereo a ser acessado e a outra
5/27/2018 Apostila PIC LE RevA
29/123
E T
29M IC16F877A
se comportando como o bte acessado. Este ltimo modo de endereamento pode ser muito til em
algumas situaes e ser estudado mais adiante.
Para acesso direto, a RAM diidida em 4 bancos. Isso ocorre porque a capacidade de mima de
acesso de memria dos microcontroladores PIC de 512 btes. Portanto, so necessrios 9 bits paracompor os endereos. Como cada instruo tem apenas 14 bits, e esses bits deem ser diididos
entre operadores e operandos, no h espao para um endereo de 9 bits. Na erdade, as instrues
armaenam apenas 7 bits do endereo a ser acessado. Os dois bits restantes faem parte do registro
de funo especial STATUS e so chamados RP1 e RP0. J que dois bits podem gerar 4 combinaes,
eiste essa diiso em 4 bancos. Para acessar um registro em um banco diferente do banco atual,
necessrio ajustar preiamente RP1 e RP0. Na prtica utiliamos o mimo possel endereos do
banco 0, e mudamos para os demais bancos quando necessrio, retornando noamente ao banco 0.
A diiso de bancos feita conforme a tabela 1.3.
B RP1 RP0 E0 0 0 00h 7Fh1 0 1 80h FFh2 1 0 100h 17Fh3 1 1 180h 1FFh
T 1.4 S RAM
No caso do endereamento indireto, o endereo armaenado em um registro de funo especial
chamado FSR. Como tratase de um registro de 8 bits, falta 1 bit, que se chama IRP e fa parte do
STATUS. Quando IRP 0 so acessados os bancos 0 e 1, quando 1, so acessados os bancos 2 e 3.
Os registros de funes especiais tm seus nomes e os nomes de seus bits j definidos em umarquio. Eiste um arquio desses para cada PIC e a forma de inclulo no programa ser mostrado
mais adiante. Podemos ento tratar os SFR pelo seus nomes, no haendo a preocupao com o
endereo que eles ocupam. Tambm no necessrio saber qual bit de um registro tem
determinada funo, apenas o nome do mesmo. Na apresentao desses registros ser seguida a
coneno abaio, que a mesma utiliada no manual dos componentes.
Os bits so numerados de 0 a 7, da direita para a esquerda. O nome do registro aparece em baio.
Sobre cada bit temos algumas informaes: se ele pode ser lido (R) escrito (W), se no
implementado. Tambm contm sua situao aps o reset, podendo ser 0, 1 ou desconhecida ().
Por eemplo, sobre o bit RP0 est escrito R/W0, que significa que pode ser lido ou escrito e seu alor
no reset 0.
No aneo B encontrase o mapa de memria do PIC16F628A. Podese obserar os nomes dos SFR e
as regies de uso geral. Note que apesar de ser possel acessar 512 btes, foram implementados
apenas 224 btes. As posies no implementadas esto em cina na figura. Note ainda que osltimos 16 endereos de todos os bancos acessam os mesmos btes no banco 0.
R/W 0 R/W 0 R/W 0 R 1 R/W xR 1 R/W x R/W x
Bit 7 Bit 0
IRP RP1 RP0 NOT_TO NOT_PD Z DC C
A
5/27/2018 Apostila PIC LE RevA
30/123
E T
30M IC16F877A
A figura 1.7 trs o mapeamento de memria RAM do PIC16F877A com os nomes dos registros de
funo especial e as reas de uso geral (GPR). As regies em cina correspondem a endereos para os
quais no h memria implementada. No manual do PIC16F877A eiste um detalhamento maior dos
bits que compe os SPRs. A funo de rios desses registros ser eplicada no decorrer do curso.
T 1.7 M RAM
5/27/2018 Apostila PIC LE RevA
31/123
E T
31M IC16F877A
2.6 RESETO PIC possui rias fontes de reset (reinicialiao), que so:
Reset ao ligar (POR Poeron Reset);
Reset por MCLR durante operao normal;
Reset por MCLR no modo SLEEP (que ser tratado adiante); Reset por WatchDog durante operao normal;
Reset por WatchDog no modo SLEEP;
Reset por queda de alimentao (BOR BronOut Reset).
O reset por MCLR acionado quando ao terminal MCLR (pino 4) aplicado nel lgico baio. MCLR
o terminal de Reset do componente, sendo um terminal baio atio, isto , o reset ocorre em 0.
Alm disso, o terminal de MCLR possui internamente um filtro para eitar que rudos possam causar
reset acidental.
O modo como os registros se comportam em cada reset ariado. Para saber quais so os alores
iniciais de cada registro, dee ser consultada a tabela de situaes iniciais dos registros, presente no
manual de cada PIC.
A seguir so detalhadas algumas fontes e funcionalidades associadas ao reset.
2.6.1 POR Power-On ResetEssa funcionalidade detecta quando o circuito ligado, percebendo a subida da tenso de
alimentao, e realia o reset do microcontrolador. Dessa forma podemos dispensar o resistor e
capacitor tradicionalmente ligados ao terminal de reset para gerar um nel lgico baio quando o
sistema ligado, garantido assim o reset inicial. O terminal MCLR pode ser ligado diretamente ao
nel lgico alto sendo recomendado utiliar um resistor de 10 kligandoo VDD.
2.6.2 PWRT Power-up TimerTratase de um timer de aproimadamente 72ms que mantm o microcontrolador em condio de
reset durante esse tempo. til, pois permite ao sistema ter tempo de se estabiliar (tenso, reset
dos demais componentes, etc.) antes do programa comear a ser eecutado.
2.6.3 OST Oscillator Start-up Timer
Este timer conta 1024 ciclos lidos de clock antes de sair da condio de reset, permitindo assimque o oscilador se estabilie, conforme trato no tpico Modos LP, XT e HS. Essa funcionalidade
habilitada somente nos modos LP, XT e HS.
2.6.4 BOR Brown-out ResetEssa funcionalidade isa reiniciar o sistema se houer uma queda na tenso de alimentao.
O BOR ocorre quando a alimentao atinge aproimadamente 4V por mais de 100s (quedas por
tempo interalos menores que esse so ignorados pois podem se tratar de rudos na alimentao),
em situaes como as mostradas na figura2.8.
5/27/2018 Apostila PIC LE RevA
32/123
E T
32M IC16F877A
F 2.7 S B
2.6.5 Seqncia de inicializao1. O circuito ligado: a tenso de alimentao comea a subir;2. detectada a subida da tenso: ocorre POR;3. O sistema aguarda o tempo de PWRT (apro. 72 ms);4. O oscilador comea a funcionar: 1024 ciclos so contados (OST);5. O programa comea a ser efetiamente eecutado.
2.6.6 Identificao de Reset pelo SoftwareApesar de eistirem rias fontes de Reset, possel determinar qual reset ocorreu. Para isso
eistem 4 bits: NOT_TD e NOT_PD do registro STATUS e NOT_BOR e NOT_POR do registro PCON(Banco 1). As condies desses bits para cada reset podem ser istas na tabela 2.4.
C NOTPOR NOTBOR NOTTO NOTPD
Reset por Poeron 0 X 1 1Impossel 0 X 0 XImpossel 0 X 0Reset por Bronout 1 0 1 1Reset pelo Watchdog 1 1 0 1Dispertar pelo Watchdog 1 1 0 0Reset pelo MCLR em operao normal 1 1 U U
Reset pelo MCLR no modo SLEEP 1 1 1 0T 2.4 B
Essa informao pode ser til, permitindo que proidncias sejam tomadas em situaes especficas
de problema.
O esquema da figura 1.8 mostra como a lgica de reset.
5/27/2018 Apostila PIC LE RevA
33/123
E T
33M IC16F877A
F 2.8 L
2.7 Watch-Dog TimerEsse timer de 8 bits, que baseado em um oscilador RC interno prprio, independente de qualquer
outra coisa, gera um reset quando estoura. Ele importante em situaes em que, por qualquer
motio, o microcontrolador traa. Quando habilitado ele dee ser erado a interalos regulares
menores que seu tempo mimo pela instruo CLRWDT. Se o programa para e o WatchDog no erado, tendo sido habilitada essa funo na graao, ocorre o reset. Ao timer de 8 bits pode ser
atribudo um prescala, como ser isto mais adiante.
Essa funcionalidade muito til, pois, na grande maioria das situaes prticas, melhor que o
sistema reinicie do que fique inoperante. Desenolendo o cdigo adequadamente possel faer
com que o reset sequer tenha efeitos percepteis para o sistema.
O perodo do atchdog de 18 ms (tpico). Com prescala mima pode chegar a 2,3s.
2.8 Modo de baixo consumo Modo SLEEPO modo de baio consumo (P M), tambm chamado de LEE (sono, em
ingls), a situao de menor consumo do microcontrolador. Ele atiado pela eecuo da
instruo SLEEP. Nesse modo o oscilador desligado, faendo com que o microcontrolador pare
completamente a eecuo do programa. Dessa forma conseguimos reduir drasticamente o
consumo do sistema, o que importante sobretudo em sistemas alimentados por bateria.
O microcontrolador pode ser acordado por qualquer um dos eentos abaio:
Qualquer reset;
Estouro do WatchDog (se este estier habilitado);
Qualquer perifrico que estier com sua respectia interrupo habilitada (incluso INT einterrupo por mudana no Portal B).
5/27/2018 Apostila PIC LE RevA
34/123
E T
34M IC16F877A
Quando da ocorrncia de algum reset, o programa recomea sua eecuo no etor de reset
(0000h). Se, porm, ocorrer um estouro do WatchDog ou a chamada de alguma interrupo o
programa continua sua eecuo a partir do endereo imediatamente posterior a instruo SLEEP
que atiou o modo de baio consumo. E ainda, se o controle geral de interrupes estier habilitado,
o programa recomea pelo etor de interrupes (0004h) se desperto por interrupo. Assim, se
desejamos que uma interrupo simplesmente acorde o microcontrolador, deemos desabilitar
globalmente as interrupes.
Deese ter ateno ao fato de que no modo SLEEP o oscilador est desligado. Dessa forma no
podem ser utiliadas interrupes dos timers para a sada do modo, se estes timers utiliarem como
fonte de clock o oscilador interno, nem demais perifricos cujo funcionamento se baseie no oscilador
principal do sistema.
2.9 Caractersticas especiais
2.9.1 Proteo de Cdigo (Code Protect)O programa graado em um PIC pode ser protegido, isto , pode ser impedida a sua leitura. Essa
funcionalidade muito importante, sobretudo quando se trata de produo industrial, isto que
assim se podem preserar os direitos autorais do autor do firmare e dificultar a cpia de produtos.
2.9.2 Locais de Identificao (ID Locations)Eistem 4 endereos no acesseis pelo microcontrolador que podem ser utiliados para
identificao do componente (por eemplo, o nmero de srie do produto ou a erso do firmare).
2.9.3 Pinagem e Hardware BsicoComo j foi comentado anteriormente, o PIC16F877A um componente de 40 pinos, em seu
encapsulamento PDIP (P D I P Encapsulamento plstico em linha dupla). Esses
pinos podem ser diididos em terminais de alimentao, de reset, de coneo com o oscilador e os
terminais de portais e perifricos. Como se trata de um componente com diersas caractersticas e
um pequeno nmero de terminais, muitos terminais possuem mais de uma funo. Dessa forma,
temos terminais de entrada e sada dos portais multipleados com terminais dos perifricos, com
terminais do oscilador e terminais de reset. De uma forma geral, quando usamos um determinado
perifrico, o terminal associado a ele sere ao perifrico e sua funo de entrada e sada fica
desatiada. Quando o perifrico no utiliado, o terminal trabalha como I/O.
A figura abaio apresenta a pinagem do PIC 16F877A. Para facilitar a escrita, toda documentao da
Microchip quando se refere a um terminal no utilia a notao bit N do portal X, e sim RX N. Por
eemplo, o bit 2 do portal A representado por RA2, o bit 7 do portal C por RC7, e assim por diante.
5/27/2018 Apostila PIC LE RevA
35/123
E T
35M IC16F877A
F 2.1 P PIC 16F877A
As principais caractersticas do PIC so apresentadas na tabela abaio.
C V U
Frequncia de Operao 0 20 MH MHResets POR, BOR Memria de Programa (FLASH) 8k palaras de 14 bitsMemria de Dados (RAM) 368 btesMemria de Dados No Voltil (EEPROM) 256 btes
Interrupes 15Timers 3Mdulo CCP 2Mdulo SSP (SPI e I2C) 1Comparador analgico 2Comunicao Paralela PSPMdulo ADC de 10bits 8 canaisSet de Instrues 35 instrues
A tabela seguinte contm as caractersticas eltricas do PIC 16F877A.
C M M U
Temperatura de Trabalho 55 125 CVdd ( em relao Vss) 4 5,5 VMima Corrente de sada em Vss 300 mAMima Corrente de entrada em Vdd 250 mAMima Corrente drenada por I/O 25 mAMima Corrente de sada po I/O 25 mAMima Corrente drenada por PORTA + PORTB + PORTE 200 mAMima Corrente fornecida por PORTA + PORTB + PORTE 200 mAMima Corrente drenada por PORTC + PORTD 200 mA
Mima Corrente fornecida por PORTC + PORTD 200 mA
5/27/2018 Apostila PIC LE RevA
36/123
E T
36M IC16F877A
Os neis de tenso de entrada e sada para o PIC so apresentados na tabela abaio. Os alores so
considerndo que a alimentao de 5,0 V. O buffer de entrada de cada pino pode ser do tipo TTL
simples ou Schmitt Trigger. Para saber qual o tipo de buffer deese consultar a parte do manual de
cada componente relatio aos portais de I/O.
P T M M U
VIH TTL Vss 0,8 V
Schmitt Trigger Vss 1,0 V
VIH TTL 2,0 VDD V
Schmitt Trigger 4,0 VDD V
VOL 0,6 V
VOH 4,3 V
Como j foi discutido, um microcontrolador possui todos os componentes bsicos de um sistema
computacional em um nico chip. Assim o circuito bsico necessrio para um PIC funcionar
bastante reduido. necessrio somente :
A alimentao de +5V, bem regulada;
Como em todo circuito digital, um capacitor de desacoplamento de 100nF bem primo aosterminais de Vdd e Vss;
O terminal /MCLR o terminal de reset do PIC e baio atio. Por isso ele dee ser mantido em
nel lgico alto. Recomendase a ligalo a Vdd por um resistor (10k). No necessrio ocircuito RC de reset.
Definirse um esquema de clock conforme j tratado.
Um cuidado que dee ser tomado, independente do tipo de oscilador escolhido, faer com que os
componentes eternos do circuito oscilador fiquem bem primo uns dos outros e todos bemprimos ao microcontrolador. Alm disso, quando for confeccionada uma placa de circuito impresso
deese minimiar as indutncias e capacitncias parasitas. Isso feito aumentando a espessura das
trilhas, diminuindo seu comprimento e posicionando trilhas ecessiamente primas umas das
outras. Esses cuidados so fundamentais quando se trabalha com freqncias altas.
2.10 GravaoA graao do microcontrolador PIC pode ser realiada sem que o componente seja retirado da placa
(graao incircuit). Essa graao feita de forma serial utiliando somente dois pinos: PB7/PGD
para enio de dados e RB6/PGC para clock.
Alm dos pinos RB7 e RB6 necessrio que o pino MCLR/VPP receba uma tenso de 13VDC +/ 0,5V
durante o processo de graao. Tambm necessrio que o microcontrolador esteja deidamente
alimentado, portanto VDD e VSS deem estar deidamente conectados.
5/27/2018 Apostila PIC LE RevA
37/123
E T
37M IC16F877A
2.11 O conjunto de instrues do PIC16F877AO set de instrues de um microcontrolador o conjunto de todas as instrues que o processador
pode interpretar e eecutar. Voltando a analogia com um instrumento musical, so como as notas
musicais que o compositor usa para escreer uma partitura. Cada processador (ou core) possui seu
prprio conjunto de instrues (ou set de instrues). Isso significa que todos os microcontroladoresda linha PIC16 so capaes de eecutar o mesmo cdigo, ou seja, falam a mesma lngua. Significa
tambm que microcontroladores de outras famlias ou fabricantes no so compateis com o cdigo
gerado para PIC16 ou para outro conjunto de instrues (no falam a mesma lingua).
Cada instruo na erdade um cdigo numrico (chamado Opcode) que o decodificador de
instrues capa de interpretar e disparar uma seqncia de aes prdefinida. Por eemplo, uma
instruo de soma inicia um processo interno do microcontrolador que realia moimento de btes,
ajusta e realia operaes na unidade lgicoaritmtica, carrega resultados em endereos de
memria. Faendo uma analogia com um liro de culinria, o opcode indica a pgina onde esto os
passos para a realiao de uma receita.
Como criar uma lgica complea de programao usando apenas cdigos numricos seria um
trabalho muito desgastante e o resultado muito confuso foi criada uma linguagem simblica
que associa nomes, denominados mnemnicos, aos opcodes; por conenincia esses nomes
faem referncia a ao realia, como poder ser obserado breemente.
Para assembler o programa responsel por traduir o cdigo mnemnico (entendido pelo ser
humano) para um cdigo numrico composto de opcodes (entendido pelo core do
microcontrolador).
Antes de estudar as instrues deese definir alguns termos que sero utiliados na descrio dasinstrues e na apresentao de sua sintae:
AM (00007F)
A ( )
B
C 8
I
: 0 => A ()
1=>
C C
NOO B
NOD B D
O ( )
O , chamado no PIC de ou simplesmente , um registro interno do
microcontrolador, no mapeado em RAM, que est enolido na maioria das instrues. Como ser
isto, ele participa das instrues de moimentao e um dos operandos ou o destino do resultado
nas operaes lgico e matemticas.
Para maior compreenso do funcionamento das instrues se fa necessrio comentar o
funcionamento do registro de A. Os bits desse registro nos apresentam a situao do
5/27/2018 Apostila PIC LE RevA
38/123
E T
38M IC16F877A
microcontrolador a cada instruo. Esses bits so tipicamente chamados de (Bandeiras).
Atras deles podemos saber de resultados de operaes da ALU (se uma subtrao resultou em
ero, se uma soma causou oerflo, etc), a situao do RESET, alm do controle bancos de
memria.
IRP :bit de seleo de banco, usado para endereamento indireto.o 1 = Bancos 2 e 3 (100h 1FFh)o 0 = Bancos 0 e 1 (00h FFh)
RP1RP0 : bit de seleo de banco, usado para endereamento direto.
o 11 = Banco 3 (180h 1FFh )o 10 = Banco 2 (100h 17Fh )o 01 = Banco 1 (80h FFh )o 00 = Banco 0 (00h 7Fh )
NOT_TO: Bit indicador de Timeouto 1 = aps todos os Resets, eceto timeout do WDTo 0 = ocorreu um timeout do WDT
NOT_PD: Bit indicador de Poerdono 1 = quando ligado ou aps a instruo CLRWDTo 0 = pela eecuo de uma instruo SLEEP
Z: Bit indicador de ero
o 1 = se o resultado de uma operao da ALU eroo 0 = se o resultado de uma operao da ALU diferente de ero
DC: Carr/Borro de dgito. Para borro o sinal inersoo 1 = houe transporte do 4o. para o 5o. bito 0 = no houe transporte do 4o. para o 5o. bit
C: Carr/Borro . Para borro o sinal inersoo 1 = houe transporte do 8o. bito 0 = no houe transporte do 8o. bit
O conjunto de instrues do PIC16 composto de 35 instrues, apresentadas a seguir. O
campo Sintae mostra a forma de se escreer a instruo. O campo Operadores indica quais osoperadores enolidos e quais seus domnios. Operao apresenta a operao realiada pela
instruo. O campo Flags Afetados mostra quais flags de STATUS so afetados pela eecuo da
operao; essas alteraes so comentadas abaio dos quadros. No campo Ciclos est o nmero
de ciclos de mquina gastos para a eecuo da instruo. Finalmente, o campo Eemplo
apresenta um eemplo simples de utiliao da instruo.
As instrues so diididas, conforme sua funo, nos seguintes tipos:
Manipulao de bte
Manipulao e bit Matemticas
Lgicas
R/W 0 R/W 0 R/W 0 R 1 R/W xR/ 1 R/W x R/W x
Bit 7 Bit 0
IRP RP1 RP0 NOT_TO NOT_PD Z DC C
A
5/27/2018 Apostila PIC LE RevA
39/123
E T
39M IC16F877A
Testes e desios condicionais
Chamadas e desio (controle de fluo)
Controle (da CPU)
No aneo A eiste uma tabela resumo de todas as instrues. Recomendase tirar uma cpia desta
pagina e tela sempre mo para consulta rpida.
2.11.1 Manipulao de ByteAs instrues de manipulao de bte permitem atribuir alores a endereos da RAM e ao registro
W. importante ressaltar que apesar de normalmente o mnemnico dessas instrues traer a
palara moe (moer) o alor do registro na erdade copiado, isto , o registro de destino recebe o
alor do registro de origem, mas o alor da origem no alterado.
C
"Zera" o registro W. O bit Z do registro STATUS setado.
S CLRW
Operadores NenhumOperao (W)00hFlags Afetados ZCiclos 1Eemplo CLRW
Alteraes nas Flags: Como a instruo resultou em um registro se tornar 0, o bit Z setado
indicando esse eento.
CF
"Zera" o registro indicado por f. O bit Z do registro STATUS setado.
S CLRF
Operadores 0 f 127Operao (f)00hFlags Afetados ZCiclos 1Eemplo CLRF TEST
Alteraes nas Flags: Como a instruo resultou em um registro se tornar 0, o bit Z setado
indicando esse eento.
Moe a constante k para W.
S MOVLW
Operadores 0 k 255Operao (W)kFlags Afetados NenhumCiclos 1
Eemplo MOVLW 35h
5/27/2018 Apostila PIC LE RevA
40/123
E T
40M IC16F877A
F
Moe o alor do registro (f) para o destino. Se d 0 destino W; se d 1 o destino o prprio
registro (f). Moer o alor do registro para ele mesmo til para testarmos se o alor 0, uma e
que essa instruo afeta o bit Z do registro STATUS.
S MOVF ,
Operadores0 f 127d = 0 : Wd = 1 : registro f
Operao (d)(f)Flags Afetados ZCiclos 1Eemplo MOVF TEST,0
Alteraes nas Flags:
Z = 0: o alor moido, diferente de ero.Z = 1: o alor moido, 0.
F
Moe o contedo de W para o registro f.
S MOVWF
Operadores 0 f 127Operao (f)WFlags Afetados Nenhum
Ciclos 1Eemplo MOVWF TEST
2.11.2 Manipulao de bitAs operaes de manipulao de bit so uma particularidade dos microcontroladores e dificilmente
so encontradas em outros sistema computacionais. Sua funo permitir alterar o alor de um
nico bit de um determinado registro, sem qualquer influncia nos demais bits.
BCF
"Zera" o bit b do registro f.
S BCF ,
Operadores0 f 127
0 b 7Operao f[b]0Flags Afetados NenhumCiclos 1Eemplo BCF CONTROLE,5
5/27/2018 Apostila PIC LE RevA
41/123
E T
41M IC16F877A
BF
"Seta" o bit b do registro f.
S BSF ,
Operadores 0 f 1270 b 7
Operao f[b]1Flags Afetados NenhumCiclos 1Eemplo BSF CONTROLE,7
2.11.3 Matemticas
As instrues matemticas so capaes de realiar operaes matemticas bsicas atras da
operao da ALU do microcontrolador. Como tratase de um microcontrolador de 8 bits essas
operaes tem operadores e resultados de 8 bits. Para clculos com alores maiores de 8 bits dee
se desenoler rotinas faendo uso das instrues bsicas. Da mesma forma, operaes mais
compleas podem ser construdas a partir das rotinas bsicas. Essa raciocnio se aplica para
operaes de multiplicao e diiso, que no suportadas pela ALU do PIC16.
ADD
Realia a adio do alor contido em W com a constante k. O resultado armaenado em W.
S ADDLW
Operadores 0 k 255Operao (W)(W) + kFlags Afetados C, DC, ZCiclos 1Eemplo ADDLW 35h
Alteraes nas Flags:
C = 1: o resultado da adio maior que 255.
C = 0: o resultado da adio menor ou igual a que 255.
DC = 1: o resultado da adio causou o transporte de 4o para o 5o bit
DC = 0: o resultado da adio no causou o transporte de 4opara o 5obit
Z = 0: o resultado da adio diferente de ero.
Z = 1: o resultado da adio 0. Pode ocorrer com 128 + 128 = 256: C=1 e o resultado da adio
igual a 0.
ADDF
Realia a adio do alor contido em W com o alor do registro f. O resultado armaenado no
destino: d=0 para W ou d=1 para o registro f.
5/27/2018 Apostila PIC LE RevA
42/123
E T
42M IC16F877A
S ADDWF ,
Operadores0 f 127d = 0 : Wd = 1 : registro f
Operao (d)(W) + (f)
Flags Afetados C, DC,ZCiclos 1Eemplo ADDWF TEST,0
Alteraes nas Flags:
C = 1: o resultado da adio maior que 255.
C = 0: o resultado da adio menor ou igual a que 255.
DC = 1: o resultado da adio causou o transporte de 4o para o 5o bit
DC = 0: o resultado da adio no causou o transporte de 4o para o 5o bit
Z = 0: o resultado da adio diferente de 0.
Z = 1: o resultado da adio 0. Pode ocorre com 128 + 128 = 256: C=1 e o resultado da adio igual a 0.
DECF
Decrementa o alor contido no registro f. O resultado armaenado no destino: d=0 para W ou d=1
para o registro designado por f.
S DECF ,
Operadores0 f 127d = 0 : W
d = 1 : registro fOperao (d)(f) 1Flags Afetados ZCiclos 1Eemplo DECF COUNT,0
Alteraes nas Flags:
Z = 0: o resultado do decremento diferente de ero.
Z = 1: o resultado do decremento 0 (quando o alor original for igual a 1).
CF
Incrementa o alor contido no registro f. O resultado armaenado no destino: d=0 para W ou d=1
para o registro designado por f.
S INCF ,
Operadores0 f 127d = 0 : Wd = 1 : registro f
Operao (d)(f) + 1Flags Afetados Z
Ciclos 1Eemplo INCF COUNT,0
5/27/2018 Apostila PIC LE RevA
43/123
E T
43M IC16F877A
Alteraes nos Flags:
Z = 0: o resultado do incremento diferente de ero.
Z = 1: o resultado do incremento igual a 0 (quando o alor original for igual a 255).
B
O alor contido em W subtrado, pelo mtodo do complemento 2, da constante de oito bits k. O
Resultado armaenado em W.
S SUBLW
Operadores 0 k 255Operao (W)k (W)Flags Afetados C, DC, ZCiclos 1Eemplo SUBLW 23h
Alteraes nas Flags:
ATENO: nessa operao os bits C e DC tem significado inerso ao que seria esperado, isto ,
quando ocorre um borro ("estouro para menos"), os bits C e DC ficam em ero, ao contrrio que
quando ocorre um Carr ("estouro para mais"), quando C e DC ficam em 1.
C = 1: o resultado da subtrao maior ou igual a 0.
C = 0: o resultado da subtrao menor a 0.
DC = 1: o resultado da subtrao no causou o transporte de 5o para o 4o bit
DC = 0: o resultado da subtrao causou o transporte de 4o para o 5o bit
Z = 0: o resultado da subtrao diferente de ero.
Z = 1: o resultado da subtrao igual a 0.
BF
O alor contido em W subtrado, pelo mtodo do complemento 2, do alor contido no registro f. O
resultado armaenado no destino: d=0 para W ou d=1 para o registro designado por f.
S SUBWF ,
Operadores0 f 127d = 0 : Wd = 1 : registro f
Operao (W)(f) (W)Flags Afetados C, DC, ZCiclos 1Eemplo SUBWF TEST,0
Alteraes nas Flags:
ATENO: nessa operao os bits C e DC tm significado inerso ao que seria esperado, isto ,
quando ocorre um borro ("estouro para menos"), os bits C e DC ficam em ero, ao contrrio que
quando ocorre um Carr ("estouro para mais"), quando C e DC ficam em 1.
5/27/2018 Apostila PIC LE RevA
44/123
E T
44M IC16F877A
C = 1: o resultado da subtrao maior ou igual a 0.
C = 0: o resultado da subtrao menor a 0.
DC = 1: o resultado da subtrao no causou o transporte de 5o para o 4o bit.
DC = 0: o resultado da subtrao causou o transporte de 4o para o 5o bit.
Z = 0: o resultado da subtrao diferente de ero.
Z = 1: o resultado da subtrao igual a 0.
2.11.4 LgicasAssim como as instrues matemticas, as instrues lgicas realiam operaes lgicas bsicas
faendo uso da ALU.
AD
Realia uma operao lgica "E" entre o alor contido em W e a constante k. O resultado
armaenado em W.
S ANDLW
Operadores 0 k 255Operao (W)(W) E kFlags Afetados ZCiclos 1
Eemplo ANDLW 0FhAlteraes nas Flags:
Z = 0: o resultado da operao "E" diferente de ero.
Z = 1: o resultado da operao "E" igual a 0.
ADF
Realia a operao "E" entre o alor contido em W o alor contido no registro f. O resultado
armaenado no destino: 0 para W ou 1 para o registro designado por f.
S ANDWF ,
Operadores0 f 127d = 0 : Wd = 1 : registro f
Operao (d)(W) E (f)Flags Afetados ZCiclos 1Eemplo ANDWF TEST,1
Alteraes nas Flags:
Z = 0: o resultado da operao "