of 123/123
Exsto Tecnologia Kit de Microcontroladores PIC Apostila de microcontroladores PIC16 Exsto Tecnologia Ltda. R. Vereador José Eduardo da Costa, 169 Santa Rita do Sapucaí – MG CEP: 37540-000 +55 35 3471 6898 www.exsto.com.br

Apostila pic 16f877

  • View
    8.664

  • Download
    9

Embed Size (px)

DESCRIPTION

Apostila pic 16f877 completa 123 páginas produzida pela exsto tecnologia de santa rita do sapucaí-mg

Text of Apostila pic 16f877

  • 1. Exsto Tecnologia Kit de Microcontroladores PICApostila de microcontroladores PIC16Exsto Tecnologia Ltda. R. Vereador Jos Eduardo da Costa, 169 Santa Rita do Sapuca MG CEP: 37540-000 +55 35 3471 6898 www.exsto.com.br

2. Microcontroladores PIC16F877ARevisoPrincipais AutoresDescrio da Verso1Jos Domingos AdrianoData de TrminoReviso inicial para a nova verso do kit Copyright 2008 por Exsto Tecnologia Ltda. Todos os direitos reservadosDesenvolvido e produzido com orgulho no BrasilExsto Tecnologia Ltda R. Vereador Jos Eduardo da Costa, 169 Santa Rita do Sapuca MG CEP: 37540-000 +55 35 3471 6898 www.exsto.com.brExsto Tecnologia2 3. Microcontroladores PIC16F877ANDICEPGINAIntroduo .............................................................................................................................................. 6 1CONCEITOS BSICOS ................................................................................................................ 7 1.1 Sistema Computacional .......................................................................................................... 7 1.1.1 Memrias........................................................................................................................... 8 1.1.2Memria de programa ...................................................................................................... 81.1.3Memria de Dados ............................................................................................................ 91.1.4Barramentos ...................................................................................................................... 91.1.5Dispositivos de entrada e sada ....................................................................................... 101.1.6Perifricos ........................................................................................................................ 131.1.7CPU .................................................................................................................................. 141.2 Arquitetura Computacional................................................................................................... 17 1.2.1 Arquitetura von-Neumann .............................................................................................. 17 1.2.2 2Arquitetura Harvard ........................................................................................................ 18O MICROCONTROLADOR PIC16F877A ................................................................................. 20 2.1A Microchip .......................................................................................................................... 202.2Microcontroladores PIC ........................................................................................................ 202.3A Arquitetura do PIC16F877A ............................................................................................. 212.4 Gerao de clock................................................................................................................... 22 2.4.1 Modos LP,XT e HS ............................................................................................................ 23 2.4.2Modos RC......................................................................................................................... 252.4.3Modo INTOSC .................................................................................................................. 262.4.4Comparao entre os modos de oscilador ...................................................................... 262.4.5Clock e execuo das instrues ..................................................................................... 262.5 Memrias .............................................................................................................................. 27 2.5.1 Memria de programa .................................................................................................... 27 2.5.2Memria de dados .......................................................................................................... 282.6 RESET .................................................................................................................................. 31 2.6.1 POR Power-On Reset .................................................................................................... 31 2.6.2PWRT Power-up Timer ................................................................................................. 312.6.3OST Oscillator Start-up Timer ....................................................................................... 312.6.4BOR Brown-out Reset ................................................................................................... 312.6.5Seqncia de inicializao ............................................................................................... 322.6.6Identificao de Reset pelo Software .............................................................................. 322.7Watch-Dog Timer ................................................................................................................. 332.8Modo de baixo consumo Modo SLEEP............................................................................. 33 Exsto Tecnologia3 4. Microcontroladores PIC16F877A2.9 Caractersticas especiais ....................................................................................................... 34 2.9.1 Proteo de Cdigo (Code Protect) ................................................................................. 34 2.9.2Locais de Identificao (ID Locations) ............................................................................. 342.9.3Pinagem e Hardware Bsico ............................................................................................ 342.10Gravao ............................................................................................................................... 362.11 O conjunto de instrues do PIC16F877A ........................................................................... 37 2.11.1 Manipulao de Byte .................................................................................................. 39 2.11.2Manipulao de bit ..................................................................................................... 402.11.3Matemticas ............................................................................................................... 412.11.4Lgicas ......................................................................................................................... 442.11.5Testes .......................................................................................................................... 482.11.6Chamadas e desvio...................................................................................................... 492.11.7Controle....................................................................................................................... 512.12 2.13Estrutura do Programa .......................................................................................................... 532.14 3Programando em assembly ................................................................................................... 52 Programao estruturada....................................................................................................... 56PROGRAMANDO O PIC16F877A ............................................................................................. 58 3.1Diretivas ................................................................................................................................ 583.2Variveis ............................................................................................................................... 613.3 Sub-rotinas ............................................................................................................................ 62 3.3.1 Passagem de Parmetros ................................................................................................ 63 3.3.2Chamada X Desvio (CALL X GOTO) .................................................................................. 643.4Atribuio ............................................................................................................................. 663.5Entrada e Sada ..................................................................................................................... 673.6Estruturas de Deciso............................................................................................................ 683.7Condies ............................................................................................................................. 693.8Se .......................................................................................................................................... 713.9Se seno ................................................................................................................................ 723.10Se seno se ............................................................................................................................ 733.11Caso ...................................................................................................................................... 753.12 Estruturas de repetio .......................................................................................................... 77 3.12.1 Faa-Enquanto ............................................................................................................ 78 3.12.2Enquanto ..................................................................................................................... 783.12.3Para ............................................................................................................................. 793.13 4Temporizao por software Rotinas de atraso ................................................................... 80RECURSOS AVANADOS ......................................................................................................... 84 4.1Display de cristal Lquido ..................................................................................................... 844.2Teclado ................................................................................................................................. 87 Exsto Tecnologia4 5. Microcontroladores PIC16F877A4.3 Interrupes .......................................................................................................................... 89 4.3.1 Utilizao das Interrupes ............................................................................................. 92 4.3.2 4.3.3 5Interrupo externa em RB0 ........................................................................................... 96 Interrupo por mudana no portal B ............................................................................. 96PERIFRICOS DO PIC16F877A .............................................................................................. 98 5.1 Timers ................................................................................................................................... 98 5.1.1 Timer 1............................................................................................................................. 98 5.1.2Oscilador do timer 1 ...................................................................................................... 1015.1.3Interrupo .................................................................................................................... 1015.2 Mdulo CCP ....................................................................................................................... 101 5.2.1 Modo captura ................................................................................................................ 102 5.2.2Modo comparao ........................................................................................................ 1035.2.3Modo PWM ................................................................................................................... 1035.2.4Interrupo .................................................................................................................... 1065.3 Comunicao Serial ............................................................................................................ 106 5.3.1 Comunicao Paralela ................................................................................................... 106 5.3.2Comunicao serial........................................................................................................ 1075.3.3EIA-232C ........................................................................................................................ 1095.3.4A USART do PIC16F877A................................................................................................ 1105.3.5Transmisso ................................................................................................................... 1125.3.6Recepo ....................................................................................................................... 1135.4 Conversor Analgico para digital ADC........................................................................... 114 5.4.1 Configurao e uso ........................................................................................................ 116 5.5 Memrias EEPROM e Flash............................................................................................... 118 5.5.1 Memria EEPROM ......................................................................................................... 118 5.5.2Rotinas de acesso a EEPROM ........................................................................................ 1195.5.3Memria FLASH de programa ....................................................................................... 1205.5.4Rotinas de acesso a FLASH. ........................................................................................... 120Apndices ............................................................................................................................................ 122 Apndice A Conjunto de Instrues do PIC16 ............................................................................. 122 Apndice B Mapeamento de memria de dados........................................................................... 123Exsto Tecnologia5 6. Microcontroladores PIC16F877AIntroduo Est apostila tem o objetivo de servir como livro texto 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 pr-requisitos para o bom aproveitamento do curso so conhecimentos bsicos de informtica, eletrnica bsica, eletrnica digital bsica (principalmente memrias, contadores, portas lgicas e flip-flops ). Tambm recomendvel 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 especializando a cada passo, at tratar vrios dos perifricos. O captulo inicial com os conceitos bsicos sobre microcontroladores e sistemas computacionais, e tem o objetivo de equalizar os pr-requisitos sobre o assunto. Este captulo pode ser omitido, sem qualquer prejuzo no andamento do curso, caso esses conceitos j tenham sido estudados em outras disciplinas. O captulo 2 apresenta os microcontroladores PIC16 , tratando tanto de hardware como de software, alm de trazer os fundamentos de programao em linguagem assembly. So discutidos organizao 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 software. Vale ressaltar a importncia dessa unidade, visto que ela visa formar as bases da lgica de programao e que o desenvolvimento com microcontroladores basicamente um desenvolvimento de software. O captulo 4 apresenta algumas aplicaes avanadas de programao, com displays 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 conversor analgico para digital.Exsto Tecnologia6 7. Microcontroladores PIC16F877A1 CONCEITOS BSICOS Inicialmente 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 aproveitamento 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 utilizado em um projeto, pois permite estabelecer as bases conceituais para a comparao de suas caractersticas.1.1 Sistema Computacional Inicialmente devemos conceituar o que vem a ser um sistema computacional. Os sistemas computacionais so compostos por sistemas combinacionais e seqenciais. O que caracteriza um sistema computacional a possibilidade de ser programado. Um sistema computacional composto por hardware (parte fsica) e software (programa). O hardware dos sistemas computacionais, ao contrrio do que ocorre com sistema combinacionais e seqenciais, no possui uma aplicao especfica. necessrio que exista um software para ser executado. Em contrapartida, um mesmo hardware pode executar uma infinidade de funes diferentes, simplesmente alterando o seu software. Uma boa analogia imaginar o hardware como um instrumento musical e o software como uma partitura. Um piano por si s no faz nada, necessria uma msica que possa ser executada a fim de se obter algum resultado. Da mesma forma que a msica contida na partitura, um programa ser composto por um conjunto limitado de smbolos (no caso da partitura so as notas musicais e no caso do programa so as instrues) que podem ser organizados de diversas formas diferentes, obtendo-se diferentes resultados. Como exemplo de sistema computacional, o primeiro que nos vem em mente o computador pessoal (PC), hoje to difundido. Contudo, existem vrios equipamentos, to ou mais comuns que os PCs, que so sistemas computacionais. Por exemplo, os vdeo-games, os mini-games, as calculadoras, palm-tops, etc. Alm disso, temos os microcontroladores, que so o objetivo desse nosso estudo, que esto presentes nas mais diversas aplicaes. A estrutura de um sistema computacional como a apresentada no diagrama em blocos abaixo (Figura 1.1). Exsto Tecnologia7 8. Microcontroladores PIC16F877AMemria Dados Controle (CPU)ProgramaBarramento de DadosDispositivos de Entrada e sada e perifricosMundo ExternoFigura 1.1 Diagrama em blocos genrico de um sistema computacional1.1.1 Memrias Memrias so dispositivos que armazenam informaes. No caso de um sistema computacional, essa informao, assim como a memria, pode ser dividida em dois tipos: de programa e de dados. Existem tambm Registros (bytes de memria) com funes especiais que trabalham junto ao processador (CPU).1.1.2 Memria de programa Sua funo armazenar o software (programa) a ser executado no sistema. Tambm utilizada para guardar tabelas de constantes Existem endereos de memria de programa existem alguns com finalidade especfica, chamados vetores, que so endereos para onde o programa desvia quando ocorrem determinados eventos. Temos o vetor de reset, que o endereo pelo qual o programa comea a ser executado e o vetor de interrupes, que para onde o programa desvia quando ocorreu um pedido de interrupo (trataremos desse conceito mais adiante). De uma forma geral, a memria de programa uma memria no voltil. O tipo dessa memria pode ser: ROM (Read Only Memory): somente de leitura. Geralmente chamada de masked-ROM (masked = mascarado), gravada pelo fabricante do componente, o que em quantidades muito grandes reduz custos. OTP (Only Time programming): programvel somente uma vez, utilizada em produo. EPROM (Erasable Progrmable Read Only Memory) : apagvel atravs de luz ultravioleta. Utilizada no processo de desenvolvimento e algumas vezes no produto acabado, quando h a necessidade de se poder alterar o software.Exsto Tecnologia8 9. Microcontroladores PIC16F877AFlash: uma memria eletricamente apagvel (EEPROM Electricaly Eresable Read Only Memory) com tempos de acesso para leitura rpido. Oferece uma grande flexibilidade, pois geralmente possvel 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 verses em memria Flash, pois a mesma apresenta muitas vantagens a um custo dos mais baixos.1.1.3 Memria de Dados a memria onde so armazenados os dados a serem processados pelo computador (as variveis dos programas e outras informaes.). Como esses dados so constantemente alterados, a memria utilizada para armazena-los do tipo RAM. Como se trata de uma memria voltil, quando a alimentao cortada esses dados so perdidos. Alguns microcontroladores disponibilizam tambm memrias EEPROM para armazenar dados que no devem ser perdidos com a falta de energia.1.1.4 Barramentos As vrias partes de um sistema computacional (CPU, memrias, dispositivos de entrada e sada) so ligadas entre si atravs de barramentos, ou vias, que so ligaes fsicas de comunicao paralela entre os componentes. So eles: Barramento de dados: pelo qual os dispositivos de I/O e memrias trocam dados com o processador Barramento de endereos: permite ao processador enderear qual dispositivo ser acessado 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 existirem alguns modelos de 16 bits. J o tamanho do barramento de endereos nos informa qual a quantidade mxima de endereos de memria ou dispositivos de I/O e perifricos podem ser acessados. Por exemplo, um barramento de endereos de 10 bits permite acessar 210 = 1024 endereos. Todos os dispositivos de um sistema computacional fazem 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) escreve no barramento de endereos o endereo do dispositivo a ser acessado. Atravs do barramento de controle ele informa ao dispositivo se o acesso de leitura ou escrita (a definio de leitura ou escrita de dispositivos sempre feita pelo ponto de vista do processador). No caso de um aceso de leitura o dispositivo escreve noExsto Tecnologia9 10. Microcontroladores PIC16F877Abarramento de dados e a informao lida pelo processador. No caso de um acesso de escrita, o processador envia dados para o barramento de dados que so lidos pelo dispositivo acessado. Como dispositivos de um sistema computacional usam o mesmo barramento de dados para trafegar informaes preciso que, quando um dispositivo estiver escrevendo no barramento (portanto aplicando nveis de tenso ao barramento) os demais dispositivos no causem conflito de dados. De fato, todos os dispositivos presentes em um sistema computacional so capazes de ficar em estado de alta impedncia enquanto no forem acessados para leitura.1.1.5 Dispositivos de entrada e sada So responsveis por realizar a interface do processador com o mundo externo. atravs deles que um sistema computacional adquire dados externos e aciona processos. So comumente chamados de dispositivos de I/O (Input/Output Entrada/Sada), portais de I/O (no ingls, ports) ou simplesmente portais. A funo dos portais de sada transferir ao mundo externo um dado que esteja presente no barramento de dados. Para isso so utilizados latches, pois permitem o carregar dados somente quando so acionados, retendo esses dados independente de haverem alteraes em suas entradas. Os portais de entrada devem permitir a transferncia de dados do mundo externo para o barramento de dados quando acionados e em alta impedncia no restante do tempo. Para tanto, so tradicionalmente utilizados buffers com sada tri-state para essa funo. A seleo dos dispositivos de I/O a partir do barramento de endereos feita por decodificadores ligados ao barramento de endereos e seu acionamento feita atravs do barramento de controle. Exemplo 1.1 A figura 1.2, abaixo, mostra um exemplo de utilizao de buffers e latches como portais de entrada e sada, respectivamente. Ambos os portais esto ligados ao barramento de dados. Cada portal possui um decodificador (DEC), que apresenta nvel alto na sada quando o valor do barramento de endereos o endereo do portal. Os sinais RD (read ler), WR (write escrever) e IORQ (I/O request requisio de I/O) constituem o barramento de controle. Para a operao de leitura, o endereo do portal colocado no barramento de dados.O decodificador decodifica o endereo do portal de leitura e coloca em sua sada nvel lgico 0. Em seguida, os sinais IORQ e RD so acionados. Assim temos 1 no terminal de habilitao de sada do buffer e o valor em sua entrada transferido para o barramento de dados, podendo ser armazenado pela CPU.Exsto Tecnologia10 11. Microcontroladores PIC16F877AFigura 1.2 Portais de entrada e sada Para realizar uma operao de escrita do portal , o processador inicialmente coloca os dados a serem escritos no barramento de dados e o endereo do portal no barramento de endereo.O decodificador decodifica o endereo do portal de escrita e coloca em sua sada nvel lgico 0. Ento so acionados os sinais WR e IORQ. Nesse instante temos 1 nas trs entradas da porta AND que aciona o terminal E do latch, que faz com ele carregue os dados presentes no barramento na sada.Figura 1.2 Portais de entrada e sada A funo do microcontrolador, como o prprio nome diz, controlar processos e circuitos. Para otimizar 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 bytes de memria. Em sistemas como microprocessadores geralmente o tratamento diferente, havendo instrues especficas para acesso aos portais e outras implicaes, que diminuem a eficincia do cdigo gerado quando se trabalha intensamente com entrada e sada.Exsto Tecnologia11 12. Microcontroladores PIC16F877APara maior flexibilidade do sistema, geralmente os microcontroladores utilizam um sistema de portais mais complexo que o apresentado acima, que permite que um mesmo terminal do microcontrolador seja configurado como entrada ou sada. Para que isso seja possvel utilizado 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, individualmente. A figura 1.3a e 1.3b abaixo mostram o esquema genrico de um bit de portal do PIC16F877A. Outros microcontroladores utilizam configuraes semelhantes.Figura 1.3a Esquema tpico de um pino de I/O OPERAO DE ESCRITA OU SADA DE DADOS: ao acionar o controle WR PORT, o latch de sada (Data Latch) armazena 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 inicialmente com o valor 0. O registro de direo de dados habilitado atravs do controle WR TRIS e a informao de direo fica armazenada 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 tem-se a transferncia da informao Q barra do latch de sada para o driver do pino I/O conforme o arranjo das portas lgicas. Se este ltimo Q barra =0 o transistor N ser cortado e P ser ativado permitindo que a tenso Vdd aparea no pino I/O como nvel lgico 1 que era a informao original do barramento de dados. Se Q barra =1 o transistor P ser cortado e N estar ativo. A tenso no pino I/O cai para o nvel Vss indicando nvel lgico 0.Exsto Tecnologia12 13. Microcontroladores PIC16F877AFigura 1.3b Esquema tpico de um pino de I/O OPERAO DE LEITURA OU ENTRADA DE DADOS: novamente admitamos que o registro de direo foi carregado inicialmente com o valor 1 em sua sada. Agora, o arranjo das portas lgicas permite o corte simultneo dos dois transistores do driver configurando o pino I/O como entrada de dados. Assim, o controle RD PORT habilita o latch de entrada e o buffer tri-state, 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 armazenado no latch de dados, mas no ser transferido para o terminal, pois o driver est desativado. Por outro lado, se for realizada uma operao de leitura em um terminal configurado como sada, o valor lido ser o dado presente no terminal, que o mesmo escrito no latch de dados anteriormente.1.1.6 Perifricos Alm dos portais de I/O e as memrias, podemos ter muitos outros tipos de dispositivos ligados ao barramento de dados. Esses dispositivos nada mais so do que circuitos destinados a realizar funes especiais. Esses dispositivos perifricos so particularmente importantes nos microcontroladores. Como perifricos mais comuns podemos citar os temporizadores e contadores (Timers), os mdulos de comunicao serial, conversores AD e DA, mdulos de CCP (Captura, comparao e PWM), drivers de LCD, comparadores analgicos, etc.Exsto Tecnologia13 14. Microcontroladores PIC16F877AO modo de acesso aos perifricos semelhante ao de acesso aos portais de I/O. Eles muitas vezes possuem vrios registros de parmetros que podem ser configurados, e um ou mais registros de entrada e sada de dados. Quando estivermos tratando dos perifricos do PIC16F877A mostraremos como trabalhar com eles e, apesar de cada microcontrolador apresentar um conjunto de perifricos diferentes, seu funcionamento muito semelhante.1.1.7 CPU A 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 executar as instrues do programa e processar dados. Para tanto ela controla todas as demais partes do sistema e envia ou recebe dados dessas partes. Ela tambm capaz de interpretar e colocar em execuo as instrues que compe o programa e realizar operaes lgicas e aritmticas. Genericamente um processador organizado conforme o diagrama em blocos da figura 1.4.Figura 1.4 Diagrama em blocos de uma 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 vias em amarelo representam o barramento de dados interno do processador, que ligado ao barramento de dados do sistema. As vias em verde so outras vias de dados e sinais de controle. Exsto Tecnologia14 15. Microcontroladores PIC16F877AO principal bloco de um processador o decodificador de instrues (Instructiuon Decoder). 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 (hardware) executando a msica (software). Esse bloco composto por um decodificador e um contador. Tal decodificador pode ser visto como um livro de receitas culinrias. No livro, cada pgina contm uma receita e dentro de cada receita h os passos para sua execuo. De modo anlogo, cada instruo do processador como o endereo de uma pgina onde est a seqncias de acionamento dos sinais de controles (internos e externos ao processador) que permitem a execuo da instruo. O contador existente responsvel por fazer com que os passos para a execuo de uma instruo sejam executados em seqncia. Cada modelo de processador possui um conjunto, ou set, de instrues que pode executar. O barramento de controle interno (Internal Control) permite ao decodificador de instrues controlar os blocos internos do processador, enquanto o barramento de controle externo (External Control) j foi discutido e tem a funo de indicar se o acesso de leitura ou escrita, se em memria ou dispositivos de I/O. O programa armazenado na memria uma seqncia de instrues. Podemos ento supor que para enderear corretamente essas instrues deveria haver um contador. Ele existe e chamado Contador de Programa ou PC (Program Counter). A cada instruo iniciada o PC incrementado. Portanto ele aponta a prxima instruo, isto , contm o endereo da prxima instruo a ser executada. A sada desse contador ligada a um registro (Program Addressing) que carregado ao final de cada instruo com o endereo da prxima 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 valor do vetor de reset. Durante a execuo do programa, um valor pode ser carregado no PC. Isso ocorre para desviar o fluxo do programa. Existem instrues que realizam essa alterao de fluxo, que pode ser de dois tipos: desvio ou chamada. Quando ocorre um desvio o contedo do PC alterado para que ele passe a executar o programa a partir de outro ponto. Na execuo de uma chamada o fluxo do programa tambm desviado para um determinado ponto para executar um trecho do programa, mas nesse caso ele deve retornar ao ponto do programa onde ocorreu o desvio (mais precisamente primeira instruo aps a instruo de chamada). Isso permite executar uma sub-rotina, conceito que ser discutido quando tratarmos do software. Em uma chamada o endereo de retorno deve ser armazenado em algum lugar, caso contrrio no seria possvel retornar ao ponto onde a chamada ocorreu. Esse lugar chamado de pilha (stack). O nome pilha se deve a seu funcionamento, que semelhante a uma pilha de pratos: como pode haver vrias chamadas consecutivas sem que haja retorno, os endereos de retorno so armazenados uns sobre os outros. Quando ocorre uma instruo de retorno (que o que faz o programa retornar da chamada), o programa volta para o ltimo endereo guardado, e assim sucessivamente at que a pilha esteja vazia. A pilha ento uma poro de memria onde podem ser armazenados os endereos de retorno.Exsto Tecnologia15 16. Microcontroladores PIC16F877APara indicar a prxima posio livre na pilha existe um registro (na verdade um contador) chamado ponteiro da pilha (Stack Pointer) que aponta o topo. Esse registro incrementado cada vez que um novo endereo de retorno armazenado na pilha e decrementado quando ocorre um retorno. Uma vez determinado o endereo, seu contedo lido e armazenado em um registro chamado registro de instruo (Instruction Register). Desse registro, parte da instruo vai para o decodificador de instrues e parte pode ir para a ALU e/ou parte para o registro de endereamento de dados (Data Addressing). Para entender o porque disso, devemos ter em mente que uma instruo nada mais que uma palavra binria. Parte dela, que efetivamente a instruo, indica ao decodificador de instrues qual a seqncia de aes deve ser executada (qual a pgina do decodificador de instrues). O restante constitui os operandos da instruo, ou seja, os dados a serem processados. Esses dados podem ser constantes ou endereos de dados variveis na memria RAM. Conforme sua natureza e a instruo a ser executada eles tem um destino ou outro. A unidade lgico-aritmtica ou ALU (Aritmetic and Lgic Unit) o circuito responsvel pelos clculos em um processador. Como prprio nome diz, ela responsvel pela realizao de operaes lgicas, (E, OU, OU-exclusivo, deslocamentos, rotaes, complemento), e aritmticas (incremento, decremento, adio, subtrao, multiplicao, e diviso). Os processos de diviso e multiplicao so feitos com a ALU utilizando seqncias somas e subtraes, o que efetivamente o que a ALU capaz de fazer. A ALU trabalha juntamente com dois registros especiais: o Acumulador (Accumulator) e o registro de estado de operaes aritmticas (Status). comum se referir ao acumulador simplesmente como Acc ou, no caso dos PICs, como W (Worker Trabalhador ). O acumulador quase sempre est envolvido nas operaes realizadas pela ALU. Ele pode ser um dos operandos, pode ser onde se armazena o resultado ou pode ser as duas coisas. H tambm microcontroladores onde qualquer transferncia de dados entre dois endereos da RAM passa pelo acumulador. Quanto ao registro de status, sua funo indicar resultados notveis das operaes matemticas. Esses resultados so indicados por flags, que so bits desse registro. Atravs da anlise dos flags possvel saber, dentre outras coisas, se uma operao resultou em zero; se houve estouro da capacidade de armazenamento (overflow), que acontece quando um resultado maior que o mximo valor possvel de ser representado pelo sistema; se o resultado de uma operao aritimtica negativo ou positivo. Existe uma interao do registro status com o decodificador de instrues, pois atravs da anlise de seus flags possvel realizar instrues de testes. Para acessar a memria de dados e os perifricos existe um registro, que em nosso sistema chamado de endereamento de dados (Data Addressing) que pode receber valores de duas formas. A primeira diretamente de parte da instruo. Nesse caso se est fazendo referncia a endereos da RAM conhecidos e fixos, pois so carregados valores constantes existentes no programa. Esse modo chamado endereamento direto. Em muitos casos necessrio fazer referncias a endereos variveis. Isso feito carregando o registro de endereamento com dados provenientes de um outro registro, o registro de endereamento indireto (Indirect Addressig). Como qualquer outro registro, ele pode ser carregado com um valor, constante ou proveniente de uma varivel, pode ser incrementado, decrementado ou participar que qualquer operao lgico-aritmtica. Sua funo semelhante a dos ponteiros em linguagens de alto nvel. Exsto Tecnologia16 17. Microcontroladores PIC16F877ATodo o sistema computacional trabalha sincronizado com um mesmo sinal de clock. Devemos lembrar que esse clock o que faz o decodificador de instrues passar de uma instruo para a outra, e tudo o mais deve estar sincronizado com ele, seno haveria o caos. Para gerar esse sinal de clock necessrio um oscilador. Nos microcontroladores esse oscilador j faz 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 utilizados divisores de freqncia Outro ponto importante o reset. Alm do reset que ocorre quando o sistema ligado, chamado de Power-on reset, os microcontroladores apresentam vrias 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 armazena o dado guardado neste endereo. Este dado composto da instruo e do operando. O operando pode ser proveniente da memria de programa 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 varre essa seqncia de passos. 7) O decodificador de instruo comea ento a acionar os dispositivos dentro ou fora da CPU atravs dos barramentos de dados, controle e endereo. 8) A partir desse ponto os dispositivos podem ser acionados nas mais diversas seqncias de operao dependendo da necesidade de processamento imposta pelo cdigo, por exemplo: O contador de programa aponta para o prximo endereo de memria de programa onde pode estar o valor de uma instruo com operando. A memria de programa habilitada e esse valor passado do para a ALU atravs do registro de instruo. O contador de programa aponta para o prximo endereo na memria de dados. A memria de dados habilitada e o valor armazenado nesse endereo passa para o acumulador. A ALU opera aritmeticamente esses dois dados, sinaliza para o registrador de estados qual foi e estado da operao e disponibiza o resultado em sua sada. Uma memria ou um dispositivo de sada pode ser habilitado e o resultado ser armazenado em um desses dispositivos. Em resumo sempre ocorre um processo de BUSCA e EXECUO da instruo. A busca se refere a localizao das instrues e dos operandos na memria e a execuo se refere ao acionamento de dispositivos em seqncia para conseguir o resultado desejado.1.2 Arquitetura Computacional 1.2.1 Arquitetura von-Neumann Na arquitetura von-Neumann, as memrias tanto de dados quanto de programa, so acessadas usando-se o mesmo barramento de dados; os portais de I/O tambm fazem uso do barramento de dados. Ou seja, a memria e os dispositivos de I/O compartilham o mesmo barramento em momentos distintos. Exsto Tecnologia17 18. Microcontroladores PIC16F877AVale lembrar aqui que uma instruo como uma operao matemtica, isto , composta de operadores, que indicam o que ser feito, e operandos, que so os parmetros envolvidos na operao.Desta forma, o processo de execuo de cada instruo dividido em dois momentos: a leitura da instruo e a leitura dos operandos (fetch) e a execuo da instruo propriamente dita. Nota-se que dessa forma o processador est parte do tempo ocupado com a leitura da memria de programa e, conseqentemente no fica executando o firmware o tempo todo. Outra caracterstica da arquitetura von-Neumann que, visto que os operandos das instrues so geralmente do mesmo tamanho do barramento de dados, quanto mais complexa a instruo maior ser a quantidade de endereos ocupados por ela na memria. Isto quer dizer que por exemplo, para um barramento de 8 vias, uma instruo de 16 bits buscada e executada em duas partes de 8 bits. Por outro lado, como a complexidade da instruo no tem limite a no ser o espao ocupado, podemos ter um set de instrues to complexo quanto se queira. Podemos concluir que arquitetura von-Neumann consome muito tempo de processamento com a leitura da instruo e dos operandos. Conclui-se tambm que instrues diferentes ocupam quantidades diferentes de memria e so executadas em tempos diferentes. MemriaDadosPrograma CPUBarramento de DadosI/OFigura 1.5 Arquitetura von-Neumann Os sistemas de arquitetura von-Neumann geralmente tm conjuntos de instrues complexos, o que equivale a dizer que possuem um grande nmero de instrues e cada instruo realiza uma grande seqncia de aes. Processadores desse tipo so chamados CISC (Complex Instruction Set CPU CPU com Set de Instrues Complexo).1.2.2 Arquitetura Harvard J a arquitetura chamada de arquitetura Harvard, que utilizada nos microcontroladores PIC, tem como principal caracterstica acessar a memria de dados separadamente da memria de programa. A principal vantagem dessa arquitetura que a leitura de instrues e de alguns tipos de operandos pode ser feita ao mesmo tempo em que a execuo das instrues (tempo Tcy). Isso significa que o sistema fica todo o tempo executando instrues, o que acarreta um significativo ganho de velocidade. Enquanto uma instruo est sendo executada, a seguinte est sendo lida. Esse processo conhecido como pipelining (canalizao) e ilustrado pela figura 1.6 abaixo.Exsto Tecnologia18 19. Microcontroladores PIC16F877AFigura 1.6 Pipeline O barramento de programa no necessariamente tem o mesmo tamanho do barramento de dados. Dessa forma, em uma nica palavra da memria de programa pode conter operando e operadores, o que nos permite carregar toda a instruo em um nico ciclo de leitura da memria.Memria deCPUProgramaBarramento de ProgramaMemria de DadosI/OBarramento de Dados Figura 1.7 Arquitetura HarvardPode-se notar ento que os tempos de execuo e de leitura esto atrelados e so os menores possveis. Isso acarreta em as instrues no poderem executar uma grande seqncia de aes, ou seja, no existem instrues complexas. Por isso, os PICs so considerados processadores RISC (Reduced Instruction Set CPU CPU com Set de Instrues Reduzido). O nmero de instrues reduzido, o que no significa que no se possa executar programas complexos, mas sim que seqncias complexas de aes devem ser construdas por seqncias de instrues bsicas.Exsto Tecnologia19 20. Microcontroladores PIC16F877A2 O MICROCONTROLADOR PIC16F877A 2.1 A Microchip O 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 ampla linha de memrias e componentes analgicos. A Microchip trabalha com uma poltica de suporte ao cliente muito eficiente, que provavelmente uma das causas de seu sucesso. Em seu site (www.microchip.com) existe uma grande quantidade de informao disponvel. Alm dos manuais dos componentes, existem muitas notas de aplicao (Application Notes) 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 divididos em famlias. Cada famlia, ou plaforma, tem vrios componentes, com tamanhos e recursos diferentes; no entanto o cdigo desenvolvido para um componente de uma determinada famlia compatvel com os demais componentes da mesma famlia, exceto 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 assembly que compe os softwares gravados 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 dividem ainda conforme o tamanho do barramento de bits, havendo microcontroladores de 8, 16 e 32 bits. As famlias de microcontroladores PIC so: 8 bits o Famlia PIC10 o Famlia PIC12 o Famlia PIC14 e PIC17 o Famlia PIC16 o Famlia PIC18 16 bits: o Famlias PIC24F e PIC24H o Familias dsPIC30F e dsPIC33F 32 bits Exsto Tecnologia20 21. Microcontroladores PIC16F877Ao PIC32 o 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 mxima de clock Perifricos Nesse 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 torna-se apto a trabalhar com toda a famlia.2.3 A Arquitetura do PIC16F877A A figura 1.1 apresenta o diagrama em blocos do PIC16F877A. Trata-se de um microcontrolador de 8 bits de arquitetura Harvard. 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, execuo da instruo com decodificao da instruo e acionamento de dispositivos em seqncia para o processamento da atividade programada. Podem ser observados os barramentos de dados e de programa. Alm disso, nota-se como operandos da ALU e de endereamento da memria de dados vem diretamente da memria de programa. Tambm so dignos de nota os perifricos, localizados na parte inferior do diagrama, que esto ligados ao barramento de dados.Exsto Tecnologia21 22. Microcontroladores PIC16F877AFigura 2.1 Diagrama em blocos do PIC16F877A2.4 Gerao de clock Os microcontroladores PIC possuem um circuito de oscilao interna, isto , so capazes de gerar seu prprio clock (ou sinal de relgio) com acrscimo de poucos (ou nenhum) componentes externos. Existem sete modos diferentes de clock, e cada componente da famlia utiliza alguns deles. O modo de clock para cada aplicao selecionado no momento da gravao do microcontrolador e no pode ser alterado pelo programa. So eles: LP: Cristal/Ressonador de baixa freqncia e baixo consumo (Low Frequency (Power) Crystal) XT: Cristal/Ressonador (Crystal/Resonator); HS: Cristal/Ressonador de Alta Freqncia (High Speed Crystal/Resonator); RC: Oscilador RC Externo (External Resistor/Capacitor); o Com sada de clock o Sem sada de clock INTOSC (INTRC): Oscilador RC Interno de 4MHz (Internal Resistor/Capacitor) Esse modo no est presente no PIC16F877A, mas existe em outros componentes da famlia PIC16; Exsto Tecnologia22 23. Microcontroladores PIC16F877Ao Com sada de clock o Sem sada de clockObs.: resistores, indutores, capacitores e cristais podem ser combinados formando circuitos osciladores em freqncias determinadas. Mais detalhes sobre os conceitos, funcionamento e projeto desse tipo de circuito podem ser encontrados em livros de eletrnica com captulos sobre osciladores.2.4.1 Modos LP,XT e HS Os modos LP, XT e HS utilizam um cristal ou ressonador cermico para estabilizar o clock. A diferena est na faixa 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 energia eltrica em energia trmica) nos transistores que compem os circuitos integrador digitais se d nos momentos de transio de baixo para auto e de auto para baixo. 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 modo LP refere-se a cristal/ressonador cermico de baixa freqncia. Esse modo trabalha com freqncias de oscilao de at 200 kHz e nele conseguimos o menor consumo dos trs modos em questo. O modo XT abrange as freqncias de 200 kHz at 4 MHz e apresenta um consumo mdio. O modo HS para freqncias de 4 a 20 MHz e tem o mais alto consumo. Cada faixa 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, devem existir capacitores ligados dos terminais do cristal terra, conforme mostra a figura 2.2. Os valores desses capacitores C1 e C2 so os indicados nas tabelas Capacitor Selection for Crystal Oscillator que se encontra nos manuais de cada PIC na seo que trata de configuraes do oscilador. Para o PIC16F877A os valores so os apresentados na tabela 2.2. O valor 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 desativa o oscilador no modo de baixo consumo, do qual trataremos mais adiante.Exsto Tecnologia23 24. Microcontroladores PIC16F877AFigura 2.2 Circuito do Oscilador a Cristal/Ressonador Modo de OsciladorFreqncia do CristalCapacitores C1 e C232 kHz 33 pF 200 kHz 15 pF 100 kHz 47 a 68 pF XT 1 MHz 15 pF 4 MHz 15 pF 4 MHz 15 pF HS 8 MHz 15 a 33 pF 20 MHz 15 a 33 pF Tabela 2.1 Seleo de capacitores para oscilador a cristal LPCapacitores maiores aumentam a estabilidade do oscilador, mas tambm aumenta o tempo de partida.O tempo de partida do oscilador o tempo necessrio para que o oscilador se estabilize, 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 lay-out da placa. Esse tempo deve ser considerado pois o programa s ser iniciado (ou reiniciado, no caso do modo de baixo consumo) quando o oscilador se estabilizar.Exsto Tecnologia24 25. Microcontroladores PIC16F877AFigura 2.3 Partida do oscilador Tambm possvel aplicar sinais de clock gerados externamente, bastando para isso selecionar o modo relativo a faixa de sinal utilizado. Nesse caso o sinal deve ser aplicado ao pino OSC1/CLKIN e o pino OSC2/CLKOUT deve permanecer em aberto.2.4.2 Modos RC Tambm possvel trabalhar com osciladores RC (Resistor/Capacitor). Para isso utilizada a montagem da figura 2.4 e selecionado o modo de oscilador como RC.Figura 2.4 Circuito do oscilador no modo RC. O modo RC apresenta algumas limitaes: a freqncia de trabalho dependente de vrios fatores (valores de resistor e de capacitor, tenso de alimentao, temperatura) e apresenta pouca estabilidade (tolerncia dos resistores e capacitores, variao na tenso de alimentao, variaes de temperatura). Por exemplo, em uma produo em quantidade de produtos utilizando PICs no modo RC, a freqncia de cada produto pode variar em funo da tolerncia dos resistores utilizados. No possvel 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 utilizao do modo, pois um oscilador RC tem custo menor que um a cristal. O resistor REXT deve estar entre 3k e 100k e o capacitor CEXT deve ser superior a 20pF. O circuito pode funcionar sem capacitor CEXT, mas nessa situao ele se torna muito suscetvel a variaes drsticas de freqncia devido a capacitncias externas (do prprio lay-out, por exemplo). Alm disso, a variao da freqncia maior para resistores maiores e capacitores menores.Exsto Tecnologia25 26. Microcontroladores PIC16F877ANo modo RC com sada de clock o terminal OSC2/CLKOUT apresenta a freqncia do oscilador divida por quatro, que pode ser utilizado como fonte de clock para outros pontos do circuito. J no modo sem sada de clock, esse terminal pode ser utilizado como I/O.2.4.3 Modo INTOSC Esse modo de oscilador no est disponvel no PIC16F877A, mas pode ser encontrado em outros modelos de microcontroladores. No modo INTOSC (ou INTRC) no se necessita de nenhum outro componente externo. Portanto, alm da reduo de custos, ele libera terminais do microcontrolador para serem utilizados 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. Devido a isso temos geralmente uma ou duas freqncias de clock fixas. 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 oscilador Na tabela 2.2 feita uma comparao entre os diferentes modos de oscilador. QuesitoTipo de Oscilador Cristal (HS, XT e HS) RC Externo Preciso Preciso Impreciso Estabilidade Estvel Instvel Variedade de freqncias Pequena Grande Custo Alto Baixo Tabela 2.2 Seleo de capacitores para oscilador a cristalRC Interno Pouco preciso Pouco Estvel Nenhuma Nenhum2.4.5 Clock e execuo das instrues Cada instruo executado pelos microcontroladores PIC16 gasta 4 ciclos de clock, chamados ciclos Q. Esses 4 ciclos compem um ciclo de instruo (TCY) que dura 4 vezes mais que um ciclo Q , portanto um ciclo de instruo tem da freqncia do oscilador e o sinal desse ciclo maior chamado de clock de instruo ou clock de perifricos. Ou seja, o tempo de execuo de cada instruo e de 4 perodos de clock. Em cada um dos ciclos Q realizada uma etapa da instruo, conforme mostrado na tabela 2.2. Graficamente esse processo apresentado na figura 2.5. Ciclo Ao Q1 Ciclo de decodificao da instruo Q2 Ciclo de leitura de dados Q3 Ciclo de processamento Q4 Ciclo de escrita de dados Tabela 1.2 Ciclos de execuo das instruesExsto Tecnologia26 27. Microcontroladores PIC16F877AFigura 2.5 Ciclos de instruo Alguns perifricos e algumas funes do PIC no so sincronizados 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 8K-palavras de memria de programa. J que se trata de um processador RISC, o tamanho das palavras 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 palavras de 14 bits. Cada palavra, isto , cada endereo de memria de programa guarda uma instruo. Dessa forma, um programa de 500 instrues ocupar 500 bytes. O vetor de reset o endereo 0000h. Como vimos, isso significa que o programa deve ser escrito a partir desse endereo. O vetor de interrupo, para todas as interrupes o 0004h. A memria do tipo FLASH, suportando um grande nmero de reescritas. possvel, atravs de rotinas que trataremos em outro ponto do curso, realizar escrita na memria e programa. Na estrutura das instrues de chamada e desvio da famlia 16F o espao reservado para endereo de 11 bits. Portanto possvel enderear diretamente 2048 endereos de memria. Sendo que o PIC16F877A tem 8k endereos de memria de programa, essa memria dividida em unidades que chamaremos de pginas. Dentro de uma mesma pgina possvel realizar saltos e desvios para qualquer ponto. Mas se um salto ou desvio vai de uma pgina para outra necessrio fazer um ajuste prvio dos dois bits mais significativos do SFR PCLATH, conforme mostrado na tabela abaixo. PCLATH Bit 4 Bit 3 0 0 0 1 0 1 2 1 0 3 1 1 Tabela 2.3 Pginas de memria de programa PginaA figura 2.6 apresenta o mapemamento de memria de programa.Exsto Tecnologia27 28. Microcontroladores PIC16F877A0000h Vetor de reset 0001h 0002h Uso geral 0003h 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 Figura 1.6 Mapeamento de memria do PIC16F877A Os demais microcontroladores da famlia PIC16F seguem esse mesmo mapeamento de memria, contudo nem todos os modelos tm 8k-words, isto , alguns no tem todas as pginas implementadas. Por exemplo, o PIC16F874A tem as pginas 0 e 1 mas no as 2 e 3, portanto tem 4kwords; j o 16F628A tem 2k-words, ou seja, somente a pgina 0.2.5.2 Memria de dados O core (ncleo ou processador do microcontrolador) da famlia PIC16 existem 9 vias 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 varia de microcontrolador para microcontrolador. No PIC16F877A existem 368 bytes de memria RAM de dados. Ela composta por registros de funes especiais (SFR Special Function Registers) e a RAM de uso geral (GPR General Purpose RAM). Os SFR so responsveis pelo controle da CPU e dos perifricos, alm de conterem os registros dos portais. Na RAM de uso geral onde o programa armazenar suas variveis. A memria RAM pode ser acessada de duas formas: por acesso direto e por acesso indireto. Acesso direto ocorre quando o endereo acessado faz parte da prpria instruo ( um dos operandos). J o acesso indireto feito atravs de duas variveis, uma contendo o endereo a ser acessado e a outraExsto Tecnologia28 29. Microcontroladores PIC16F877Ase comportando como o byte acessado. Este ltimo modo de endereamento pode ser muito til em algumas situaes e ser estudado mais adiante.Para acesso direto, a RAM dividida em 4 bancos. Isso ocorre porque a capacidade de mxima de acesso de memria dos microcontroladores PIC de 512 bytes. Portanto, so necessrios 9 bits para compor os endereos. Como cada instruo tem apenas 14 bits, e esses bits devem ser divididos entre operadores e operandos, no h espao para um endereo de 9 bits. Na verdade, as instrues armazenam apenas 7 bits do endereo a ser acessado. Os dois bits restantes fazem parte do registro de funo especial STATUS e so chamados RP1 e RP0. J que dois bits podem gerar 4 combinaes, existe essa diviso em 4 bancos. Para acessar um registro em um banco diferente do banco atual, necessrio ajustar previamente RP1 e RP0. Na prtica utilizamos o mximo possvel endereos do banco 0, e mudamos para os demais bancos quando necessrio, retornando novamente ao banco 0. A diviso de bancos feita conforme a tabela 1.3. Banco 0 1 2RP1 0 0 1RP0 0 1 0Endereos 00h ~ 7Fh 80h ~ FFh 100h ~ 17Fh311180h ~ 1FFhTabela 1.4 - Seleo de bancos de RAM No caso do endereamento indireto, o endereo armazenado em um registro de funo especial chamado FSR. Como trata-se de um registro de 8 bits, falta 1 bit, que se chama IRP e faz 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 um arquivo. Existe um arquivo desses para cada PIC e a forma de inclu-lo no programa ser mostrado mais adiante. Podemos ento tratar os SFR pelo seus nomes, no havendo 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 conveno abaixo, que a mesma utilizada no manual dos componentes.R/W 0 IRP Bit 7R/W 0 RP1R/W 0 RP0R1R 1R/W xR/W xNOT_TONOT_PDZDCR/W x C Bit 0STATUS Os bits so numerados de 0 a 7, da direita para a esquerda. O nome do registro aparece em baixo. 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 (x). Por exemplo, sobre o bit RP0 est escrito R/W-0, que significa que pode ser lido ou escrito e seu valor no reset 0. No anexo B encontra-se o mapa de memria do PIC16F628A. Pode-se observar os nomes dos SFR e as regies de uso geral. Note que apesar de ser possvel acessar 512 bytes, foram implementados apenas 224 bytes. As posies no implementadas esto em cinza na figura. Note ainda que os ltimos 16 endereos de todos os bancos acessam os mesmos bytes no banco 0.Exsto Tecnologia29 30. Microcontroladores PIC16F877AA 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 cinza correspondem a endereos para os quais no h memria implementada. No manual do PIC16F877A existe um detalhamento maior dos bits que compe os SPRs. A funo de vrios desses registros ser explicada no decorrer do curso.Tabela 1.7 - Mapeamento de memria RAM de dadosExsto Tecnologia30 31. Microcontroladores PIC16F877A2.6 RESET O PIC possui vrias fontes de reset (reinicializao), que so: Reset ao ligar (POR Power-on Reset); Reset por MCLR durante operao normal; Reset por MCLR no modo SLEEP (que ser tratado adiante); Reset por Watch-Dog durante operao normal; Reset por Watch-Dog no modo SLEEP; Reset por queda de alimentao (BOR Brown-Out Reset).O reset por MCLR acionado quando ao terminal MCLR (pino 4) aplicado nvel lgico baixo. MCLR o terminal de Reset do componente, sendo um terminal baixo ativo, isto , o reset ocorre em 0. Alm disso, o terminal de MCLR possui internamente um filtro para evitar que rudos possam causar reset acidental. O modo como os registros se comportam em cada reset variado. Para saber quais so os valores iniciais de cada registro, deve 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 Reset Essa funcionalidade detecta quando o circuito ligado, percebendo a subida da tenso de alimentao, e realiza o reset do microcontrolador. Dessa forma podemos dispensar o resistor e capacitor tradicionalmente ligados ao terminal de reset para gerar um nvel lgico baixo quando o sistema ligado, garantido assim o reset inicial. O terminal MCLR pode ser ligado diretamente ao nvel lgico alto sendo recomendado utilizar um resistor de 10 k ligando-o VDD.2.6.2 PWRT Power-up Timer Trata-se de um timer de aproximadamente 72ms que mantm o microcontrolador em condio de reset durante esse tempo. til, pois permite ao sistema ter tempo de se estabilizar (tenso, reset dos demais componentes, etc.) antes do programa comear a ser executado.2.6.3 OST Oscillator Start-up Timer Este timer conta 1024 ciclos vlidos de clock antes de sair da condio de reset, permitindo assim que o oscilador se estabilize, 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 Reset Essa funcionalidade visa reiniciar o sistema se houver uma queda na tenso de alimentao. O BOR ocorre quando a alimentao atinge aproximadamente 4V por mais de 100s (quedas por tempo intervalos menores que esse so ignorados pois podem se tratar de rudos na alimentao), em situaes como as mostradas na figura2.8.Exsto Tecnologia31 32. Microcontroladores PIC16F877AFigura 2.7 Situaes de Brown-out2.6.5 Seqncia de inicializao 1. 2. 3. 4. 5.O circuito ligado: a tenso de alimentao comea a subir; detectada a subida da tenso: ocorre POR; O sistema aguarda o tempo de PWRT (aprox. 72 ms); O oscilador comea a funcionar: 1024 ciclos so contados (OST); O programa comea a ser efetivamente executado.2.6.6 Identificao de Reset pelo Software Apesar de existirem vrias fontes de Reset, possvel determinar qual reset ocorreu. Para isso existem 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 vistas na tabela 2.4. Condio NOT_POR NOT_BOR Reset por Power-on 0 X Impossvel 0 X Impossvel 0 X Reset por Brown-out 1 0 Reset pelo Watchdog 1 1 Dispertar pelo Watchdog 1 1 Reset pelo MCLR em operao normal 1 1 Reset pelo MCLR no modo SLEEP 1 1 Tabela 2.4 Bits de status e seus significadosNOT_TO 1 0 x 1 0 0 U 1NOT_PD 1 X 0 1 1 0 U 0Essa informao pode ser til, permitindo que providncias sejam tomadas em situaes especficas de problema. O esquema da figura 1.8 mostra como a lgica de reset.Exsto Tecnologia32 33. Microcontroladores PIC16F877AFigura 2.8 Lgica de reset2.7 Watch-Dog Timer Esse 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 motivo, o microcontrolador trava. Quando habilitado ele deve ser zerado a intervalos regulares menores que seu tempo mximo pela instruo CLRWDT. Se o programa para e o Watch-Dog no zerado, tendo sido habilitada essa funo na gravao, ocorre o reset. Ao timer de 8 bits pode ser atribudo um pr-escala, como ser visto mais adiante. Essa funcionalidade muito til, pois, na grande maioria das situaes prticas, melhor que o sistema reinicie do que fique inoperante. Desenvolvendo o cdigo adequadamente possvel fazer com que o reset sequer tenha efeitos perceptveis para o sistema. O perodo do watchdog de 18 ms (tpico). Com pr-escala mxima pode chegar a 2,3s.2.8 Modo de baixo consumo Modo SLEEP O modo de baixo consumo (Power-dowm Mode), tambm chamado de modo SLEEP (sono, em ingls), a situao de menor consumo do microcontrolador. Ele ativado pela execuo da instruo SLEEP. Nesse modo o oscilador desligado, fazendo com que o microcontrolador pare completamente a execuo do programa. Dessa forma conseguimos reduzir drasticamente o consumo do sistema, o que importante sobretudo em sistemas alimentados por bateria. O microcontrolador pode ser acordado por qualquer um dos eventos abaixo: Qualquer reset; Estouro do Watch-Dog (se este estiver habilitado); Qualquer perifrico que estiver com sua respectiva interrupo habilitada (incluso INT e interrupo por mudana no Portal B). Exsto Tecnologia33 34. Microcontroladores PIC16F877AQuando da ocorrncia de algum reset, o programa recomea sua execuo no vetor de reset (0000h). Se, porm, ocorrer um estouro do Watch-Dog ou a chamada de alguma interrupo o programa continua sua execuo a partir do endereo imediatamente posterior a instruo SLEEP que ativou o modo de baixo consumo. E ainda, se o controle geral de interrupes estiver habilitado, o programa recomea pelo vetor de interrupes (0004h) se desperto por interrupo. Assim, se desejamos que uma interrupo simplesmente acorde o microcontrolador, devemos desabilitar globalmente as interrupes. Deve-se ter ateno ao fato de que no modo SLEEP o oscilador est desligado. Dessa forma no podem ser utilizadas interrupes dos timers para a sada do modo, se estes timers utilizarem 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 gravado em um PIC pode ser protegido, isto , pode ser impedida a sua leitura. Essa funcionalidade muito importante, sobretudo quando se trata de produo industrial, visto que assim se podem preservar os direitos autorais do autor do firmware e dificultar a cpia de produtos.2.9.2 Locais de Identificao (ID Locations) Existem 4 endereos no acessveis pelo microcontrolador que podem ser utilizados para identificao do componente (por exemplo, o nmero de srie do produto ou a verso do firmware).2.9.3 Pinagem e Hardware Bsico Como j foi comentado anteriormente, o PIC16F877A um componente de 40 pinos, em seu encapsulamento PDIP (Plastic Dual In-line Package Encapsulamento plstico em linha dupla). Esses pinos podem ser divididos em terminais de alimentao, de reset, de conexo com o oscilador e os terminais de portais e perifricos. Como se trata de um componente com diversas caractersticas e um pequeno nmero de terminais, muitos terminais possuem mais de uma funo. Dessa forma, temos terminais de entrada e sada dos portais multiplexados 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 serve ao perifrico e sua funo de entrada e sada fica desativada. Quando o perifrico no utilizado, o terminal trabalha como I/O. A figura abaixo apresenta a pinagem do PIC 16F877A. Para facilitar a escrita, toda documentao da Microchip quando se refere a um terminal no utiliza a notao bit N do portal X, e sim RX N. Por exemplo, o bit 2 do portal A representado por RA2, o bit 7 do portal C por RC7, e assim por diante.Exsto Tecnologia34 35. Microcontroladores PIC16F877AFigura 2.1 Pinagem do PIC 16F877A As principais caractersticas do PIC so apresentadas na tabela abaixo. Caracterstica Valor Unidade Frequncia de Operao 0 ~ 20 MHz MHz Resets POR, BOR Memria de Programa (FLASH) 8k palavras de 14 bits Memria de Dados (RAM) 368 bytes Memria de Dados No Voltil (EEPROM) 256 bytes Interrupes 15 Timers 3 Mdulo CCP 2 Mdulo SSP (SPI e I2C) 1 Comparador analgico 2 Comunicao Paralela PSP Mdulo ADC de 10-bits 8 canais Set de Instrues 35 instruesA tabela seguinte contm as caractersticas eltricas do PIC 16F877A. Caracterstica Temperatura de Trabalho Vdd ( em relao Vss) Mxima Corrente de sada em Vss Mxima Corrente de entrada em Vdd Mxima Corrente drenada por I/O Mxima Corrente de sada po I/O Mxima Corrente drenada por PORTA + PORTB + PORTE Mxima Corrente fornecida por PORTA + PORTB + PORTE Mxima Corrente drenada por PORTC + PORTD Mxima Corrente fornecida por PORTC + PORTDMin -55 4 -Max Unidade 125 C 5,5 V 300 mA 250 mA 25 mA 25 mA 200 mA 200 mA 200 mA 200 mAExsto Tecnologia35 36. Microcontroladores PIC16F877AOs nveis de tenso de entrada e sada para o PIC so apresentados na tabela abaixo. Os valores 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 deve-se consultar a parte do manual de cada componente relativo aos portais de I/O. Parmetro VIH VIH VOL VOHTipo de buffer TTL Schmitt Trigger TTL Schmitt TriggerMin Vss Vss 2,0 4,0 4,3Max 0,8 1,0 VDD VDD 0,6 -Unid V V V V V VComo 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 reduzido. necessrio somente : A alimentao de +5V, bem regulada; Como em todo circuito digital, um capacitor de desacoplamento de 100nF bem prximo aos terminais de Vdd e Vss; O terminal /MCLR o terminal de reset do PIC e baixo ativo. Por isso ele deve ser mantido em nvel lgico alto. Recomenda-se a liga-lo a Vdd por um resistor (10k). No necessrio o circuito RC de reset. Definir-se um esquema de clock conforme j tratado. Um cuidado que deve ser tomado, independente do tipo de oscilador escolhido, fazer com que os componentes externos do circuito oscilador fiquem bem prximo uns dos outros e todos bem prximos ao microcontrolador. Alm disso, quando for confeccionada uma placa de circuito impresso deve-se minimizar as indutncias e capacitncias parasitas. Isso feito aumentando a espessura das trilhas, diminuindo seu comprimento e posicionando trilhas excessivamente prximas umas das outras. Esses cuidados so fundamentais quando se trabalha com freqncias altas.2.10 Gravao A gravao do microcontrolador PIC pode ser realizada sem que o componente seja retirado da placa (gravao in-circuit). Essa gravao feita de forma serial utilizando somente dois pinos: PB7/PGD para envio 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 gravao. Tambm necessrio que o microcontrolador esteja devidamente alimentado, portanto VDD e VSS devem estar devidamente conectados.Exsto Tecnologia36 37. Microcontroladores PIC16F877A2.11 O conjunto de instrues do PIC16F877A O set de instrues de um microcontrolador o conjunto de todas as instrues que o processador pode interpretar e executar. Voltando a analogia com um instrumento musical, so como as notas musicais que o compositor usa para escrever uma partitura. Cada processador (ou core) possui seu prprio conjunto de instrues (ou set de instrues). Isso significa que todos os microcontroladores da linha PIC16 so capazes de executar o mesmo cdigo, ou seja, falam a mesma lngua. Significa tambm que microcontroladores de outras famlias ou fabricantes no so compatveis com o cdigo gerado para PIC16 ou para outro conjunto de instrues (no falam a mesma lingua). Cada instruo na verdade um cdigo numrico (chamado Opcode) que o decodificador de instrues capaz de interpretar e disparar uma seqncia de aes pr-definida. Por exemplo, uma instruo de soma inicia um processo interno do microcontrolador que realiza movimento de bytes, ajusta e realiza operaes na unidade lgico-aritmtica, carrega resultados em endereos de memria. Fazendo uma analogia com um livro de culinria, o opcode indica a pgina onde esto os passos para a realizao de uma receita. Como criar uma lgica complexa 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 convenincia esses nomes fazem referncia a ao realiza, como poder ser observado brevemente. Para assembler o programa responsvel por traduzir o cdigo mnemnico (entendido pelo ser humano) para um cdigo numrico composto de opcodes (entendido pelo core do microcontrolador). Antes de estudar as instrues deve-se definir alguns termos que sero utilizados na descrio das instrues e na apresentao de sua sintaxe: f W b k x d PC NOT_TO NOT_PDRegistro da RAM (0x00~0x7F) Acumulador (Working register) Bit em um byte Constante de 8 bits Irrelevante destino: 0 => Acumulador (W) 1=> registro Program Counter Bit de time-out Bit de Power DownTOSTopo da pilha (Top Of Stack)O acumulador, chamado no PIC de Working Register ou simplesmente W, um registro interno do microcontrolador, no mapeado em RAM, que est envolvido na maioria das instrues. Como ser visto, ele participa das instrues de movimentao e um dos operandos ou o destino do resultado nas operaes lgico e matemticas.Para maior compreenso do funcionamento das instrues se faz necessrio comentar o funcionamento do registro de STATUS. Os bits desse registro nos apresentam a situao do Exsto Tecnologia37 38. Microcontroladores PIC16F877Amicrocontrolador a cada instruo. Esses bits so tipicamente chamados de flags (Bandeiras). Atravs deles podemos saber de resultados de operaes da ALU (se uma subtrao resultou em zero, se uma soma causou overflow, etc), a situao do RESET, alm do controle bancos de memria. R/W 0R/W 0IRPRP1R/W 0 RP0R1R/ 1R/W xR/W xR/W xNOT_TONOT_PDZDCCBit 7Bit 0STATUS 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) RP1~RP0 : 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 Time-out o 1 = aps todos os Resets, exceto time-out do WDT o 0 = ocorreu um time-out do WDT NOT_PD: Bit indicador de Power-down o 1 = quando ligado ou aps a instruo CLRWDT o 0 = pela execuo de uma instruo SLEEP Z: Bit indicador de zero o 1 = se o resultado de uma operao da ALU zero o 0 = se o resultado de uma operao da ALU diferente de zero DC: Carry/Borrow de dgito. Para borrow o sinal inverso o 1 = houve transporte do 4o. para o 5o. bit o 0 = no houve transporte do 4o. para o 5o. bit C: Carry/Borrow . Para borrow o sinal inverso o 1 = houve transporte do 8o. bit o 0 = no houve transporte do 8o. bitO conjunto de instrues do core PIC16 composto de 35 instrues, apresentadas a seguir. O campo Sintaxe mostra a forma de se escrever a instruo. O campo Operadores indica quais os operadores envolvidos e quais seus domnios. Operao apresenta a operao realizada pela instruo. O campo Flags Afetados mostra quais flags de STATUS so afetados pela execuo da operao; essas alteraes so comentadas abaixo dos quadros. No campo Ciclos est o nmero de ciclos de mquina gastos para a execuo da instruo. Finalmente, o campo Exemplo apresenta um exemplo simples de utilizao da instruo. As instrues so divididas, conforme sua funo, nos seguintes tipos: Manipulao de byte Manipulao e bit Matemticas Lgicas Exsto Tecnologia38 39. Microcontroladores PIC16F877A Testes e desvios condicionais Chamadas e desvio (controle de fluxo) Controle (da CPU)No anexo A existe uma tabela resumo de todas as instrues. Recomenda-se tirar uma cpia desta pagina e tela sempre mo para consulta rpida.2.11.1Manipulao de ByteAs instrues de manipulao de byte permitem atribuir valores a endereos da RAM e ao registro W. importante ressaltar que apesar de normalmente o mnemnico dessas instrues trazer a palavra move (mover) o valor do registro na verdade copiado, isto , o registro de destino recebe o valor do registro de origem, mas o valor da origem no alterado. CLRW "Zera" o registro W. O bit Z do registro STATUS setado. Sintaxe CLRW Operadores Nenhum Operao (W) 00h Flags Afetados Z Ciclos 1 Exemplo CLRW Alteraes nas Flags: Como a instruo resultou em um registro se tornar 0, o bit Z setado indicando esse evento. CLRF "Zera" o registro indicado por f. O bit Z do registro STATUS setado. Sintaxe CLRF f Operadores 0 f 127 Operao (f) 00h Flags Afetados Z Ciclos 1 Exemplo CLRF TEST Alteraes nas Flags: Como a instruo resultou em um registro se tornar 0, o bit Z setado indicando esse evento. MOVLW Move a constante k para W. Sintaxe Operadores Operao Flags Afetados Ciclos ExemploMOVLW k 0 k 255 (W) k Nenhum 1 MOVLW 35hExsto Tecnologia39 40. Microcontroladores PIC16F877AMOVF Move o valor do registro (f) para o destino. Se d 0 destino W; se d 1 o destino o prprio registro (f). Mover o valor do registro para ele mesmo til para testarmos se o valor 0, uma vez que essa instruo afeta o bit Z do registro STATUS. Sintaxe OperadoresMOVF f, d 0 f 127 d=0:W d = 1 : registro f (d) (f) Z 1 MOVF TEST,0Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags: Z = 0: o valor movido, diferente de zero. Z = 1: o valor movido, 0. MOVWF Move o contedo de W para o registro f. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo2.11.2MOVWF f 0 f 127 (f) W Nenhum 1 MOVWF TESTManipulao 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 valor de um nico bit de um determinado registro, sem qualquer influncia nos demais bits. BCF "Zera" o bit b do registro f. Sintaxe Operadores Operao Flags Afetados Ciclos ExemploBCF f, b 0 f 127 0b7 f[b] 0 Nenhum 1 BCF CONTROLE,5Exsto Tecnologia40 41. Microcontroladores PIC16F877ABSF "Seta" o bit b do registro f. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo2.11.3BSF f, b 0 f 127 0b7 f[b] 1 Nenhum 1 BSF CONTROLE,7MatemticasAs instrues matemticas so capazes de realizar operaes matemticas bsicas atravs da operao da ALU do microcontrolador. Como trata-se de um microcontrolador de 8 bits essas operaes tem operadores e resultados de 8 bits. Para clculos com valores maiores de 8 bits devese desenvolver rotinas fazendo uso das instrues bsicas. Da mesma forma, operaes mais complexas podem ser construdas a partir das rotinas bsicas. Essa raciocnio se aplica para operaes de multiplicao e diviso, que no suportadas pela ALU do PIC16.ADDLW Realiza a adio do valor contido em W com a constante k. O resultado armazenado em W. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:ADDLW k 0 k 255 (W) (W) + k C, DC, Z 1 ADDLW 35hC = 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 zero. Z = 1: o resultado da adio 0. Pode ocorrer com 128 + 128 = 256: C=1 e o resultado da adio igual a 0.ADDWF Realiza a adio do valor contido em W com o valor do registro f. O resultado armazenado no destino: d=0 para W ou d=1 para o registro f. Exsto Tecnologia41 42. Microcontroladores PIC16F877ASintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:ADDWF f, d 0 f 127 d=0:W d = 1 : registro f (d) (W) + (f) C, DC,Z 1 ADDWF TEST,0C = 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 valor contido no registro f. O resultado armazenado no destino: d=0 para W ou d=1 para o registro designado por f. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:DECF f,d 0 f 127 d=0:W d = 1 : registro f (d) (f) 1 Z 1 DECF COUNT,0Z = 0: o resultado do decremento diferente de zero. Z = 1: o resultado do decremento 0 (quando o valor original for igual a 1). INCF Incrementa o valor contido no registro f. O resultado armazenado no destino: d=0 para W ou d=1 para o registro designado por f. Sintaxe Operadores Operao Flags Afetados Ciclos ExemploINCF f,d 0 f 127 d=0:W d = 1 : registro f (d) (f) + 1 Z 1 INCF COUNT,0Exsto Tecnologia42 43. Microcontroladores PIC16F877AAlteraes nos Flags: Z = 0: o resultado do incremento diferente de zero. Z = 1: o resultado do incremento igual a 0 (quando o valor original for igual a 255). SUBLW O valor contido em W subtrado, pelo mtodo do complemento 2, da constante de oito bits k. O Resultado armazenado em W. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:SUBLW k 0 k 255 (W) k - (W) C, DC, Z 1 SUBLW 23hATENO: nessa operao os bits C e DC tem significado inverso ao que seria esperado, isto , quando ocorre um borrow ("estouro para menos"), os bits C e DC ficam em zero, ao contrrio que quando ocorre um Carry ("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 zero. Z = 1: o resultado da subtrao igual a 0. SUBWF O valor contido em W subtrado, pelo mtodo do complemento 2, do valor contido no registro f. O resultado armazenado no destino: d=0 para W ou d=1 para o registro designado por f. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:SUBWF f,d 0 f 127 d=0:W d = 1 : registro f (W) (f) - (W) C, DC, Z 1 SUBWF TEST,0ATENO: nessa operao os bits C e DC tm significado inverso ao que seria esperado, isto , quando ocorre um borrow ("estouro para menos"), os bits C e DC ficam em zero, ao contrrio que quando ocorre um Carry ("estouro para mais"), quando C e DC ficam em 1. Exsto Tecnologia43 44. Microcontroladores PIC16F877AC = 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 zero. Z = 1: o resultado da subtrao igual a 0.2.11.4LgicasAssim como as instrues matemticas, as instrues lgicas realizam operaes lgicas bsicas fazendo uso da ALU.ANDLW Realiza uma operao lgica "E" entre o valor contido em W e a constante k. O resultado armazenado em W. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags: Z = 0: Z = 1:ANDLW k 0 k 255 (W) (W) E k Z 1 ANDLW 0Fho resultado da operao "E" diferente de zero. o resultado da operao "E" igual a 0.ANDWF Realiza a operao "E" entre o valor contido em W o valor contido no registro f. O resultado armazenado no destino: 0 para W ou 1 para o registro designado por f. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:ANDWF f, d 0 f 127 d=0:W d = 1 : registro f (d) (W) E (f) Z 1 ANDWF TEST,1Z = 0: o resultado da operao "E" diferente de zero. Z = 1: o resultado da operao "E" igual a 0.Exsto Tecnologia44 45. Microcontroladores PIC16F877ACOMF Complementa o valor contido no registro f. O resultado armazenado no destino: d=0 para W ou d=1 para o registro designado por f. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:COMF f,d 0 f 127 d=0:W d = 1 :registro f (d) complemento de (f) Z 1 COMF TESTE,1Z = 0: o resultado do complemento diferente de zero. Z = 1: o resultado do complemento 0. O complemento de 255 (11111111b) 0 (00000000b). IORLW Realiza uma operao "OU" bit a bit entre o valor contido em W e a constante k. O resultado armazenado em W. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:IORLW k 0 k 255 (W) (W) OU (f) Z 1 IORLW TESTZ = 0 o resultado da operao "OU" diferente de zero. Z = 1 o resultado da operao "OU" igual a 0 (0 OU 0 igual a zero) IORWF Realiza a operao "OU" bit a bit entre o valor contido em W com o valor do registro indicado por f. O resultado armazenado no destino: d=0 para W ou d=1 para o registro designado por f. Sintaxe Operadores Operao Flags Afetados Ciclos Exemplo Alteraes nas Flags:[label] IORWF 0 f 127 d=0:W d = 1 : registro f (d) (W) OU (f) Z 1 IORWF TEST,1f, dZ = 0 o resultado da operao "OU" diferente de zero. Z = 1 o resultado da operao "OU" igual a 0 (0 OU 0 igual a zero). Exsto Tecnologia45 46. Microcontroladores PIC16F877ARLF O valor contido em f rotacionado para a esquerda atravs do bit de Carry (bit C do registro STATUS). O resultado armazenado no destino: d=0 para W ou d=1 para o registro designado por f. A operao de rotao a esquerda consiste no deslocamento sucessivo de bits de sua posio inicial para a posio consecutiva de modo que o ltimo bit do registro f v para C e o bit que estava em C v para o primeiro bit do registro f. Sintaxe Operadores Operao Flags Afetados Ciclos ExemploRLF f,d 0 f 127 d=0:W d = 1 : registro f veja a figura abaixo C 1 RLF TEST,1CRegistro fAlteraes nas Flags: C passa conter o valor (0 ou 1) do 8 bit do registro f.RRF O valor contido em f rotacionado para a direita atravs do bit de Carry (bit C do registro STATUS). O resultado armazenado no destino: 0 para W ou 1 para o registro designado por f. A operao de rotao a direita consiste no deslocamento sucessivo de bits de sua posio inicial para a posio consecutiva de modo que o primeiro bit do registro f v para C e o bit que estava em C v para o ltimo bit do registro f. Sintaxe Operadores Operao Flags Afetados Ciclos ExemploRRF f,d 0 f 127 d=0:W d = 1 : registro f veja a figura abaixo C 1 RRF TEST,1CRegistro fAlteraes nas Flags: C passa a conter o valor (0 ou 1) do registro f. Exsto Tecnologia46 47. Microcontroladores PIC16F877ASWAPF O nibble (conjuntos de 4 bits) mais significativo e o menos significativo do registro f so trocados. Ou seja, os bits de 7 a 4 vo para as posies de 3 a 0 e os bits de 3 a 0 vo para as posies de 7 a 4. A figura abaixo ilustra esse processo. O resultado armazenado no destino: d=0 para W ou d=1 para o registro designado por f.Sintaxe Operadores Operao Flags Afetados Ciclos ExemploSWAPF f,d 0 f 127 d=0:W d = 1 : registro f Destino [7:4] f [3:0] Destino [3:0] f [7:4] Nenhum 1 SWAPF TEST,1XORLW Realiza uma operao "OU exclusivo" entre o valor contido em W e a constante de oito