apost pic ft

Upload: thiago-garcia

Post on 18-Jul-2015

962 views

Category:

Documents


3 download

TRANSCRIPT

APOSTILA DE MICROCONTROLADORES FATEC TATU

Curso Eletrnica Modalidade Automao Industrial(Vers o e m com pos i o)

5 SemestreElaboradores: Orlando Homen de Mello (Prof. ) Andres sa Macedo R osa (Estagi ria Tecnol ogia)

1

FATEC TATU

INTRODUO

Esta apostila foi desenvolvida para auxiliar os alunos da Faculdade de Tecnologia de Tatu na disciplina de Microcontroladores do 5 semestre do curso de Eletrnica Automao Industrial. Pretende fornecer aos alunos os conhecimentos bsicos necessrios para iniciar as atividades de desenvolvimento de software de controle para o microcontrolador PIC16F628A produzido pela em presa Microchip. O curso abordar apenas a linguagem Assembly cujo compilador j vem incorporado ao Software MPLAB IDE. Sendo este uma sute de desenvolvimento fornecido gratuitamente pela Microchip. Como pr-requisito aconselhvel que o aluno tenha conhecimento de eletrnica digital e noes de funcionam ento de microprocessadores. A estratgia didtica desta apostila proporcionar os conceitos tericos e em seguida aplic-los nos exerccios prticos. Os exerccios ou exemplos prticos so orientados ao Hardware didtico, o qual foi elaborado para atender todas as propostas do curso.

2

FATEC TATU

CONCEITOS BSICOSPara a programao de microcontroladores necessrio ter o conhecimento de duas outras bases numricas alm da decimal, a base binria e a base hexadecimal.

SISTEM A NUMRICO BINRIO (base 2)

L EI D E F O R M A O N U M R IC A am-1 N = an .b -m .b Onde: N = nmero n = quantidade de algarismo - parte inteira m = quantidade de algarismo - parte fracionria Exemplo: 1) Soluo: n = 4 algarismos inteiros e b=2 (base) Ento: N = 1.24-1 + 1.24-2 + 0.24-3 + 1.24-4 N = 1.2 + 1.23 2 n-1

+ an-1 .b

n-2

+ an-2 .b

n-3

++a1 .b , a1 .b

0

-1

+ a2 .b

-2

++

Determinar o valor numrico binrio (1101)b

+ 0.2

1

+ 1.2

0

N = 1.8 + 1.4 + 0.2 + 1.1 N = 8 + 4 + 0 + 1 = 13 (decimal) 2) Soluo: m = 2 n = 3 b=2 Idem para o nmero binrio (110,11)b

N = 1.23-1 + 1.23-2 + 0.23-3 + 1.2-1 + 1.2-2 N = 1 .4 + 1. 2 + 0 + 1 . 0,5 + 1. 0,125 N = 6, 625 (decimal)

3

FATEC TATU

C ON VERS O D ECIMAL P AR A BIN R IO Mtodo Divises Sucessivas:

Ex: (135)d = (?)b

Portanto, (135)10 = (10000111)2

S I S T E M A N U M R I C O H E X A D E C I M AL ( b a s e 1 6 ) Binrio Hexadecimal Decimal

0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15 Tabela1- Nmeros binrios, hexadecimais e decimais.

Principal propriedade: algarismo binrio. Ex: (3A)h =(00111010)b 3 Obs.: Este fato hexadecimal e binrio. facilita A a converso direta entre os sistemas Em relao hexadecimal ao binrio, podemos relacionar 1 a 4 algarismos (bits) do sistema

4

FATEC TATU

O PER A ES AR ITM TIC AS C OM N MER OS B IN RIOS S O M A ( AD I O ) Operandos Result. Carry A 0 0 1 1 B 0 1 0 1 R 0 1 1 0 C 0 0 0 1 Ex: 101 +11 1000 Resultado Carry C = 1

SU BTR A O

Por complemento de dois: Complemento de um nmero:

Complementar o nmero (1011)b 1011 = 0100 + 1 = 0101 Ex.: 1) Determinar a subtrao A-B: A = (1110)b R = A-B = A + /B B = 1010 = 0101 + 1 => B = 0110 Ento: + 1110 0110 10100 Carry C = 1 Resultado positivo Portanto, R = (0100)b 2) Idem para: A = (1010)b R = A-B /B = 0001 + 1 Ento: + 1010 0010 01100 Carry C = 0 Resultado deve-se complementar o nmero. R = -1100 = -(0011 + 1) = - 0100 ne gat ivo, e B = (1110)b R = A + B e B = (1010)b

/B = 0010

5

FATEC TATU

M U L T I P L I C A O E D I V I S O P EL A B AS E A multiplicao e diviso pela base ou mltiplos da base binria pode ser feita atravs de deslocamento (rotao) esquerda ou direita respectivamente. Obs.: O processador alvo de nosso estudo possui as instrues de rotao de um registro, mas no possui instruo de multiplicao e diviso, portanto estas funes devem ser implementadas pelo programa.

F U N E S E P O R T AS L G IC AS NO ou NOT negao da condio ou estado

Tabela - Verdade

Porta Lgica

Funo

A 0 1

S 1 0

S = A

E ou AND dependncia

Tabela Verdade A 0 0 1 1 B 0 1 0 1 S 0 0 0 1

Porta Lgica

Funo

S = A.B

6

FATEC TATU

OU ou OR independncia

Tabela Verdade A 0 0 1 1 B 0 1 0 1 S 0 1 1 1

Porta Lgica

Funo

S = A+B

XOR ou exclusivo

Tabela Verdade A 0 0 1 1 B 0 1 0 1 S 0 1 1 0

Porta Lgica

Funo

S = A

B

LGEB R A B OO LE AN A Postulados A . 1 = A A . 0 = 0 A . /A = 0 A A + 1 = 1 A + 0 = A A + /A = 1 1 = /A

7

FATEC TATU

L G I C A D E P R O G R AM A OLGIC A D E PROGRAM A A lgica de programa necessria para o desenvolvimento de sistemas e programas, ela permite definir a sequncia lgica para o desenvolvimento. Ou seja, a tcnica de encadear pensamentos para atingir determinado objetivo ou soluo de um problema. Estes pensamentos podem ser descritos como uma sequncia de instrues. ESTR UTUR A O DAS ID EI AS Para o desenvolvimento de programas, necessrio saber passo a passo o que se deseja fazer. Aps isso, transforme o objetivo em instrues que sero interpretadas pelo processador, de forma a conseguir um programa que resolva a situao problema. Em informtica, instruo a informao que indica ao processador uma ao a executar, ou seja, uma linha do programa. Para criar um programa, preciso ordenar as idias (instrues) de forma lgica e sequencial, segundo o objetivo a ser alcanado, pois somente dessa forma o objetivo ser alcanado de forma correta. FL UXOGR AM A O fluxograma a forma padronizada e eficaz para representar os passos lgicos de um determinado processamento. Com o fluxograma possvel definir uma sequncia de smbolos, com significado bem definido, portanto, sua principal funo a de facilitar visualizao dos passos lgicos. A tabela 2 mostra os principais smbolos utilizados num fluxograma: SMBOLOS processo geral. Ex.: clculo de dois nmeros deciso desvio Indica um deciso a ser tomada. Permite o desvio para um ponto qualquer do programa. Indica bloco. Entrada/sada Operao de entrada e sada de dados. Ex.:Leitura e gravao de arquivo. Indica entrada de dados atravs do teclado Tabela 2- Smbolos do fluxograma o comeo do FUNO Processamento

em

incio

Entrada manual

8

FATEC TATU

O M IC R O C O N T R O L AD O R ( M C C ) E O M IC R O PR O C E S S AD O R ( M C P) O microcontrolador (figura 1b) um C.I. que contm um microprocessador (figura 1a) e diversos perifricos. Comumente, temos os seguintes perifricos: Memrias de programa e dados; Timers/Counters; USART, IC, USB, CAN, SPI; Conversores A/D e D/A; Comparadores

Ainda o MCC difere do MCP pela maior capacidade de corrente dos pinos de I/O, tipicamente tem corrente suficiente para acender leds. M I C R O P R O C E S S AD O R

Figura 1a: Microprocessador M I C R O C O N T R O L AD O R

Figura1b: Microcontrolador

9

FATEC TATU

V AN T A G E N S D O M C C E M R E L A O A O M C P Menor custo de projeto Menor quantidade de perifrico Menor custo ao produto Maior confiabilidade Manuteno rpida

APLIC A ES TPIC AS Domsticas Controle de Impressoras Ajuste de vdeo Mquinas de lavar celulares

Industriais CNC CLP Inversores Etc.

A R Q U I T E T U R AS H AR V A R D x V O N - N E U M AN NSo tipos de estruturas internas de mquinas, ou seja, como suas partes internas se interligam. Tradicionalmente, os MCCs utilizam a arquitetura Von-Neumann, que se caracteriza pela disponibilidade de uma nica memria principal, na qual se armazena dados e instrues, figura 2a. Estes trafegam por um nico barramento interno, geralmente de 8 bits. J a arquitetura interna dos PICs do tipo Harvard, que dispe de memrias de dados e de programas e cada memria possui seu respectivo barramento, figura 2b. Assim, esta arquitetura tem o processamento mais rpido, pois no mesmo instante em que uma instruo est sendo executada, a prxima instruo pode ser buscada na memria de programa. Neste caso, o barramento de dados sempre de 8 bits e o de instrues pode ser de 12, 14 ou 16 bits, dependendo do MCC.

10

FATE C TAT U

Na arquitetura Harvard como o barramento de instruo maior do que 8 bits, o OPCODE (OPeration CODE) da instruo j inclui o dado e o local onde ele vai operar (quando necessrio)(figura 14) , o que significa que apenas uma posio de memria utilizada por instruo, economizando assim muita memria de programa. Desta forma, dentro da palavra do OPCODE, que pode ser de 12, 14 ou 16 bits, no sobra muito espao para o cdigo da instruo propriamente dito, por isso os PICs utilizam o cdigo RISC.

VO N- NEU M AN N

8bits

Memria de Programa e Dados

CPU

Dados/Inst Endereos

Figura 2a: Arquitetura Von-Neumann

H ARV ARD

8bits Memria de DadosEnder eos Dados

12,14,16 bitsInstrues

Memria de Programa

CPU

Endereos

Figura 2b: Arquitetura Harvard

11

FATE C TAT U

TIPOS DE MEMRIA DO MCC

MEMR IA D E PR OGR AM A

M E M R I A D E D AD O S

1. ROM 2. PROM 3. EPROM 4. FL ASH 1. R AM 2. EEPRO

Figura 03- Esquema dos Tipos de Memrias

C AR AC T E R S T I C AS D AS M E M R I AS M E M R I AS D E PR O G R AM A a l o c a m o s c d i g o s o u i n s t r u e s para o processador executar. 1. ROM (Read Only Memory)

Memria gravada na fabricao do chip e indicada nas aplicaes de larga escala de produo devido ao baixo custo em relao as demais. 2. PROM (Programmable Read Only Memory)

Memria que pode ser gravada pelo usurio apenas uma vez. Nos microcontroladores da Microchip que utilizam este tipo de memria tem a letra C incorporada no cdigo comercial. Exemplos: PIC16C54, PIC12C509 e outros. Obs: Os dispositivos com essas caractersticas denominados de OTP (Only Time Programable). 3. tambm so

EPROM (Erase Programmable Read Only Memory)

Memria pode ser apagada e reprogramada pelo usurio. Os MCCs que utilizam esse tipo de memria tm em seu encapsulamento uma janela transparente para o apagamento por radiao ultra-violeta. 4. FL ASH eletricamente sendo esta a mais utilizada

Memria apagvel atualmente nos MCCs.

12

FATE C TAT U

M E M R I AS D E D AD O S u t i l i za d a n o a r m a ze n a m e n t o d e d a d o s o u variveis de um sistema. 1 . R AM ( Ra ndom Acc es s Memor y) Memria da classe voltil e nos MCCs a RAM do tipo esttica, e ainda denominada de registradores de uso geral.

2. EEPROM Only Memory)

