Download pdf - Apostila PIC LE RevA

Transcript
  • 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 "