(Electrical

Erasable

Programmable

Read

Memria no voltil utilizada no armazenamento de dados. Comumente o MCC contm uma poro internamente, e quando necessita-se maior quantidade desta memria pode-se utilizar de EEPROM externamente. As externas mais utilizadas so as de barramento serial (IC).

13

FATE C TAT U

A CPU GENRICA DO MCC

OPERAES LGICAS OPERAES ARITM TICAS SETAR E RESET AR BITS

1. ULA

RISC CISC SISC

CPU

2. CDIGO DE INSTRUO

TIPOS

USO G ERAL FINALIDADES ESPECFICAS (SFRs)

3 . R E G I S T R AD O R E S

Figura 04- Componentes da CPU CPU (Central Processing Unit) responsvel pelo gerenciamento de todo o sistema e execuo dos programas. Composta por trs mdulos: ULA, cdigo de instruo e registradores. 1. UL A ( Un id ade Lgica e Arit mtica) Mdulo responsvel pelos clculos matemticos e manipulao de dados durante a execuo de um programa. Executa operaes lgicas e aritmticas, seta bit, reseta bit, testa bit e rotaciona.

2. CONJUNTO DE INSTRUES RISC, CISC e SISC So classes de CPU em relao ao conjunto de instrues.

RISC (Reduced Instruction Set Computer) So CPUs com conjunto de instrues reduzidos, que possui cerca de 35 instrues simples. Sendo necessrias vrias linhas para executar um comando, isso alonga o programa do usurio.

14

FATE C TAT U

CISC (Complex Instruction Set Computer) So CPUs com conjunto de instrues complexas. Estas so sofisticadas e potentes, facilitando muito a programao ao usurio e reduzem a quantidade necessria de memria de programa.

SISC (Specific Instruction Set Computer) So CPUs com conjunto de instrues especficas, ou seja, uma classificao para CPUs dedicadas a aplicaes bem especficas, e que possuem instrues particulares da aplicao proposta. 3 . R E G I ST R AD O R E S So endereos na memria. Podendo ser tanto de uso geral como de finalidades especficas (SFRs). O primeiro armazena dados temporrios e o segundo so utilizados em tarefas predeterminadas. Registrador Work (W) Antigamente, conhecido por acumulador o registrador W um registrador de uso geral, ou seja, armazena e transfere dados temporrios de at 8 bits e trabalha em conjunto com a ULA, pois todas instrues aritmticas e booleanas so feitas por ele. A seguir na figura 5, o diagrama do registrador W.

INDF TMR0 S TP C L S ATU FSR PORTA Outros SFRs GPRs Registradores de Uso Geral ( R AM)

W

Figura 5- Conceito do Registrador W

15

FATE C TAT U

O PICPIC (Peripherical Interface Controler) HISTRIA Em 1965, a GI Microelectronics deu seus primeiros passos, fabricando memrias EPROM e EEPROM. Desenhou no incio dos anos 70 o MCC de 16 bits CP1600, que trabalhava bem, mas de forma ineficaz no controle de portas I/O. Para resolver este problema, em 1975, a diviso de microeletrnica, transformada mais tarde em Arizona Microchip Technolog y, desenhou um chip destinado a controlar portas I/O. Nascia, assim, o PIC, principal produto desta empresa. Com estrutura muito mais simples que um processador, ele podia manejar as portas I/O com muita facilidade, rapidez e eficincia. Atualmente, um dos grandes fabricantes de MCCs PIC a Microchip, que tem sua principal fbrica em Chandler, Arizona, e em 1993 foi construda outra fbrica em Tempe, Arizona, que tambm conta com centros de fabricao no Taiwan e na Tailndia. Em 2008, a Microchip participou com 57% das vendas de MCCs da categoria de 8 bits.

F AMLI AS e D ESEM PEN HO DO PIC a famlia de MCCs que utilizam o cdigo de instruo RISC, o que permite que eles tenham um set de instruo reduzido. Os MCCs da famlia PIC podem funcionar com frequncias de at 40MHz. Eles so divididos em quatro grupos, diferenciados pela capacidade de armazenamento em cada localidade de sua memria de programa: 12, 14, 16 e 32 bits. A figura 6 a seguir, ilustra um grfico da Funcionalidade x Desempenho.

Figura 6- Grfico Funcionalidade x Desempenho.

16

FATE C TAT U

Uma das razes do sucesso do PIC a base de sua utilizao, ou seja, quando se aprende a trabalhar com um modelo, fica fcil migrar para outros modelos, j que todos tm uma estrutura parecida. Cada tipo de MCC serve para um propsito, e cabe ao projetista selecionar o melhor para o seu trabalho. Dentre os mais populares, encontramos o 16F84, ainda fcil de obter, mas que est sendo substitudo pelo modelo 16F627 ou 16F628, por ter mais recursos e preos aproximados. A diferena entre o PIC 16F627 e 16F 628 est na quantidade de memria. O bs.: O PIC1 6F 88 similar a o 16F628 , por m cont m um A/D internamente (10 bits).

17

FATE C TAT U

O PIC 16F628A Principais caractersticas: 16 pinos de I/O; Frequncia de at 20MHz; Oscilador interno de 4MHz/37KHz; 2Kx14 bits de memria FLASH de programa; 224x8 bits de memria RAM para dados; 128x8 bits de memria EEPROM interna; Mdulo TIMER0 (timer/contador 8 bits); Mdulo TIMER1 (timer/contador 16 bits); Mdulo TIMER2 (timer de 8 bits); Mdulo CCP (modos Capture, Compare e PW M); Mdulo de referncia de tenso (16 passos); Dois comparadores analgicos com referncia interna programvel de tenso; Um canal de comunicao serial-USART; Um watchdog timer; Capacidade de corrente de 25 mA por pino de I/O; 35 instrues; Dez fontes de interrupo independentes; Modo de funcionamento sleep; Tenso de operao entre 3 a 5v para as verses F, e 2 a 5v para as verses LF.

AR QU ITETUR A IN TER N A A figura 7 mostra o diagrama em blocos da arquitetura interna do PIC16F628A em que se destacam as memrias de programa, RAM e EEPROM, a ULA, contador de programa e os perifricos presentes no MCC.

18

FATE C TAT U

Figura 7- Arquitetura Interna do PIC16F628A

19

FATE C TAT U

P I N AG E M ( E n c a p s u la m e n to s P DI P e SO IC )

Pino1

FunoRA2/AN2/VREF

TipoEntrada/Sada

DescrioPORTA bit 2/Entrada do comparador analgico/ Sada da tenso de referncia PORTA bit 3/Entrada do comparador analgico/Sada comparador 1. PORTA bit 4/ Entrada de clock externo do timer 0/Sada comparador 2.*Esse pino possui sada com dreno aberto* PORTA bit 5/Reset CPU/Tenso de programao Terra PORTB bit 0/Entrada de interrupo externa PORTB bit 1 /Recepo USART (modo assncrono)/Dados (modo sncrono) PORTB bit 2/Transmisso USART (modo assncrono)/Clock (modo sncrono) PORTB bit 3/Entrada ou sada do mdulo CCP PORTB bit 4/Entrada de programao LVP* PORTB bit 5 PORTB bit 6/Entrada do oscilador do

2

RA3/AN3/CMP1

Entrada/Sada

3

RA4/T0CKI/CP2

Entrada/Sada

4

RA5/MCLR/VPP

Entrada

5 6 7

VSS RB0/INT RB1/RX/DT

Alimentao Entrada/Sada Entrada/Sada

8

RB2/TX/CK

Entrada/Sada

9 10 11 12

RB3/CCP1 RB4/PGM RB5 RB6/T1OSO/T1CKI/PGC

Entrada/Sada Entrada/Sada Entrada/Sada Entrada/Sada

20

FATE C TAT U

13

RB7/T1OSI/PGD

Entrada/Sada

14 15

VDD RA6/OSC2/CLKOUT

Alimentao Entrada/Sada

16

RA7/OSC1/CLKIN

Entrada/Sada

17 18

RA0/AN0 RA1/AN1

Entrada/Sada Entrada/Sada

TMR1/Entrada de clock do TM R1/Clock na prog.ICSP* PORTB bit 7 / Entrada do oscilador do TMR1/ Dados na prog. ICSP Alimentao positiva (3 a 5v) PORTA bit 6/Entrada para cristal oscilador/Sada de clock PORTA bit 7/Entrada para cristal oscilador/Entrada de clock externo PORTA bit 0/Entrada do comparador analgico PORTA bit 1/Entrada do comparador analgico

*LVP - Baixa voltagem de programao. *Dreno aberto - Uma fonte de alimentao externa deve ser aplicada ao pino. *ICSP - Programao in-circuit. C AR AC T E R S T I C AS E L T R I C AS E O U T RAS Temperatura de trabalho................................. -40C at +125C Temperatura de armazenamento....................... -65C at +150C Tenso de trabalho......................................... 3V a + 5,5V Voltagem mxima no pino Vdd (em relao ao Vss)..-0,3V at + 6,5V Voltagem mxima no pino MCLR (em relao ao Vss).........0,3V at +14V Voltagem mxima nos demais pinos (em relao ao Vss)..-0,3V at (Vdd +0,3V) Dissipao mxima de energia.........................................800mW Corrente mxima de sada no pino Vss..............................300mA Corrente mxima de entrada no pino Vdd...........................250mA Corrente mxima de entrada de um pino (quando em Vss)......25mA Corrente mxima de sada de um pino (quando em Vss).........25mA Corrente mxima de entrada em PORTA+PORTB.................200mA Corrente mxima de sada em PORTA+PORTB....................200mA

21

FATE C TAT U

O SCIL AD OR ES Toda a CPU capaz de executar vrias tarefas denominadas instrues. A base de tempo utilizada pela CPU para executar cada instruo obtida a partir de um sinal de clock gerado por um circuito oscilador, que geralmente uma onda quadrada. Cada instruo que este PIC executa consume quatro ciclos de clock e denominado ciclo de instruo. O circuito oscilador do PIC16F628A pode funcionar em oito diferentes modos de operao. A escolha do modo de operao feita por meio de trs bits de configurao. A configurao pode ser efetuada de duas maneiras, uma e a mais comum, no programa-fonte por meio de um a sintaxe prpria, outra atravs do MPLAB conforme a figura 8 mostra a existncia de uma janela de configurao do modo de operao do oscilador.

Figura 8- Janela de configurao de bits do MPLAB A seguir o significado de cada opo do modo de funcionamento do oscilador, no esquecendo de que a opo escolhida tem de estar em sintonia com hardware utilizado. RC:CLOCK no pino RA6 RC:I/O (RA6 disponvel como I/O) no pino RA6 INTOSC: I/O Oscilador interno sem sada de clock (RA6 e RA7 disponveis com I/O) EC HS alta frequncia (at 20MHz) frequncia XT (at 4MHz) Oscilador de clock externo Cristal/Ressonador cermico de Cristal/Ressonador de alta RC externo sem sada de clock RC externo com sada de clock

INTOSC:CLKOUT Oscilador interno com sada de clock

22

FATE C TAT U

LP frequncias (at 200KHz)

Cristal/Ressonador

de

baixas

A figura 9 mostra os 3 circuitos de clock.

Figura 9- Circuito de clock

CICLO DE MQUINAO PIC divide a frequncia gerada pelo oscilador principal (clock externo) por quatro, dando origem ao um sinal de clock com frequncia quatro vezes menor. Esse novo sinal de clock (clock externo/4), chamado de clock interno ou ciclo de instruo exibido na figura 11, usado como a referncia para a execuo das instrues. Assim, se o clock interno for de 4MHz, o ciclo de instruo ser de 1MHz e o seu perodo ser de 1/1M = 1 s.

Figura 10- Ciclo de mquina Todas as instrues, com exceo daquelas que provocam desvio no programa, como CALL e GOTO, so executadas em um ciclo de instruo. As instrues que provocam desvio no programa so executadas em dois ciclos. Isso torna o sistema muito mais rpido e s possvel porque o barramento de dados separado do barramento de instrues de programa.

23

FATE C TAT U

PIPELINEO processo pipelining uma tcnica de segmentao que permite ao MCC fazer a busca de uma instruo num determinado ciclo de mquina e realizar a sua decodificao e execuo no ciclo seguinte. Considera-se que cada instruo armada e executada num ciclo de mquina. Contudo, se uma instruo provocar uma mudana no contedo do contador do programa (PC), e caso ele no aponte para o endereo seguinte na memria de programa, mas sim para outro (como acontece em saltos ou chamadas de sub-rotinas), deve-se considerar que a execuo desta instruo demora dois ciclos de mquina, pois a instruo deve ser processada de novo, mas desta vez a partir do endereo correto. Veja a figura 11:

Figura11- Processo pipeline T1- feita a busca da instruo MOVLW 0x55. T2- executada a instruo MOVLW 0x55 e feita a busca da instruo MOVW F PORTB. T3- executada a instruo MO VW F PORTB e feita a busca da instruo CALL LED. T4- executado o salto (CALL) e feita a busca da instruo seguinte BSF PORTA, 0. Como esta instruo no primeira instruo aps a entrada da sub-rotina LED, faz-se necessrio uma nova leitura do salto, gastando-se um ciclo. T5-busca da instruo da sub-rotina. T6-execuo prxima instruo. da primeira instruo da sub-rotina e busca da

24

FATE C TAT U

M AP E AM E N T O D E ME M R I A O PIC 16F628A possui trs memrias distintas. Uma memria Flash utilizada para armazenar o programa que ser executado pelo MCC, uma memria RAM utilizada para o armazenamento de dados temporrios e uma memria EEPROM que utilizada para armazenamento de dados que no podem ser perdidos mesmo quando a energia for desligada. Conforme mostra a tabela 3, a capacidade de armazenamento e os tipos de memrias.

d e M Eo ga mA S F l a s h ) Pr M r RI a ( d e D a d o s ( R AM ) EEPROM

C A P A C I D A D E 2 0E 8 x 1 4A Z E N A M E N T O D 4 ARM

224x8 128x8

Tabela 3- Tipos de Memrias e capacidade de armazenamento

M E M R I A D E P R O G R AM A

0000h

Vetor de reset Vetor de interrupo Tipo: 14 bits Tamanho: 2048 palavras Vetor de reset: 0000h Vetor de inter.: 0004h

0004h

USO GERAL 07FFh

Figura 12- Memria de Programa

M E M R I A D E D AD O S A memria RAM dividida em quatro bancos e compartilhada pelos registradores de uso geral (GPRs) e pelos registradores de finalidades especficas (SFRs). A figura x ilustra o mapeamento de memria RAM.

25

FATE C TAT U

Tabela 3- Memria de Dados Assim, quando quiser acessar algum registrador SFR que est no banco 1, por exemplo, deve-se primeiro informar ao sistema que se deseja trabalhar com esse banco.

26

FATE C TAT U

Para tal, deve-se alterar o valor dos bits RP0 e RP1 no registrador STATUS. A combinao desses dois bits (chaves) possibilita selecionar um dos quatro bancos como o ativo no momento. A tabela a seguir relaciona o valor desses bits com o banco selecionado. Banco 0 1 2 3 RP1 0 0 1 1 RP2 0 1 0 1

MEMRI A EEPROMO acesso a esta memria feito atravs dos registradores EEADR e EEDATA. O primeiro armazena o endereo e o segundo armazena o dado.

A P I LH A O U S T AC KA pilha uma memria, independente da memria de dados e da memria de programa, com estrutura LIFO (Last In First Out), onde o ltimo dado a entrar ser o primeiro a sair. Possui oito nveis de profundidade com armazenamento de 13 bits cada. Sua funo guardar o valor do PC (Program Counter) quando ocorre um salto do programa principal para o endereo de um subprograma a ser executado, fazendo com que o MCC tenha total controle sobre as chamadas de rotinas. Seu funcionamento como o de buffer circular, onde o endereo da ltima cha mad a o pr imeiro a r etorn ar em uma cha mad a RETUR , R ETLW ou RETIE. Como no h nenhuma flag indicando o transbordamento da pilha, se houver uma chamada de rotina que ocupe mais de oito nveis a primeira ser sobrescrita, impossibilitando o retorno correto do programa.

Stack nvel 8 Stack nvel 7 . . . Stack nvel 113bits CALL,RETURN RE TFIE, RETLW

Vetor RESET

0000h

Vetor INTERRUPO

0004h 0005h 03FFh

Memria de programa Memria de programa somente 16F628

PC

07FFh

1FFh

27

FATE C TAT U

FOR MATO D AS I NSTRUESAs instrues so formadas por um conjunto de bits que so decodificadas pelo MCC, fazendo com que ele execute uma operao bem definida. A quantidade de bits pode variar de uma para outra, dependendo do MCC. No caso particular do PIC16F628A, todas as instrues possuem o mesmo tamanho, 14 bits. De maneira geral, as instrues so formadas por dois campos distintos: OPCODE Operando

Os primeiros bits da instruo representam o OPCODE, os demais formam o operando e podem conter dados (L), registrador (F) ou bit de um registrador (B). Nem todas as instrues possuem operando, como no caso da instruo RETFIE, cuja funo retornar de uma interrupo.

Figura 14-Formato Geral das Instrues em 14 bits

LI N G U AG E M AS S E M L YNa Famlia do PIC, cada instruo em assembly armazenada no MCC ocupando apenas uma posio da memria de programa (cada posio tem 14 bits de largura). Esta palavra de 14 bits que foi armazenada na memria cham ada de OPCODE. O s MCCs no reconhecem comandos tais como MOVW F, INCF, BSF, etc., o que eles entendem so: 11010111011101, 11110001110011, etc.. Por outro lado os programadores no conseguem decorar e entender

28

FATE C TAT U

esses montes de 1s e 0s, porm sabem o que MOVW F, INCF, BSF, etc. Para resolver o problema foi dado um nome a cada instruo, o mnemnico da instruo, utilizando a linguagem Assembly que nada mais do que uma representao mais amigvel do opcode. A linguagem Assembly composta por cinco elementos bsicos: Label utilizado para representar o incio de um bloco de instrues que executa uma tarefa definida dentro do programa. Deve comear na coluna 1 e pode ter um comprimento mximo de at 32 caracteres, tendo que obrigatoriamente que comear com um caractere alfanumrico ou _ (underline). muito comum o uso do label em conjunto com as instrues que provocam desvio no programa, como CALL e GOTO. Neste caso, o label substitui o endereo para onde o programa ser desviado. Mnemnico a parte da sintaxe de uma instruo e especfica qual tarefa ser executada. Assim, aconselhvel que todas as instrues sejam escritas com letras maisculas para evitar problemas. Operando Pode ou no fazer parte da sintaxe de uma instruo. O operando pode ser um registrador, uma constante, valor numrico ou varivel. Quando h mais de um operando na instruo, eles so separados por vrgulas. E tambm devem ser escritos com letras maisculas. Comentrio um texto colocado aps cada instruo para informar a tarefa que est sendo executada, fazendo com que o programa fique mais legvel e fcil de entender. Todo o comentrio deve ser precedido do ponto-evrgula (;), tudo que esteja escrito a partir ponto-e-vrgula, at o final da linha seja desprezado pelo montador. Diretivas So com andos que no fazem parte do set de instrues do MCC, mas so reconhecidas pelo programa montador. Elas no so convertidas diretamente em linguagem de mquina e sim, usadas para controlar o Assembly. As mais utilizadas so: #DEFINE, #INCLUDE, ENDC, END e outras. Label Mnemnico Operando Comentrio Diretivas

29

FATE C TAT U

TE R M O S U TI LI Z AD O STodas as instrues utilizam os seguintes dados para descrever a sua nomenclatura:

Campo F (file) W (work) B ( bit)

Descrio

Endereo de Registrador (0 a 127 )d. Registrador Work (acumulador). Endereo do bit dentro de um registrador de 8 bits. Seleo do destino da instruo: d (destino) d = 0 (armazena o resultado em W) d = 1 (armazena o resultado em f) Valor imediato (literal) de 8 bits ou label K Nome alfanumrico. label T (teste) Testa um bit de um byte se este 0 ou 1. Valor numrico no programa que L (literal) pode ser decimal, binrio, hexadecimal ou cdigo ASCII. Pula a prxima linha do programa S (skip) se uma determinada condio for satisfeita. Um bit de um byte ser setado, ou seja, S (set) forado a assumir nvel 1. C (clear) Um bit de um byte ser forado a assumir nvel 0, ou seja, "clear" um bit. resultado da operao for zero. Z (zero)Tabela 4: Termos Utilizados Todos os demais termos utilizados so especficos das aes realizadas pelas instrues e so praticamente auto-explicativos. Abaixo, eles aparecem conforme so utilizados: ADD soma. AND Lgica E. CLR Limpar, zerar (Clear). COM Complemento. DEC Decremento de uma unidade. INC Incremento de uma unidade. IOR Lgica OU. MOV Mover, transferir para algum lugar.

30

FATE C TAT U

RL Rotacionar 1 bit para a esquerda (rotation left). RR - Rotacionar 1 bit para a direita (rotation right). SUB Subtrao. SW AP Inverso entre as partes alta e baixa de registrador. XOR Lgica OU exclusivo.

A C O N S TR U O D O S N O ME S D AS I N S TR U ESCom base nos termos apresentados at aqui, ser muito mais fcil entender o significado de uma instruo por meio do seu nome, pois ele composto pela juno desses termos. Por exemplo, decrementar o valor de um determinado registrador. A instruo que far isso composta pelos termos referentes ao desejada. Decrementar (DEC) um registrador (F) = DECF

Agora, partindo do nome de uma instruo para descobrir para que ela serve: DECFSZ = Decrementa (DEC) o registrador (F) e pula (S) se o resultado for zero (Z).

R E S U MO D AS I N S TR U E STodo MCC capaz de executar um conjunto de tarefas denominadas instrues. O PIC 16F628A capaz de executar 35 instrues, que so dividas em quadro grupos (Tabela5):

INSTR./TIPOS

LITERAISANDLW, XORLW, IORLW ADDLW, SUBLW MOVLW no tem

REGISTRADORESANDWF, RLF, COMF, SWAPF, XORWF, RRF, DECFSZ, INCFSZ, IORWF ADDWF, DECF, INCF, SUBWF, CLRF, CLRW MOVWF no tem

BIT

CONTROLENOP, CLRWD, SLEEP no tem CALL, GOTO, RETFIE, RETLW, RETURN no tem

LGICAS ARITMTICAS DESVIOS DECISO (TESTE)

BTFSC, BTFSS no tem no tem BCF, BSF

Tabela 5: Tipos de Instrues seguir a tabela 6 das instrues resumidas.

31

FATE C TAT U

Tabela 6- Instrues resumidas

32

FATE C TAT U

C O N JU N TO D E IN S TR U E S D E T AL H AD ASADDLW Sintaxe Descrio ADDL W, k Adiciona o contedo de k em W. C, DC, Z

Bits de STATUS afetados Exemplo ADDLW 0x15

ADDWF Sintaxe Descrio ADDWF f, d

Soma W com o registrador f; d = 0: Resultado armazenado em W. d = 1: Resultado armazenado no registrador f. Bits de STATUS afetados Z, C, DC Exemplo ADDWF FSR, 0

ANDLW Sintaxe Descrio ANDLW k

Operao AND lgico do contedo do registrador W com o literal k. O resultado armazenado no registrador f. Bits de STATUS afetados Z Exemplo ANDLW 0x0F

ANDWF Sintaxe Descrio ANDWF f, d Operao AND lgico de W com o registrador f: d = 0: Resultado armazenado no registrador W. d = 1: Resultado armazenado no registrador f. Z

Bits de STATUS afetados Exemplo ANDWF FSR, 1

BCF Sintaxe Descrio Bits de STATUS afetados Exemplo BCF PORTB, 1 BCF f, b Zera o bit (0 b 7) do registrador f. Nenhum

33

FATE C TAT U

BSF Sintaxe Descrio Bits de STATUS afetados Exemplo BSF PORTA, 3 BSF f, b Seta o bit (0 b 7) do registrador f. Nenhum

BTFSC Sintaxe Descrio BTFSC f, b

Testa o bit do registrador f e salta uma instruo se bit igual a zero. Bits de STATUS afetados Nenhum Exemplo BTFSC STATUS, C GOTO Label_1 GOTO Label_2 BTFSS Sintaxe Descrio BTFSS f, b

Testa o bit do registrador f e salta uma instruo se bit igual a 1. Bits de STATUS afetados Nenhum Exemplo BTFSS LED GOTO Label_1 GOTO Label_2 CALL Sintaxe Descrio CALL k

Salta para a Subrotina k. Primeiro, o endereo de retorno (PC+1) salvo na pilha, depois o valor de k carregado no Contador do Programa(PC), fazendo com que o programa salte para o endereo k. Bits de STATUS afetados Nenhum Exemplo CALL TESTE

CLRF Sintaxe Descrio CLRF f

O contedo do registrador f zerado e o bit Z do STATUS setado. Bits de STATUS afetados Z Exemplo CLRF PORTB

34

FATE C TAT U

CLRW Sintaxe Descrio CLRW

O contedo do registrador W zerado e o bit Z do STATUS setado. Bits de STATUS afetados Z Exemplo CLRW

CLRWDT Sintaxe Descrio CLRWDT

Zera o temporizador Watchdog (WDT), zera a pr-escala do WDT e seta os bits /PD e /TO. Bits de STATUS afetados /PD , /TO, Z Exemplo CLRWDT

COMF Sintaxe Descrio COMF f, d

Gera o complemento do registrador f, ou seja, troca os 1s por 0s e vice-versa: d = 0: O resultado armazenado no registrador W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados Z Exemplo COMF PORTB

DECF Sintaxe Descrio W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados Z Exemplo DECF PORTB, 1 DECF f, d Decrementa o contedo do registrador f: d = 0: O resultado armazenado no registrador

35

FATE C TAT U

DECFSZ Sintaxe Descrio W. d = 1: O resultado armazenado no registrador f. Se o resultado for zero, ento a prxima instruo descartada e um NOP executado. Bits de STATUS afetados Nenhum Exemplo DECFSZ CONTADOR, 1 GOTO Label_1 GOTO Label_2 GOTO Sintaxe Descrio GOTO k Salta para o endereo k Nenhum DECFSZ f, d Decrementa o contedo do registrador f: d = 0: O resultado armazenado no registrador

Bits de STATUS afetados Exemplo GOTO Label_1

INCF Sintaxe Descrio W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados Z Exemplo INCF CNT, F INCF f, d Incrementa o contedo do registrador f: d = 0: O resultado armazenado no registrador

INCFSZ Sintaxe Descrio W. d = 1: O resultado armazenado no registrador f. Se o resultado for zero, ento a prxima instruo descartada e um NOP executado. Bits de STATUS afetados Nenhum Exemplo INCFSZ CONTADOR, 1 GOTO Label_1 GOTO Label_2 INCFSZ f, d Incrementa o contedo do registrador f: d = 0: O resultado armazenado no registrador

36

FATE C TAT U

IORLW Sintaxe Descrio IORLW k Executa OU lgico de W com k Z ; W = 01101011

Bits de STATUS afetados Exemplo

MOVLW b 00001011 IORLW b 01100001

IORWF Sintaxe Descrio W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados Z Exemplo IORWF REG, 0 IORWF f, d Executa o OU lgico de W com o registrador f: d = 0: O resultado armazenado no registrador

MOVF Sintaxe Descrio W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados Z Exemplo MOVF FSR, F MOVF f, d Move o valor do registrador f para: d = 0: O resultado armazenado no registrador

MOVLW Sintaxe Descrio MOVLW k Move o valor literal k para o registrador W. Nenhum

Bits de STATUS afetados Exemplo MOVLW 0x1C

MOVWF Sintaxe Descrio MOVWF f Move o contedo de W para o registrador f. Nenhum

Bits de STATUS afetados Exemplo MOVWF OPTION

37

FATE C TAT U

NOP Sintaxe Descrio NOP

No executa nenhuma operao, utilizado para ajustar rotinas de temporizao. Bits de STATUS afetados Nenhum Exemplo NOP

OPTION Sintaxe Descrio OPTION

O contedo do registrador W carregado no registrador Bits de STATUS afetados Nenhum Exemplo MOVLW b00100110 OPTION RETFIE Sintaxe Descrio RETFIE

Carrega o Contador do Programa (PC) com o valor do topo da pilha e seta o bit GIE. Bits de STATUS afetados Nenhum Exemplo RETFIE

RETLW Sintaxe Descrio RETLW k

O registrador W carregado com o valor literal k. O PC carregado com o valor do topo da pilha (TOS Top of the Stack). Bits de STATUS afetados Nenhum Exemplo RETLW 0x0A

RETURN Sintaxe Descrio RETURN Carrega o PC com o valor do topo. Nenhum

Bits de STATUS afetados Exemplo RETURN

38

FATE C TAT U

RLF Sintaxe Descrio RLF f, d

O valor do registrador f rotacionado um bit para a esquerda atravs do Carry: d = 0: O resultado armazenado no registrador W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados C Exemplo RLF REG1, 0

RRF Sintaxe Descrio RRF f, d

O valor do registrador f rotacionado um bit para a direita atravs do Carry: d = 0: O resultado armazenado no registrador W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados C Exemplo RRF REG1, 0

SLEEP Sintaxe Descrio SLEEP

Ativa modo Sleep, zera o bit /PD (Power Down) e seta o bit /TO (Time Out). O WDT e a prescala so limpos. O processador colocado no modo Sleep com o oscilador parado. Bits de STATUS afetados /TO, /PD Exemplo SLEEP

SUBLW Sintaxe Descrio SUBLW k

Subtrai (utilizando o mtodo complemento de dois) W do literal k e armazena o resultado em W. Bits de STATUS afetados C, DC, Z Exemplo SUBLW 0x03

39

FATE C TAT U

SUBWF Sintaxe Descrio SUBWF f, d

Subtrai (utilizando o mtodo complemento de dois) W do registrador F. d = 0: O resultado armazenado no registrador W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados C, DC, Z Exemplo SUBWF REG, 1

SWAPF Sintaxe Descrio SWAPF f, d

O nibble mais significativo e o menos significativo do registrador f so trocados pelo outro. d = 0: O resultado armazenado no registrador W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados Nenhum Exemplo SWAPF CNT, 0

XORLW Sintaxe Descrio XORLW k

Executa a operao lgica OU Exclusivo do literal k com o contedo de W. O resultado armazenado no registrador W. Bits de STATUS afetados Z Exemplo XORLW 0xAF

XORWF Sintaxe Descrio XORWF f, d

Executa a operao lgica OU Exclusivo entre o contedo de W e o registrador f: d = 0: O resultado armazenado no registrador W. d = 1: O resultado armazenado no registrador f. Bits de STATUS afetados Z Exemplo XORWF CONTADOR, 1

40

FATE C TAT U

O U T R O S C O M AN D O S AC E I T O S P E L O MP L AB EQU Sintaxe Descrio label EQU k

Define um valor numrico para o label. Deve ser um valor literal de 0 255d Bits de STATUS afetados Nenhum Exemplo VAR1 EQU 0x0A

MOVFW Sintaxe Descrio W. Bits de STATUS afetados Exemplo MOVFW PORTA MOVFW f Move o contedo do registrador f para Z

Sintaxe Descrio Bits de STATUS afetados Exemplo

Sintaxe Descrio Bits de STATUS afetados Exemplo

41

FATE C TAT U

R E G I S T R A D O R E S C O M F I N A L I D AD E S E S P E C I A I S ( S F R S ) Para montar um programa, preciso configurar alguns registradores para que o MCC funcione de forma correta. Veja a seguir algumas informaes encontradas na descrio de um registrador. R bit de leitura W bit de escrita S s pode ser setado U no implementado, lido com 0 -n (0 ou 1) valor assumido no Power-on Reset (POR) -x valor desconhecido no (POR) -q depende da condio Os SFRs so registradores utilizados em tarefas predeterminadas. Veja a seguir a funo de cada bit dos SFRs mais utilizados em aplicaes com o PIC 16F628A:

Registradores SFRsFUNES Gerais Portas Contadores EEPROM Mdulo CCP Mdulo Comparador Mdulo Voltagem de Referncia Mdulo USART Endereamento Indireto TIPOS STATUS, PCON, OPTION, INTCON, PIR1, PIE1, PCL e PCLATH TRIS e PORTS TIMER0, TIMER1 e TIMER2 EEADR, EEDATA, EECON1 e EECON2 CCP1CON, CCPR1H e CCPR1L CMCON VRCON TXSTA, RCSTA, SPBRG, TXREG e RECREG FSR e INDF

G E R AI S1) ST ATU S

Provavelmente as funes mais utilizadas do registrador STATUS esto relacionadas s operaes matemticas, pois ele indica os estouros de registradores (C-Carry e DC- Digit Carry) e resultados iguais a zero (Z). bom observar que, no caso da subtrao, o Carry trabalha como a lgica invertida. Alm de outras funes como conter o estado de RESET (TO, PD) e os bits para a seleo do banco de memria (IRP, RP1, RP0).

42

FATE C TAT U

Registrador: STATUS Endereos: 03h, 83h, 103h, 183h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R/W R/W R/W R R R/W R/W R/W IRP PR1 RP0 /TO /PD Z DC C Condio em Power-On Reset (POR) 0 0 0 1 1 X X X

IRP: Seletor de endereamento indireto:

banco

de

memria

de

dados

usado

para

0 = Banco 0 e 1 (00h FFh). 1 = Banco 2 e 3 (100h 1FFh). RP1 e RP0: Seletor de banco de memria de dados usado para endereamento indireto: 00 = Banco 0 (00h 7Fh). 01 = Banco 1 (80h FFh). 10 = Banco 2 (100h 17Fh). 11 = Banco 3 (180h 1FFh). /TO: Indicador de Time-out: 0 = Indica que ocorreu estouro do W atchDog Timer (W DT). 1 = Indica que ocorreu instr ues CLRW DT ou SLEEP. um power-up ou foram executadas as

/PD: Indicao Power-down: 0 = Indica que ocorreu a instruo SLEEP foi executada. 1 = Indica que ocorreu um power-up ou foi executada a instruo CLRW DT. Z: Indicao de Zero: 0 = Indica que o resultado da ltima operao (lgica ou aritmtica) no resultou em zero. 1 = Indica que o resultado da ltima operao (lgica ou aritmtica) resultou em zero. DC: dgito. 1 = A ltima operao da ULA ocasionou um estouro (carry) entre o bit 3 e 4, isto , o resultado ultrapassou os 4 bits menos significativos. Utilizado quando se trabalha com nmeros de 4 bits. C: Carry/borrow: 0 = A ltima operao da ULA no ocasionou um estouro (carry). 1 = A ltim a operao da ULA ocasionou um estouro ( carry) no bit mais significativo, isto , o resultado ultrapassou os 8 bits disponveis. Digit Carry/borrow: 0 = A ltima operao da ULA no ocasionou um estouro de

43

FATE C TAT U

2)

PCON

Este registrador contm as flags que permitem que seja feita a diferenciao entre um power-on reset (POP), um brown-out reset (BOD), um reset por watchdog (WDT) e um reset externo por MCLR.Registrador: PCON Endereos: 8Eh Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 U U U U R/W U R/W * * * * OSCF * /POR Condio em Power-On Reset (POR) 0 0 0 0 1 0 0

Bit 0 R/W /BOR X

OSCF: Frequncia do oscilador interno: 0 = 37 KHz. 1 = 1 MHz. /POR: Indicador de Power-On Reset (energizao): 0 = Ocorreu um Power-On Reset. 1 = No ocorreu um Power-On Reset. /BOR: Indicao de Brown-Out Reset (queda de energia): 0 = No ocorreu um Brown-Out Reset. 1 = Ocorreu um Brown-Out Reset. 3) OPTION

Este registrador serve para configurar uma srie de opes para a operao do MCC, tais como: habilitao dos pull-ups do PORTB, configuraes do prescaler, configuraes do TMR0 e seleo da borda para a interrupo externa. Apesar deste, registrador receber o nome Option, ele ser referenciado pelo nome OPTION_REG, pois os PICs mais antigos possuam uma instruo chamada OPTION.Registrador:OPTION_REG Endereos: 81h e 181h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R R R/W R/W /RBPU INTEDG T0CS T0SE PSA PS2 PS1 Condio em Power-On Reset (POR) 1 1 1 1 1 1 1

Bit 0 R/W PS0 1

/RBPU: Habilita pull-ups internos para a PORTB: 0 = Pull-ups configurados como sada. 1 = habilitados para todos os pinos do PORTB

Pull-ups desabilitados.

INTEDG: Configurao da borda que gerar a interrupo externa no RB0: 0 = A interrupo ocorrer na borda de descida.

44

FATE C TAT U

1 = A interrupo ocorrer na borda de subida. T0CS: Configurao do incremento do TMR0: 0 = TMR0 ser incrementado internamente pelo clock da mquina. 1 = TMR0 ser incrementado externamente pela mudana no pino RA4/T0CK1. T0SE: Configurao da borda que incrementar o TMR0 no pino RA4/T0CK1, quando T0CS=1: 0 = O incremento ocorrer na borda de subida de RA4/T0CK1. 1 = O incremento ocorrer na borda de descida de RA4/T0CK1. PSA: Configurao de aplicao do prescaler: 0 = O prescaler ser aplicado ao TMR0. 1 = O prescaler ser aplicado ao W DT. PS2,PS1,PS0: Configurao de valor de prescaler: PS 2/1/0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 4) TMR0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 W DT 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128

INTCON, PIR1 e PIE1

Estes registradores servem para configurar e identificar todas as interrupes existentes no PIC16F628A. O registrador INTCON opera com as interrupes principais, que so: Timer 0 (TMR0), Interrupo externa e Interrupo por mudana de estado. Alm disso, ele possui a chave geral de todas as interrupes (GIE) e a chave geral para as interrupes de perifricos.Registrador: INTCON Endereos: 0Bh, 8Bh, 10Bh e 18Bh Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R/W R/W R/W R/W R/W R/W R/W R/W GIE PEIE T0IE INTE RBIE T0IF INTF RBIF Condio em Power-On Reset (POR) 0 0 0 0 0 0 0 X

GIE: Habilitao geral das interrupes (chave geral): 0 = Nenhuma interrupo ser tratada. 1 = As interrupo habilitadas individualmente sero tratadas. PEIE: Habilitao das interrupes de perifricos (chave de grupo para perifricos):

45

FATE C TAT U

0 = As interrupes de perifricos no sero tratadas. 1 = As interrupes de perifricos habilitadas individualmente sero tratadas. T0IE: individual): Habilitao da interrupo de estouro de TMR0 (chave

0 = Interrupo de TMR0 desabilitada. 1 = Interrupo de TMR0 habilitada. INTE: individual): Habilitao da interrupo externa no pino RB0 (chave

0 = Interrupo externa desabilitada. 1 = Interrupo externa habilitada. RBIE: Habilitao da interrupo por mudana de estado nos pinos RB4 a RB7 (chave individual): 0 = Interrupo por mudana de estado desabilitada. 1 = Interrupo por mudana de estado habilitada. T0IF: Identificao de estouro do TMR0: 0 = No ocorreu estouro do TMR0. 1 = Ocorreu estouro do TMR0 (este bit deve ser limpo por software). INTF: Identificao da interrupo externa no pino RB0: 0 = No ocorreu evento da interrupo. 1 = Ocorreu evento da interrupo (este bit deve ser limpo por software). RBIF: Identificao da interrupo por mudana de estado nos pinos RB4 a RB7: 0 = No ocorreu evento da interrupo. 1 = Ocorreu evento da interrupo (este bit deve ser limpo por software). Os registradores PIR1 e PIE1 so os responsveis pelo gerenciamento das interrupes de perifricos: EEPROM, Comparadores, USART (recepo e transmisso), CCP, Timer1 (TMR1) e Timer2 (TMR2).Registrador: PIE1 Endereos: 8Ch Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R/W R/W R/W R/W U R/W R/W R/W EEIE CMIE RCIE TXIE * CCP1IE TMR2IE TMR1IE Condio em Power-On Reset (POR) 0 0 0 0 0 0 0 0

EEIE: Habilitao da interrupo de final de escrita na EEPROM (chave individual):

46

FATE C TAT U

0 = Interrupo da EEPROM desabilitada. 1 = Interrupo da EEPROM habilitada. CMIE: Habilitao da interrupo do comparador (chave individual): 0 = Interrupo do comparador desabilitada. 1 = Interrupo do comparador habilitada. RCIE: Habilitao da interrupo de recepo da USART (chave individual): 0 = Interrupo de recepo da USART desabilitada. 1 = Interrupo de recepo da USART habilitada. TXIE: Habilitao da interrupo de transmisso da USART (chave individual): 0 = Interrupo de transmisso da USART desabilitada. 1 = Interrupo de transmisso da USART habilitada. CCP1IE: individual): Habilitao da interrupo do mdulo CCP1 (chave

0 = Interrupo de CCP1 desabilitada. 1 = Interrupo de CCP1 habilitada. TMR2IE: Habilitao da interrupo do Timer 2 (chave individual): 0 = Interrupo de Timer 2 desabilitada. 1 = Interrupo de Timer 2 habilitada. TMR1IE: Habilitao da interrupo de estouro do Timer 1 (chave individual): 0 = Interrupo de Timer 1 desabilitada. 1 = Interrupo de Timer 1 habilitada.Registrador: PIR1 Endereos: 0Ch Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W U R/W R/W EEIF CMIF RCIF TXIF * CCP1IF TMR2IF Condio em Power-On Reset (POR) 0 0 0 0 0 0 0

Bit 0 R/W TMR1IF 0

Errata:bits 4 e 5 =>somente leitura. EEIF: Identificao da interrupo da EEPROM: 0 = No ocorreu evento de final de escrita na EEPROM. 1 = Ocorreu evento de final de escrita na EEPROM. CMIF: Identificao da interrupo do comparador: 0 = Comparador no identificou alterao nas entradas.

47

FATE C TAT U

1 = Comparador identificou alguma alterao nas entradas. RCIF: Identificao da interrupo de recepo da USART: 0 = Buffer de recepo da USART est vazio. 1 = Buffer de recepo da USART est cheio. TXIF: Identificao da interrupo de transmisso da USART: 0 = Buffer de transmisso da USART est vazio. 1 = Buffer de transmisso da USART est cheio. CCP1IF: Identificao da interrupo do mdulo CCP1: 0 = No ocorreu condio de interrupo no mdulo CCP1. 1 = Ocorreu condio de interrupo no mdulo CCP1. TMR2IF: Identificao da interrupo de Timer 2: 0 = No ocorreu evento da interrupo de Timer 2. 1 = Ocorreu evento da interrupo de Timer 2. TMR1IF: Identificao da interrupo de estouro do Timer 1: 0 = No ocorreu estouro do Timer 1. 1 = Ocorreu estouro do Timer 1. 5) P C L e P C L AT H

O PCL um registrador que armazena os 8 bits menos significativos do PC (Program Counter), o qual indica a prxima linha do programa que ser executada no momento. A cada ciclo de mquina, o PC automaticamente alterado, para que o programa seja executado normalmente. Esse registrador tambm pode ser alterado pelo programa, mas isso tem q ser feito com extremo cuidado, para que o sistema no se perca e/ou trave.Registrador: PCL Bit 7 Bit 6 Bit 5 R/W R/W R/W Endereos: 02h, 82h, 102h e 182h Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W Parte baixa do PC Condio em Power-On Reset (POR) 0 0 0 0 0

Bit 0 R/W

0

0

0

Registrador: PCLATH Bit 7 Bit 6 Bit 5 U U U

*

*

Endereos: 0Ah, 8Ah, 10Ah e 18Ah Bit 3 Bit 2 Bit 1 Bit 0 R/W R/W R/W R/W Parte alta Condio em Power-On Reset (POR) * 0 0 0 0 0 Bit 4 R/W

48

FATE C TAT U

P O R T AS1) TRIS portas o pino o pino prtica e o 0 e para

Esses registradores servem para configurar os pinos das como entrada ou sada. Quando colocado 1em um bit do TRIS, relacionado a ele configurado como entrada. Para configurar como sada, deve-se escrever 0 no bit relacionado. Uma maneira de memorizar essa regra associar o 1 ao I de Input (entrada), ao O de Output (sada). Para configurar o PORTB, deve ser utilizado configurar o PO RTA, deve ser utilizado o TRISA. o TRISB,

Registrador: TRISA Endereos: 85h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R/W R/W R R/W R/W R/W R/W R/W Ref.RA7 Ref.RA6 Ref.RA5 Ref.RA4 Ref.RA3 Ref.RA2 Ref.RA1 Ref.RA0 Condio em Power-On Reset (POR) 1 1 1 1 1 1 1 1Registrador: TRISB Endereos: 86h e 186h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R/W R/W R/W R/W R/W R/W R/W R/W Ref.RB7 Ref.RB6 Ref.RB5 Ref.RB4 Ref.RB3 Ref.RB2 Ref.RB1 Ref.RB0 Condio em Power-On Reset (POR) 1 1 1 1 1 1 1 1

Obs.: Todos os pinos do PORTA e do PORTB, exceto o pino RB5, so multiplexados com outras funes, como demonstrado na pgina 18, e a configurao efetuada pelos registradores TRIS s funciona corretamente se o respectivo pino estiver configurado como I/O. 2) PORTS

Como j foi visto, o PIC16F628A possui duas portas: PORTA e PORTB. O estado dessas portas acessado diretamente em duas posies distintas da memria. Quando um pino dessa porta configurado como entrada, ao ler-se o seu bit relacionado, encontra-se diretamente o nvel lgico aplicado a esse pino. Da mesma maneira, ao configurar um pino de sada, podemos alterar o seu estado, escrevendo diretamente no bit relacionado.

Registrador: PORTA Endereos: 05h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R R/W R/W R/W R/W RA7 RA6 RA5 RA4 RA3 RA2 RA1 Condio em Power-On Reset (POR) X X X X 0 0 0 Registrador:PORTB Endereos: 06h e 106h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W R/W R/W R/W RB7 RB6 RB5 RB4 RB3 RB2 RB1 Condio em Power-On Reset (POR) X X X X X X X

Bit 0 R/W RA0 0

Bit 0 R/W RB0 X

49

FATE C TAT U

C O N T AD O R E S1) TIMER0 O TMR0 um contador de 8 bits que pode ser acessado diretamente na memria, tanto para a leitura quanto para a escrita. A diferena entre ele e os demais registradores que seu incremento automtico e pode ser feito pelo clock da mquina ou por um sinal externo. Obs.: O estouro deste contador pode gerar interrupo.Registrador: TMR0 Bit 7 Bit 6 Bit 5 R/W R/W R/W Endereos: 01h e 101h Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W Contador Timer 0 de 8 bits Condio em Power-On Reset (POR) X X X X X Bit 0 R/W

X

X

X

2) TIMER1 O TMR1 um contador de 16 bits que tambm pode ser acessado diretamente na memria, tanto para a leitura quanto para a escrita. No entanto, devido ao seu tamanho, esse registrador armazenado em dois endereos: TMR1H (parte alta) e TMR1L (parte baixa).Registrador: TMR1L Endereos: 0Eh Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 R/W R/W R/W R/W R/W R/W Contador Timer 1 de 16 bits - Parte baixa Condio em Power-On Reset (POR) X X X X X X Bit 1 R/W Bit 0 R/W

X

X

Registrador: TMR1H Endereos: 0Fh Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 R/W R/W R/W R/W R/W R/W Contador Timer 1 de 16 bits - Parte alta Condio em Power-On Reset (POR) X X X X X X

Bit 1 R/W

Bit 0 R/W

X

X

Alm disso, o registrador T1CON responsvel pelas diversas configuraes relacionadas ao Timer1, tais como: habilitao, prescaler, oscilador externo prprio, origem do incremento (interno ou externo) e sincronismo de incremento. Obs.: O estouro deste contador pode gerar contador ser utilizado tambm no mdulo CCP.Registrador: T1CON Bit 7 Bit 6 Bit 5 U U R/W* *

interrupo.

Esse

Bit 4 R/W

Bit 3 R/W

Endereos: 10h Bit 2 Bit 1 R/W R/W

Bit 0 R/W

T1CKPS1 T1CKPS0 T1OSCEN /T1SYNC

TMR1CS TMR1ON

0

0

Condio em Power-On Reset (POR) 0 0 0 0

0

0

T1CKPS1 e T1CKPS0: Ajuste do prescaler do Timer 1:

50

FATE C TAT U

00 = prescaler de 1:1. 01 = prescaler de 1:2. 10 = prescaler de 1:4. 11 = prescaler de 1:8. T1OSCEN: Habilitao do sistema de oscilao externa para os pinos T1OSO e T1OSI: 0 = Oscilador desabilitado. Caso exista um cristal externo, o sistema desligado. 1 = Habilita o oscilador externo. /T1SYNC: Controle do sincronismo interno. Quando TMR1CS = 0 este bit ignorado: 0 = Sistema de sincronismo ligado. 1 = Sistema de sincronismo desligado (modo assncrono). TMR1CS: Seleo da origem do clock para Timer1: 0 = Clock interno (FOSC/4). 1 = Clock externo no pino T1OSO/T1CKI. TMR1ON: Habilitao do Timer1: 0 = Timer1 desabilitado. Paralisa o contador do Timer1 1 = Timer1 habilitado 3) TIMER2 O TMR2 outro contador de 8 bits que tambm pode ser acessado diretamente na memria, tanto para leitura como para a escrita. Alm disso, o registrador T2CON responsvel pelas diversas configuraes relacionadas ao Timer 2, tais como: habilitao, prescaler e protscaler. Para gerar uma interrupo, o valor desse contador comparado ao valor especificado em outro registrador, o PR2, em vez de esperar o estouro do mesmo.Registrador: T2CON Bit 7 U * 0 Bit 6 U Bit 5 R/W Bit 4 R/W Bit 3 R/W Endereos: 12h Bit 2 Bit 1 R/W R/W Bit 0 R/W

TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON

T2CKPS1 T2CKPS0

0

Condio em Power-On Reset (POR) 0 0 0 0

0

0

TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0: Ajuste de postcale: 0000 = postcaler de 1:1 0001 = postcaler de 1:2 1000 = postcaler de 1:9 1001 = postcaler de 1:10

51

FATE C TAT U

0010 0011 0100 0101 0110 0111

= = = = = =

postcaler postcaler postcaler postcaler postcaler postcaler

de de de de de de

1:3 1:4 1:5 1:6 1:7 1:8

1010 1011 1100 1101 1110 1111

= = = = = =

postcaler postcaler postcaler postcaler postcaler postcaler

de de de de de de

1:11 1:12 1:13 1:14 1:15 1:16

TMR2CON: Habilitao do Timer 2: 0 = Timer 2 desabilitado. Paralisa o contador do Timer 2. 1 = Timer 2 habilitado. T2CKPS1 T2CKPS0: Ajuste do prescaler:

00 = prescaler de 1:1 01 = prescaler de 1:4 1x = prescaler de 1:16 (x=irrelevante)

Registrador: TMR2 Bit 7 Bit 6 Bit 5 R/W R/W R/W

0

0

Endereos: 11h Bit 4 Bit 3 Bit 2 R/W R/W R/W Contador Timer 2 de 8 bits Condio em Power-On Reset (POR) 0 0 0 0

Bit 1 R/W

Bit 0 R/W

0

0

Registrador: PR2 Endereos: 92h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 R/W R/W R/W R/W R/W R/W Limite superior para a contagem do Timer 2 Condio em Power-On Reset (POR) 1 1 1 1 1 1

Bit 1 R/W

Bit 0 R/W

1

1

EEPROM

1 ) E E AD R e E E D AT AO primeiro o registrador onde ser especificado o endereo para a escrita ou leitura da EEPROM interna do PIC16F628A.Registrador: EEADR Endereos: 9Bh Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 R/W R/W R/W R/W R/W R/W Endereo de leitura/escrita na EEPROM Condio em Power-On Reset (POR) X X X X X X

Bit 1 R/W

Bit 0 R/W

X

X

52

FATE C TAT U

O EEDATA possui duas funes distintas: nas operaes de escrita da EEPRO M, ele deve ser preenchido com o dado a ser armazenado, j nas operaes de leitura, ele armazena o dado lido.

Registrador: EEDATA Endereos: 9Ah Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W R/W R/W R/W Registro de dado para a leitura/escrita na EEPROM Condio em Power-On Reset (POR) X X X X X X X

Bit 0 R/W

X

2) EECON1 e EECON2So registradores de operao da EEPROM. O EECON1 responsvel pelas operaes de leitura e escrita da EEPROM e deteco de erro.Registrador: EECON1 Endereos: 9Ch Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 U U U U R/W R/W R/S * * * * WRERR WREN WR Condio em Power-On Reset (POR) * * * * X 0 0 Bit 0 R/S RD 0

W RERR: Identificao de erro durante a escrita na EEPROM: 0 = No ocorreu erro, a escrita foi completada. 1 = Um erro ocorreu por uma escrita no terminada (um reset pode ter ocorrido). W REN: Habilitao de escrita na EEPROM (bit de segurana): 0 = No habilita escrita na EEPROM. 1 = Habilita escrita na EEPROM. W R: Ciclo de escrita na EEPROM: 0 = Esse bit ser zerado pelo hardware quando o ciclo de escrita terminar (no pode ser zerado por softw are). 1 = Inicia o ciclo de escrita (deve ser setado por software). RS: Ciclo de leitura da EEPROM: 0 = Esse bit ser zerado pelo hardware quando o ciclo de leitura terminar (no pode ser zerado por software). 1 = Inicia o ciclo de leitura (deve ser setado por software). O EECON2 no se tratada de um registrador verdadeiramente implementado na memria. Ele s utilizado durante a inicializao do ciclo de escrita na EEPROM por uma questo de segurana, evitando assim que a memria seja alterada acidentalmente.Registrador: EECON2 Endereos: 9Dh

Registrador de proteo para a escrita na EEPROM (no implementado de fato)

*

*

Condio em Power-On Reset (POR) * * * *

*

*

53

FATE C TAT U

MDULO CCP

1) CCP1CON, CCPR1H e CCPR1LAtravs de mdulo CCP possvel acessar trs modos diferentes de operaes: Capture, Compare e PW M. O registrador CCP1CON responsvel pela configurao desse modo. Este mdulo utiliza ainda o TMR1 como base de tempo e os registradores complementares CCPR1H (parte alta) e CCPR1L (parte baixa).Registrador: CCP1CON Endereos: 17h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 U U R/W R/W R/W R/W R/S R/S * * CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 Condio em Power-On Reset (POR) 0 0 0 0 0 0 0 0

CCP1X e CCP1Y: Parte baixa do PW M de 10 bits. A par te alta fica em CCPR1L. Vlido somente quando em PW M. CCP1M3, CCP1M2, Compare/ Capture/ PW M: CCP1M1, CCP1M0: Seleo do modo CCP1-

0000 = Modo desligado. 0100 = Capture ligado para a borda de descida com prescaler de 1:1. 0101 = Capture ligado para a borda de subida com prescaler de 1:1. 0110 = Capture ligado para a borda de subida com prescaler de 1:4. 0111 = Capture ligado para a borda de subida com prescaler de 1:16. 1000 = Capture ligado. Pino de sada (RB3) ser setado (1) quando o compare ocorrer. 1001 = Capture ligado. Pino de sada (RB3) ser zerado (0) quando o compare ocorrer. 1010 = Capture ligado. Pino de sada (RB3) no ser afetado. 1011 = Capture ligado. Pino de sada (RB3) no ser afetado. TMR1 ser resetado. 1100 = PW M ligado. 1101 = PW M ligado. 1110 = PW M ligado. 1111 = PW M ligado.

54

FATE C TAT U

Registrador: CCPR1L Endereos: 15h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W R/W R/W R/S Registrador de controle do CCP1 - Parte baixa Condio em Power-On Reset (POR) X X X X X X X Registrador: CCPR1H Endereos: 16h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W R/W R/W R/S Registrador de controle do CCP1 - Parte alta Condio em Power-On Reset (POR) X X X X X X X

Bit 0 R/S

X

Bit 0 R/S

X

MDULO COMPAR AD OR1) CMCON Este registrador utilizado para a configurao dos dois comparadores internos existentes no PIC16F628A, possibilitando a utilizao de uma entre as oitos possibilidades de ligaes eltricas disponveis. Neste registrador temos ainda a configurao de inverso das duas sadas e a leitura dos estados dessas sadas.Registrador: CMCON Endereos: 01Fh Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R R R/W R/W R/W R/W R/W C2OUT C1OUT C2INV C1INV CIS CM2 CM1 Condio em Power-On Reset (POR) 0 0 0 0 0 0 0 Bit 0 R/W CM0 0

C2OUT: Valor da sada do comparador 2: Normal (C2INV=0): 0 = C2 VIN+ < C2 VIN1 = C2 VIN+ > C2 VINInversa (C2INV=0): 0 = C2 VIN+ > C2 VIN1 = C2 VIN+ < C2 VINC1OUT: Valor da sada do comparador 1: Normal (C1INV=0): 0 = C1 VIN+ < C1 VIN1 = C1 VIN+ > C1 VINInversa (C1INV=0): 0 = C1 VIN+ > C1 VIN1 = C1 VIN+ < C1 VINC2INV: Tipo de sada do comparador 2:

55

FATE C TAT U

0 = Normal. 1 = Inversa. C1INV: Tipo de sada do comparador 1: 0 = Normal. 1 = Inversa. CIS: Chave seletora de entrada do comparador: Quando CM2:CM0 = 001 0 = RA0 conectado a C1 VIN-. 1 = RA3 conectado a C1 VIN-. Quando CM2:CM0 = 010 0 = RA0 conectado a C1 VIN-. RA1 conectado a C2 VIN-. 1 = RA3 conectado a C1 VIN-. RA2 conectado a C2 VIN-. CM2, CM1 e CM0: Configura a pinagem dos comparadores (modo de operao):

CM

ESQUEMA

CM

ESQUEMA

000

111

56

FATE C TAT U

100

010

011

110

CM ESQUEMA

CM

ESQUEMA

101

001

MDULO VOLTAG EM DE REFERN CI A1) VRCON O registrador VRCON utilizado para configurar o mdulo de voltagem de referncia, que nada mais do que uma sada analgica com 16 valores configurveis por software. Por intermdio desse registrador possvel habilitar/desabilitar este sistema e selecionar o valor da sada malha R2R interna).Registrador: VRCON Endereos: 9Fh Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W U R/W R/W R/W VREN VRON VRR * VR3 VR2 VR1 Condio em Power-On Reset (POR) 0 0 0 0 0 0 0 Bit 0 R/W VR0 0

VREN: Energizao do sistema de tenso de referncia: 0 = Circuito de VREF desenergizado. 1 = Circuito de VREF energizado. VRON: Habilitao da sada de VREF: 0 = Tenso de referncia desligada.

57

FATE C TAT U

1 = Tenso de referncia ligada ao pino RA2. VRR: Seleo do range de operao do sistema de VREF: 0 = Range baixo. 1 = Range alto. VR3...VR0: Seleo do valor de tenso de VREF: Se VRR = 1: VREF = (VR/24) . VDD Se VRR = 0: VREF = . VDD + (VR/32) . VDD

M D U LO U S AR T1) TXSTA e RCSTA Estes registradores configuram e monitoram todas as possibilidades para a comunicao via mdulo USART, um para a transmisso (TXSTA) e outro para a recepo (RCSTA).Registrador: TXSTA Endereos: 98h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W U R/W R CSRC TX9 TXEN SYNC * BRGH TRMT Condio em Power-On Reset (POR) 0 0 0 0 0 0 1 Bit 0 R/W TX9D 0

CSRC: Seleo entre Master/Slave (somente modo Sncrono): 0 = Slave. 1 = Master. TX9: Habilitao da comunicao em 9 bits para a transmisso: 0 = Transmisso em 8 bits. 1 = Transmisso em 9 bits. TXEN: Habilitao da transmisso: 0 = Transmisso desabilitada. 1 = Transm isso habilitada. No modo assncrono, a recepo tem prioridade sobre este bit. SYNC: Seleo entre modo Assncrono/Sncrono: 0 = Assncrono. 1 = Sncrono. BRGH: Seleo para Baud Rate (somente modo Assncrono): 0 = Baud Rate baixo.

58

FATE C TAT U

1 = Baud Rate alto. TRMT: Situao do registrador interno de transmisso (TSR): 0 = TSR cheio. 1 = TSR vazio. TX9D: Valor a ser transmitido como 9 bit. Pode ser usado como paridade ou endereamento.Registrador: RCSTA Endereos: 18h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W R/W R R SPEN RX9 SREN CREN ADDEN FERR OERR Condio em Power-On Reset (POR) 0 0 0 0 0 0 0 Bit 0 R RX9D X

SPEN: Habilitao da USART: 0 = USART desabilitada. 1 = USART habilitada. RX9: Habilitao da comunicao em 9 bits para a recepo: 0 = Recepo em 8 bits. 1 = Recepo em 9 bits. SREN: Habilitao Sncrono em Master): da recepo unitria (somente para modo

0 = Recepo unitria desabilitada. 1 = Recepo unitria habilitada. Depois de receber um dado, desliga-se automaticamente. CREN: Habilitao da recepo contnua: 0 = Recepo contnua desabilitada. 1 = Recepo contnua habilitada. ADDEN: Habilitao do sistema de endereamento (somente modo Assncrono de 9 bits): 0 = Desabilita sistema de endereamento. 1 = Habilita sistema de endereamento. FERR: Erro de Stop bit (somente modo Assncrono): 0 = No ocorreu erro. Stop bit = 1. 1 = Ocorreu um erro . Stop bit = 0 (deve ser atualizado lendo o registrador RCREG e recebendo o prximo dado vlido). O ERR: Erro de muitos b ytes recebidos sem nenhuma leitura: 0 = No houve problemas de estouro do limite.

59

FATE C TAT U

1 = Estouro do limite de 3 bytes recebidos antes da leitura de RCREG (para limpar deve-se zerar o bit CREN). RX9D: Valor recebido no 9 bit. Pode ser usado como paridade ou endereamento. 2) TXREG e RCREG So os buffers (acumuladores) para os dados recebidos (RCREG) ou a serem enviados (TXREG).Registrador: TXREG Endereos: 19h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W R/W R/W R/W Buffer para a transmisso de dados pela USART Condio em Power-On Reset (POR) 0 0 0 0 0 0 0 Registrador: RCREG Endereos: 1Ah Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W R/W R/W R/W Buffer para a recepo de dados pela USART Condio em Power-On Reset (POR) 0 0 0 0 0 0 0 Bit 0 R/W

0

Bit 0 R/W

0

3) SPBRG Esse Raude. o registrador responsvel pela configurao do Baund

Registrador: SPBRG Bit 7 Bit 6 Bit 5 R/W R/W R/W

0

0

Endereos: 99h Bit 4 Bit 3 Bit 2 Bit 1 R/W R/W R/W R/W Ajuste do Baund Rate Condio em Power-On Reset (POR) 0 0 0 0 0

Bit 0 R/W

0

ENDEREAMENTO INDIR ETO1) FSR e O INDF O FSR um registrador em que pode ser escrito num outro endereo de memria que ser acessado indiretamente, como se ele fosse um ponteiro.Registrador: FSR Bit 7 Bit 6 R/W R/W Endereos: 04h, 84h, 104h e 184h Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R/W R/W R/W R/W R/W R/W Ponteiro para endereamento indireto Condio em Power-On Reset (POR) X X X X X X

X

X

60

FATE C TAT U

O INDF no um registrador realmente verdadeiro, pois trata-se somente de um espelho do endereo apontado pelo FSR.Registrador: INDF Endereos: 00h, 80h, 100h e 180h Ponteiro para endereamento indireto Condio em Power-On Reset (POR) X X X X

Valor apontado pelo FSR (endereamento indireto - no um registrador impementado)

X

X

X

X

PROGRAM AOUm programa escrito em linguagem assembler pode ser escrito em qualquer PC utilizando-se qualquer processador de texto que possa gerar arquivos ASCII (W ord, Notpad, etc). Um arquivo de texto que contenha um programa em assembler denominado de source ou cdigo assembler. Uma vez que o cdigo assembler est preparado, necessrio um programa para traduzir as instrues mnemnicas e todas as outras formas convencionais com que se escreve o cdigo em uma srie de nmeros (o opcode) reconhecvel diretamente pelo PIC. Este programa se chama compilador assembler ou montador. Na figura 15 est esquematizado o fluxograma das operaes e arquivos que devero ser gerados para passar um cdigo na linguagem assembler para um PIC a ser programado.

61

FATE C TAT U

Figura15- Fluxo da programao do PIC C omo possvel obser var, alm do cdigo com extenso .ASM necessrio fornecer ao compilador um segundo arquivo, produto da Microchip, com extenso .INC que corresponde a uma biblioteca do tipo do PIC que estamos utilizando. No nosso caso o arquivo deve ser o P 1 6 F 6 2 8 A. I N C . E s t e c d i g o c o n t m a l g u m a s d e f i n i e s d a s q u a i s depende o tipo de chip utilizado. Durante a compilao do cdigo, o compilador assembler gera uma srie de arquivos com nomes idnticos ao cdigo original, mas com extenses diferentes: .HEX o arquivo que contm o cdigo de operao em formato hexadecimal que ser enviado ao PIC via interface de programao. .LST um arquivo de texto na qual vem reportado por inteiro o cdigo assembler e a correspondente traduo em opcode. No utilizvel pela programao do PIC, mas extremamente til para verificao de erros e do processo de compilao que foi feito. .ERR contm uma lista de erros de compilao que mostra o nmero da linha do cdigo na qual esta o erro no cdigo assembler. Os arquivos .LST, .ERR so utilizados somente para controle da compilao. Somente o arquivo .HEX ser utilizado realmente para programar o PIC. O arquivo .HEX no um arquivo no formato binrio e no reflete diretamente o contedo que dever ter a EEPROM do PIC. Mas este

62

FATE C TAT U

formato muito importante quando h transferncia do programa para o PIC em uma forma legvel. Sem muitos detalhes, tal formato diretamente reconhecido pelo programador do PIC que promover durante a programao a converso em binrio e contm outras informaes que sero adicionadas aos endereos na qual vamos transferir o opcode.

MPLAB ID EDistribudo gratuitamente pela Microchip Tecnology, o MPLAB IDE ser utilizado para o desenvolvimento dos programas-fontes em Assembly, que ap s serem convertidos em programa objetivo, so gravados no MCC. O MPLAB IDE um conjunto de software que permite, entre outras coisas: Criar programas em Assembly; Efetuar a simulao e o debug do programa; Gravar programas no MCC;

O objetivo no explorar todos os recursos do MPLAB IDE, mas dar ao aluno condies de utilizar os recursos necessrios para o desenvolvimento de aplicaes em Linguagem Assembly. Os passos para o desenvolvimento de uma aplicao so: 1 - Inicializando o MPLAB IDE 2 - Criando o programa-fonte 3 - Criando projeto 4 - Montando projeto 5 - Debugando projeto 6 - Gravando o programa no MCC

I N IC I AL I Z AN D O O M P L AB I D E 8. 10Depois de complementada a instalao, d um duplo-clique no cone do MPLAB IDE na rea de trabalho ou selecione Iniciar/Programas/Microchip MPLAB IDE/ MPLAB IDE. Logo aparece uma tela da figura 16. Este o ambiente em que sero montadas as aplicaes (programas) que sero gravadas no MCC.

63

FATE C TAT U

Figura 16- MPLAB IDE 8.10 C R I AN D O PR O J E T O Clicando em Project/Project W izard, aparece a janela da figura 17. Clique no boto Avanar para continuar o processo de criao de um projeto, lembrando que este processo feito em quatro passos.

Figura 17- Criando um projeto Primeiro Passo:

64

FATE C TAT U

Na janela exibida na figura 18, escolha o modelo de MCC que ser usado no projeto, no caso 16F628A e clique em Avanar para prosseguir.

Figura 18- Primeiro passo Segundo Passo: A figura 20 mostra a prxima tela. No item caixa Active Toolsuite, selecione a ferramenta Microchip MPLAB Toolsuite. Selecione a opo MPASM Assember (mpaswin.exe) na caixa Toolsuite Contents. Deve aparecer o caminho completo no qual se encontra o arquivo mpaswin.exe. Se isso no acontecer, clique no browse e localize o arquivo no diretrio em que est instalado o MPLAB IDE. Clique em Avanar para prosseguir.

Figura 19- Segundo passo

65

FATE C TAT U

Terceiro Passo: Ao aparecer a janela da figura 21, escolha o diretrio em que o programa ser salvo e o nome do projeto. No se esquea de que o projeto deve ser gravado no mesmo diretrio em que foi salvo o arquivo .ASM, criado anteriormente. O projeto salvo como extenso .MCP. Clique no boto Avanar para prosseguir.

Figura 20- Terceiro passo

Quarto Passo: Nesta etapa ser feita a seleo e incluso dos arquivos de definies bsicas, estes arquivos so o P16F628A.INC e o 16f628a.lkr. Esses arquivos esto nos respectivos caminhos: C:\Arquivos de programas\Microchip\MPASM Sute\P16F628A.INC C:\ Arquivos de programas\Microchip\MPASM Sute\LKR\16f628a.lkr Ao encontrar cada atravs da tecla Add. um deles, deve-se adicion-los ao projeto

Na figura 23 observa-se que no quadro da direita esto os dois arquivos includos e precedendo cada um existe uma letra A , deve-se posicionar o mouse em cima desta letra e clicar trs vezes, ficando assim a letra C precedendo os dois arquivos. Com isso garante-se que os arquivos sero copiados na pasta em que se encontra o projeto.

66

FATE C TAT U

Figura 21- Passo quatro (Incluso de Arquivos ao projeto) Em seguida clicar em AVANAR. A janela apresentada na figura 24 a ltima exibida no processo de criao de um projeto utilizando o Project W izard. Nela so mostrados os parmetros do projeto. Verifique se ele est configurado corretamente e clique no boto Concluir.

Figura 22- Concluso da operao

67

FATE C TAT U

VISU ALIZANDO O PROJETOAps a criao do projeto provavelmente a tela do MPLAB esteja vazia, ento deve-se clicar no menu VIEW e em seguida na opo PROJECT, ver figura 23.

Figura 23- Visualizao do projeto

C RI AN D O E S AL V AN D O AR Q U I V O- FO N TE E M AS S E M BL YCrie um novo arquivo .ASM clicando em File/New. Ele ser o pr ogr a m a- fon t e do pr ojet o e es c r i to em Lin gu ag em A s sem bl y. A se gu ir , um modelo para estruturao do programa-fonte que ser usado na criao das aplicaes. Para evitar problemas, utilize sempre letras maisculas e no use acentos, cedilhas ou caracteres especiais nos comentrios. No se preocupe em tentar entender a funo de cada linha da estruturao proposta, pois ser explicado m ais adiante. Apenas leia com ateno. ( programa exemplo) Para salvar o arquivo-fonte, basta clicar em File/Save as como apresenta a figura 24.

68

FATE C TAT U

Figura 24-

Criando e salvando arquivo-fonte.

AB R I N D O O PR O GR AM A F O N TENa figura 24, verifica-se que nenhum arquivo fonte (Source File) est adicionado ao projeto, portanto deve-se adicion-lo posicionando o mouse em cima da pasta Source Files e clicar o boto direito do mouse e escolher a opo Add files..., ento seguir as solicitaes de localizao do arquivo fonte (.ASM). Se um arquivo fonte foi adicionado ao projeto, basta dar um clique duplo no arquivo .ASM para que ele seja aberto conforme exibida na figura 25.

Figura 25- Visualizao do arquivo fonte.

69

FATE C TAT U

O bs: O projeto s ira se r c ompilado s e o ar quivo fonte es tiver aberto no Source Files.

M O N T AN D O O P RO J E TO ( C O MPI L AN D O)O arquivo .ASM s poder ser montado (compilado) se tiver sido editado corretamente. Com o programa-fonte em Assembly pronto e o projeto criado, podese montar o projeto, ou seja, gerar o programa a partir do programafonte. O programa objeto um arquivo com extenso .HEX que contm o programa que ser gravado no MCC. Para montar um projeto, selecione Project/Build All ou clique no na barra de tarefas. Se o projeto for corretamente, aparece a cone janela da figura 26 com o texto BUILD SUCCEEDED antecedido da data e hora.

Figura 26- Verificao de erros no programa Se aparecer a mensagem BUILD FAILED, como mostra a figura 27, porque ocorreu algum problema e o projeto no foi montado. Resolva os problemas e monte-o novamente. Erros, W arning e Mensagens Existem trs grupos de avisos que so emitidos nos relatrios de compilao: Erros: Quando aparece este aviso porque algum erro realmente aconteceu, impedindo que a compilao tenha sucesso. Pode ser erro de sintaxe, de argumentao, etc. Warning: uma espcie de alerta do compilador; algo est estranho e deve ser checado. Normalmente um W arning seguido de um erro, mas ele sozinho no causa erro de compilao. Mensagens: Trata-se apenas de um comunicado do compilador para o programador. Ele est avisando que alguma ao est sendo feita e que isso pode gerar um problema, se no for corretamente implementada. O aparecimento de mensagens norm al em alguns programas, mas elas no devem ser desprezadas.

70

FATE C TAT U

Figura 27- Relatrio de compilao com mensagens. Para cada aviso do relatrio ser mostrado o seu tipo, seguido do cdigo especfico para a situao, o nome do arquivo, a linha na qual ele ocorreu e a sua descrio. Para facilitar o trabalho, basta clicar com o mouse duas vezes sobre o aviso, que o M PLAB j altera para a janela do programa-fonte, na linha correta. Ento, resolver o problema e compilar novamente.

R EMOVENDO UM AR QU IVO-FONTE AO PROJ ETOPara remover um arquivo-fonte do projeto, clique com o boto direito no arquivo .ASM e selecione a opo Remove, como mostra a figura 28. Depois de removido pode-se adicionar outro arquivo-fonte.

Figura 28- Removendo o arquivo-fonte.

FECHANDO UM PROJ ETOUtilizar o menu PROJECT e opo CLOSE para fechar o projeto que est em desenvolvimento. Com esse procedimento o projeto poder ser salvo integralmente.

71

FATE C TAT U

A G R AV A O D O P R O G R AM A N O MC CA gravao do PIC feita por um sistema gravador (programmer), formado por um hardware e um software de gravao executado num PC. Os sistemas de gravao podem ser ou no homologados pela Microchip. O software necessrio para a gravao o ICProg , que gratuito e est disponvel para download http://www .ic-prog.com/ , e o projeto original do gravador encontra-se no site do desenvolvedor http://www.jdm.homepage.com.dk/newpic0.htm. Site referncia do tema http://www.edutecbauru.com.br/cursopic/aula11.htm. O homologado tem a vantagem de se poder gravar o MCC diretamente pelo menu do MPLAB, j no no homologado deve-se abrir o programa de gravao separadamente e localizar o arquivo hexadecimal que ser enviado ao MCC. Os sistemas debugar e emular. de gravao homologados podem alm de gravar,

Relao dos homologados:

Sistema/Recursos PICSTART Plus PICk it 2 / 3 ICD 2 / 3 REAL ICE

Gravao (programmer) sim sim sim sim

Debugar (debugger) --sim sim sim

Emulador (emulator) ------sim

Tabela 5- Relao dos homologados Existem diversos gravadores no homologados e todos so apenas gravadores. A ligao entre o PC e o gravador (placa) pode ser atravs de uma das seguintes portas de comunicao: a paralela, a serial RS232 ou a USB . O gravador do Kit experimental utilizado neste curso uma verso derivada de um projeto de domnio publico chamado JDM, no homologado, e usa a porta de comunicao serial RS232 do PC.

72

FATE C TAT U

Figura 29-Gravador do Kit

73

FATE C TAT U

O hardware do gravador foi alterado em relao ao projeto original e na figura abaixo tem-se o diagrama esquemtico final do gravador.

Figura 30- Diagrama esquemtico do gravador Descrio do circuito: O circuito tem uma entrada de comunicao serial RS232 e a tenso de alimentao deve ser maior que 13 Volts, recomendvel uma tenso prxima de 15 Volts. Na sada, as 5 vias compem o conector ICSP, o qual leva os sinais diretamente ao MCC. Observar que o pino 4 (MCLR) o responsvel pela tenso VPP (programao) de 13Volts que o MCC requer na gravao.

I NS T AL AN D O O SO F TW AR E I CP R OG N O MICROCOMPU TAD ORPasso 1 Aps o download, provavelmente o arquivo estar compactado, descompacte-o e copie os arquivos para o seu HD, pode ser em qualquer pasta, ele no tem arquivo instalador. Crie uma pasta, por exemplo, icprog na unidade C: e copie os arquivos descompactados. Depois disso clique no cone do ICprog. aconselhvel criar um atalho para ele na rea de trabalho do micro, pois vai ser bastante usado.

74

FATE C TAT U

Figura 31- Arquivos relacionados ao icprog Passo 2 Se for a primeira vez que o programa executado, aparecer uma tela avisando que o programa entrar na pgina de Hardware settings (configurao de hardware).

Figura 32- Janela de configurao de hardware Nesta janela, no campo Interface deve-se optar W indows API e dependendo do harware escolher a porta de comunicao.

Passo 3 Na tela principal, clicar o menu Settings, escolher Options e na aba Language escolher Portuguese.

Figura 33- Opes de linguagem

75

FATE C TAT U

Passo 4 Selecionar o dispositivo PIC 16F628A.

Figura 34- Escolher o MCC Pronto o software ICPROG j est instalado...

C O NFI G U R AN D O I C PR O G P AR A W I N D O W S 2 0 00, N T, M E, X PSe o S.O . for o W indow s NT, 2000 ou Window s XP, necessrio um driver (icprog.sys), o qual j vem includo no arquivo zipado do icprog e deve estar na mesma pasta que o executvel. Procedimento: Com o cursor de mouse sobre o cone ICPROG.exe pressionar a tecla da direita do mouse e escolher Propriedades.

Figura 35- IC-PROG > propriedades

76

FATE C TAT U

Na aba compatibilidade:

Figura 36- IC-PROG > Compatibilidade

C licar em com patvel co m W in dow s 20 00 ou W in dow s 98 / W in ME

Figura 37- Escolher o S.O.

77

FATE C TAT U

Pressionar Aplicar

Pressionar OK

Abrir o programa ICPROG, no menu Configurao Diversos selecionar a opo Activar Driver NT/2000/XP .

>

Opes>

78

FATE C TAT U

Pressionar OK. Pronto o Software est apto para fazer gravaes.

F AZE N D O U M A G RAV A O ATR AV S D O I C-P R O GAbrir o programa ICPROG.EXE e coincidem com a exibida na figura abaixo. verificar se as configuraes

Figura 38- IC-PROG gravador

Verificar as configuraes de hardware conforme mostra a figura abaixo.

79

FATE C TAT U

Figura 39- Configurao de hardware

Carregando o arquivo Hexadecimal do programa.

Figura 40- Processo de gravao

80

FATE C TAT U

Comando de gravao

Figura 41- Programando

R E AB R I N DO O AR Q UI V O H E X AD E C I M AL D O P R OG R AM A Procedimento necessrio quando o programa for alterado e for necessrio atualizar o cdigo no MCC.

Figura 42- Reabrindo um projeto

81

FATE C TAT U

GR AV AO IN-CIR CUI T (ICSP)Uma grande parte dos modelos da famlia PIC possibilita a chamada gravao in-circuit. Isso serve para que o PIC possa a ser gravado diretamente na placa montada. Como a gravao feita de forma serial, utilizando somente cinco pinos, possvel a instalao de um soquete na placa para introduzir os sinais necessrios gravao. Isso exige uma srie de cuidados no projeto do hardware, a fim de evitar que as tenses de gravao prejudiquem os demais perifricos. Os pinos necessrios a gravao so: Vdd: Alimentao de 5Vcc. Vss: GND. MCRL: Tenso de programao. Para que o PIC entre o modo de programao, a tenso nesse pino deve ser de aproximadamente 13Vcc. Por isso, o resto do circuito ligado a esse pino deve ser protegido. RB6: Clock da comunicao serial imposto pelo gravador. RB7: Dados na comunicao serial, que podem ser impostos pelo gravador (escrita) ou pelo prprio PIC (leitura). Uma vez que esses pinos estejam acessveis, basta possuir um gravador que os gerencie corretam ente. A gravao realizada pelo McFlash, gravador nacional de baixo custo e que opera diretamente junto com o MPlab, totalmente compatvel com a gravao in-circuit, j que esse possui um cabo que pode ser conectado ao seu sistema. A pinagem deste cabo fornecida na documentao do gravador.

82

FATE C TAT U

INTERRUPO (IRQ)Uma interrupo um evento de hardware que, quando ocorre, provoca um desvio no programa, para que o evento seja tratado. Ao trmino do tratamento do evento que deu origem interrupo, o programa retorna ao ponto em que parou quando ocorreu o desvio. O MCC utilizado possui dez fontes de interrupo. Todas as interrupes possuem um flag, estes so setados na ocorrncia da interrupo. Portanto, ao tratar uma interrupo deve-se resetar o flag. Cada interrupo pode ser habilitada individualmente e independente das demais. A habilitao feita da seguinte forma: 1 - Habilitar a chave individual (INTCON ou PIE1) 2 - Habilitar a interrupo de perifricos (INTCON) se a fonte for um perifrico. 3 - Habilitar a chave geral de interrupo (INTCON).

Diagrama rvore de Interrupes

Figura 43- Diagrama rvore de interrupes

83

FATE C TAT U

ESTRUTURA INTERRUPO

DA

ROTINA

DE

TRATAMENTO

DA

A primeira coisa que deve ser feita quando tratar de interrupo salvar o contedo de alguns registradores que podem ser manipulados dentro da rotina de interrupo, para que possam resgatar seus contedos quando retornar ao programa principal. Isso necessrio porque alguns registradores podem ser manipulados no programa principal, como os registradores W ou STATUS, tambm podem ser manipulados dentro da rotina de interrupo. A seguir, um fluxograma para atender IRQ.

INTERRUPO

SALVAR W e STATUS

DESLIGAR INTERRUO

IDENTIFICA ORIGEM DA INTERRUPO e EXECUTA

RECUPERA W e STATUS

LIMPA FLAG DE INTERRUPO

LIGA INTERRUPO

RETORNA

84

FATE C TAT U

R E C U R S O S AV A N A D O S ( P E R I F R I C O S )Sero apresentados de forma resumida os recursos existentes no PIC 16F628A, tais como: 1. 2. 3. 4. 5. 6. 7. Timer 0 (8 bits) Timer 1 (16 bits) Timer 2 (8 bits) CCP Capture, Compare, PW M (10 bits) Comparador analgico Tenso de referncia ajustvel USART Comunicao serial

TIMERSO PIC 16F628A possui trs temporizadores que do ao MCC recursos que podem ser aproveitados nas mais diversas aplicaes, como: contadores, temporizadores, relgios, medidores, etc.

TIMER 0Ele pode ser utilizado tanto como temporizador quanto contador. Esse mdulo possui um registrador de 8 bits, chamado TMR0, que pode incrementado pelo ciclo de clock interno (ou ciclo de instruo) ou por um sinal externo aplicado no pino RA4/T0CK1. O TMR0 ocupa os endereos 01h e 101h dos respectivos bancos 0 e 2 de memria RAM. O bit T0CS (OPTION) define se TMR0 ser incrementado pelo ciclo de instruo (T0CS=0) ou se por sinal externo aplicado no pino RA4/T0CK1 (T0CS=1). Para utilizar a interrupo desse timer, as seguintes chaves devem ser ligadas: INTCON TMR0. INTCON : chave geral das interrupes. : chave individual da interrupo de

85

FATE C TAT U

DIAGRAMA TIMER 0

FOSC/4 =OPTION, PSA= 0: prescaler aplicado ao TMR0. 1: prescaler aplicado ao WDT. INTCON,TOIF(flag de estouro)

ciclo de mquina

CristalSeletor de funo

Prescaler TMR0 1:2 1:32 1:4 1:64 1:8 1:128 1:16 1:256 TMR0PSA

86WDT Detector de Borda OPTION,T0CS= 0: clock interno (ciclo de mquina) 1: clock externo (T0CKI) OPTION,T0SE= 0: borda de subida 1: borda de descida

Prescaler PS2,PS1,PS0 Prescaler WDT 1:1 1:16 1:2 1:32 1:4 1:64 1:8 1:128

Flag de sinalizao de estouro do Timer0 INTCON,TOIF= 0: no ocorreu estouro 1: ocorreu estouro do timer

Contador

INTCON, GIE(habilita chave geral interrupo)

INTCON,TOIE(habilita interrupao)

RA4/T0CKI

FATE C TAT U

Vetor de Interrupo Desvio do programa para tratamento da Interrupo do timer0

Bit de Habilitao de Interrupo do TMR0 INTCON, TOIE = 0: interrupo do timer desligada. 1: interrupo do timer ligada.

TIMER 1O Timer 1 outro contador automtico do sistema, mas com uma enorme vantagem sobre o Timer 0: trata-se de um contador de 16 bits. Desta forma, o valor do contador armazenado em duas posies da memria: TMR1L (parte baixa) e TMR1H (parte alta). Para configurar esse timer, utilize o T1CO N. Outra grande vantagem do TMR1 o fato de que ele pode trabalhar com um prescaler independente, configurado diretamente em T1CON . De forma semelhante ao TMR0, o TMR1 tambm pode ser incrementado pelo clock da mquina ou por um sinal externo, ligado ao pino T1CKI (borda de subida). Quem configura o tipo de incremento o bit TMR1CS do registrador T1CON. S que quando configurado para trabalhar com incremento por sinal externo, os pinos T1OSO e T1OSI possuem tambm um circuito de oscilao, para poder utilizar diretamente um Ressoador/Cristal externo s para o Timer1. Com isso pode-se fazer um timer com clock diferente da mquina. Alm disso, atravs do bit T1CON esse oscilador pode ser habilitado ou no, fazendo com que o timer seja paralisado e economizando energia para o sistema. Por ltimo, para que o TMR1 funcione, o bit T1CON deve ser setado (1). Para utilizar a interrupo do TMR1, as seguintes chaves devem ser ligadas: PIE1 TMR1. INTCON perifricos. INTCON : chave geral das interrupes. Quando a interrupo acontecer, ser setado o bit PIR1. Aps o tratamento, este bit no ser limpo automaticamente, ficando esta tarefa para o programador. : chave de grupo de interrupo de : chave individual da interrupo do

87

FATE C T