Você está na página 1de 130

MICROPROCESSADORES 1 Semestre - 2011

Docente : Primo Vaz da Costa Neto

Conceitos Bsicos

Bit abreviao de Dgito Binrio em Ingls (BInary digiT), que corresponde ao valor zero (0) lgico ou ao valor um (1) lgico.
Hexadecimal - notao para nmeros binrios que utiliza 16 dgitos (0 a 9, A,B,C,D,E,F) para representar um nmero binrio de 4 Bits. Assim, as 16 combinaes possveis de 4 Bits so escritas com os dgitos hexadecimais. Uma letra h usada para denotar que o nmero escrito est em hexadecimal (Ex: 00h , 3Fh)

Byte representao numrica composta de 8 Bits. Pode representar nmeros de 00h (010) a FFh (25510). Registrador conjunto de Flip-flops, geralmente do tipo D, que so interligados em paralelo. So responsveis pelo armazenamento de uma informao binria. Dependendo do nmero de Flipflops interligados, podem armazenar 8 Bits(8 Flip-flops = 1 Byte), 16 Bits (= 2 Bytes), 32 Bits (= 4 Bytes), 64 Bits (= 8 Bytes) ou 128 Bits (= 16 Bytes). Os registradores so memrias volteis, ou seja, quando desenergizados perdem seu contedo. Memria local de armazenamento de Informaes Binrias. Podem ser formadas por circuitos semicondutores, mdias magnticas, mdias pticas, etc... De certa forma, um Registrador pode ser considerado uma memria que armazena apenas uma informao binria por vez.

Conceitos Bsicos
Instruo define uma nica ao que um computador pode executar por vez. As aes das instrues podem ser: leitura ou escrita de uma informao binria na memria, leitura ou escrita de uma informao binria em um registrador, operaes lgicas entre informaes binrias, operaes aritmticas entre informaes binrias, etc...
Programa conjunto de Instrues arranjadas de maneira organizada por um programador com o objetivo de informar ao Computador qual a tarefa que mesmo dever executar. Os Programas, em geral, so armazenados na Memria do Computador. Software so os programas que so carregados na memria do Computador para serem executados (Ex: Windows, Office, C++, Firefox, etc...). Firmware so os programas que j esto previamente armazenados em uma memria no voltil (ROM/PROM/EPROM/Flash) e que permitem a operao fundamental de um computador, inclusive a carga de Programas (Software) na memria para serem executados. Hardware so as partes eletrnicas, eletro-mecnicas e pticas de um computador.

Microprocessadores
Sistemas Numricos
Base de Trabalho
Binrio (2) Decimal (10) Octal (8) Hexadecimal (16)

Agrupamento
Nimble (4 bits) Byte (8 bits) Word (4 bytes)

Microprocessadores
Sistemas Numricos
Tipo de Dados
Caracteres (ASCII) Booleanos (Binrio) Inteiros Reais Ponteiros (Endereos)

Tabela ASCII

Booleanos
Representao por verdadeiros ou falso
Neste tipo de representao, temos os nmeros 0 e 1 representando falso e verdadeiro, respectivamente. Representao simples e com pouca ocupao de memria e processamento.

Inteiros
Representao de nmeros inteiros (Matemtica);
Neste caso a representao realizada por uma certa quantidade de bits, geralmente 16 ou 32.
16 Bits = 2^16 => 65535 (curtos ou short) 32 Bits = 2^32 => 4294967295 (longos ou long)

Negativos
Sinal-Magnitude Complemento de 2

Reais (Float)
Na notao usual ponto (ou uma vrgula) para indicar a parte fracionria Notao cientfica especifica o nmero atravs de uma caracterstica e de uma mantissa.
Por exemplo, o nmero real 123.45 (parte inteira: 123, parte fracionria: .45) pode ser expresso na notao cientfica como .12345E3. Nesse caso a caracterstica .12345 e a mantissa (potncia de 10 que multiplica a caracterstica) 3.

Os nmeros reais representados por 32 bits (4 bytes) ou 64 bits (8 bytes).

Reais (Float)
Os ponteiros so usados para armazenar endereos, sendo importantes na representao de dados complexos (filas, listas, etc). Um ponteiro representado normalmente em 32 bits (4 bytes) e assume apenas valores positivos (pois seus valores representam endereos de memria).

Sistema Genrico na Base B


Na base B, so usados B algarismos (ou dgitos) distintos. Por exemplo:
Base 2: 0, 1 Base 4: 0, 1, 2, 3 Base 8: 0, 1, 2, 3, 4, 5, 6, 7 Base 10:0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Base 16:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Converso da base B para a base decimal


A converso de um nmero na base B para a base decimal feita atravs da multiplicao dos (valores decimais dos) dgitos que constituem o nmero por potncias adequadas de B. Considere um nmero (na base B) que tenha N dgitos na parte inteira e K dgitos na parte fracionria: (x1x2...xN.y1y2...yK)B

Converso da base B para a base decimal


O valor na base decimal desse nmero obtido da seguinte maneira: x1*B^(n-1)+x2*B^(n-2)++xn*B^(0)+ y1*B^(-1)+y2*B^(-2)++yK*B^(-K) Exemplos:
(1011.11)2 = 1*23 + 0*22 + 1*21 + 1*20 + 1*2-1 + 1*2-2 = (11.75)10 (34.2)8 = 3*81 + 4*80 + 2*8-1 = (28.25)10 (FBA)16 = 15*162 + 11*161 + 10*160 = (442)10 (34.2)10 = 3*101 + 4*100 + 2*10-1 = (34.2)10

Converso da base decimal para a base B


necessrio converter separadamente a parte inteira e a parte fracionria e fazer a concatenao dos resultados (um ponto vai separar as duas partes). Divide-se o nmero decimal dado e os quocientes sucessivos por B at que o quociente resulte em 0. O nmero na base B vai ser a combinao de todos os restos, tomados no sentido ascendente (de baixo para cima).

Converso da base decimal para a base B


necessrio converter separadamente a parte inteira e a parte fracionria e fazer a concatenao dos resultados (um ponto vai separar as duas partes). Divide-se o nmero decimal dado e os quocientes sucessivos por B at que o quociente resulte em 0. O nmero na base B vai ser a combinao de todos os restos, tomados no sentido ascendente (de baixo para cima).

Converso da base decimal para a base B


converso de (28)10 para octal (34)8

converso de (197)10 para binrio (11000101)2

Converso da parte fracionria


Para transformar um nmero decimal fracionrio (menor que 1) para a base B, multiplica-se, repetidamente, a frao decimal por B. Aps cada multiplicao, pega-se o dgito que resultou na parte inteira do resultado para acrescentar frao que est sendo formada. O processo prossegue com a parte fracionria do resultado.

Converso da parte fracionria


converso de (.4375)10 para octal (.34)8

converso de (.4375)10 para binrio (.0111)2

Converso da parte fracionria


converso de (.060546875)10 para hexadecimal (.0F8)16

Juntando as partes inteira e fracionria


converso de (28.4375)10 para octal:
Foi visto que: E que: Portanto: (28)10 = (34)8 (.4375)10 = (.34)8 (28.4375)10 = (34.34)8

converso de (197.4375)10 para binrio:


Foi visto que: e que: Portanto: (197)10 = (11000101)2 (.4375)10 = (.0111)2 (197.4375)10 = (11000101.0111)2

Portas Lgicas

Os circuitos integrados digitais esto agrupados em famlias lgicas.


Famlias lgicas bipolares:

RTL Resistor Transistor Logic Lgica de transistor e resistncia. DTL Dode Transistor Logic Lgica de transistor e diodo. TTL Transistor Transistor Logic Lgica transistor-transistor. HTL High Threshold Logic Lgica de transistor com alto limiar. ECL Emitter Coupled Logic Lgica de emissores ligados. I2L Integrated-Injection Logic Lgica de injeo integrada. Famlias lgicas MOS (Metal xido Semicondutor)
CMOS Complementary MOS MOS de pares complementares NMOS/PMOS NMOS Utiliza s transstores MOS-FET canal N. PMOS Utiliza s transstores MOS-FET canal P.

Sries das famlias TTL e CMOS



A famlia TTL principalmente reconhecida pelo fato de ter duas sries que comeam pelos nmeros 54 para os componentes de uso militar e 74 para os componentes de uso comercial. TTL 74L de Baixa Potncia TTL 74H de Alta Velocidade TTL 74S Schottky TTL 74LS Schottky de Baixa Potncia (LS-TTL) TTL 74AS Schottky Avanada (AS-TTL) TTL 74ALS- TTL Schottky Avanada de Baixa Potncia
Sries CMOS: 4000/14000 (foram as primeiras sries da famlia CMOS) 74C (compatvel, pino a pino e funo por funo, com os dispositivos TTL) 74HC (CMOS de Alta Velocidade) 74HCT (os dispositivos 74HCT - CMOS de Alta Velocidade - podem ser alimentados directamente por sadas de dispositivos TTL)

Tenses dos nveis lgicos

Famlia Lgica TTL


Faixas de tenso correspondentes aos nveis lgicos de entrada: Entre 2 e 5 Volt, nvel lgico 1 Entre 0,8V e 2V o componente no reconhece os nveis lgicos 0 e 1, devendo portanto, ser evitada em projectos de circuitos digitais. Entre 0 e 0,8 Volt, nvel lgico 0 Faixas de tenso correspondentes aos nveis lgicos de sada: Entre 2,4 e 5 Volt, nvel lgico 1 Entre 0,3 e 0,5 Volt, nvel lgico 0

Famlia Lgica CMOS


Faixa de alimentao que se estende de 3V a 15V ou 18V, dependendo do modelo. A famlia CMOS possui tambm, uma determinada faixa de tenso para representar os nveis lgicos de entrada e de sada, porm estes valores dependem da tenso de alimentao e da temperatura ambiente.

Constituio das portas lgicas


Os componentes principais que constituem as portas lgicas so os transstores bipolares (famlia lgica TTL) ou os transstores de efeito de campo Fet (famlia lgica CMOS).

Estes transstores comportam-se como interruptores electrnicos que ou esto em conduo (1) ou esto ao corte (0).

A figura apresenta um exemplo de um circuito elctrico (porta lgica que implementa a funo AND), utilizando a tecnologia TTL.

Nveis de integrao

Os nveis de integrao referem-se ao nmero de portas lgicas que o CI contm.


SSI (Small Scale Integration) Integrao em pequena escala: So os CI com menos de 12 portas lgicas. MSI (Medium Scale Integration) Integrao em mdia escala: Corresponde aos CI que tm entre 12 a 99 portas lgicas

LSI (Large Scale Integration) Integrao em grande escala: Corresponde aos CI que tm entre 100 a 9 999 portas lgicas. VLSI (Very Large Scale Integration) Integrao em muito larga escala: Corresponde aos CI que tm entre 10 000 a 99 999 portas lgicas.
ULSI (Ultra Large Scale Integration) Integrao em escala ultra larga: Corresponde aos CI que tm 100 000 ou mais portas lgicas.

Portas lgicas

A facilidade do processamento de nmeros binrios decorre da existncia de apenas dois dgitos, 0 e 1 (bit), que podem ser representados por 2 nveis de tenso (por exemplo 0 = 0 volt e 1 = 5 volts). Os smbolos representam um bloco lgico com uma ou mais entradas lgicas A, B, etc. e uma sada lgica S. As entradas e sadas lgicas s assumem valores correspondentes aos nveis lgicos 0 e 1. Um bloco lgico executa uma determinada funo lgica para a qual foi projectado. Essa funo determina os valores que as sadas assumem para cada combinao de valores das entradas. Tais relaes so muitas vezes exibidas soba a forma de tabelas de verdade.
AND A S B B OR A S A S NOT

NAND
A S A

NOR S B

Porta lgica AND (e)

Quando as duas entradas (A e B) so zero (interruptores desligados) a sada (S) tambm zero (lmpada apagada).
Quando uma s das entradas 1 (um s interruptor ligado) a sada (S) zero (lmpada apagada).

Quando as duas entradas (A e B) so 1 (os dois interruptores ligados) a sada (S) tambm 1 (lmpada acesa),
CONCLUSO: S temos o nvel lgico 1 na sada quando todas as entradas forem 1 (neste caso, A e B)

Smbolo novo

Smbolo antigo

Expresso da funo

Tabela de verdade

B 0 1 0 1

S 0 0 0 1

A S B

S=AxB

0 0 1 1

Analogia da porta lgica AND com um circuito eltrico: +


A B S

Porta lgica NAND (no e)

A porta lgica NAND uma porta lgica AND com a sada negada.
Pode observar-se que os nveis lgicos da sada (S) da tabela de verdade NAND a negao dos nveis lgicos da sada (S) da tabela de verdade AND.

Smbolo novo

Smbolo antigo

Expresso da funo

Tabela de verdade

A
S

B 0 1 0 1

S 1 1 1 0

S=AxB

0 0 1 1

Negao

Porta lgica OR (ou)

Quando as duas entradas (A e B) so zero (interruptores desligados) a sada (S) tambm zero (lmpada apagada).
Quando uma s das entradas 1 (um s interruptor ligado) a sada (S) um (lmpada acesa).

Quando as duas entradas (A e B) so 1 (os dois interruptores ligados) a sada (S) tambm 1 (lmpada acesa),
CONCLUSO: S temos o nvel lgico 0 na sada quando todas as entradas forem 0.
Smbolo novo Smbolo antigo A Expresso da funo Tabela de verdade

A
S

B 0 1

S 0 1

1
B

S=A+B

0 0

1
1

0
1

1
1

Analogia da porta lgica OR com um circuito eltrico:


A S

Porta lgica NOR (no ou)


A porta lgica NOR uma porta lgica OR com a sada negada.
Pode observar-se que os nveis lgicos da sada (S) da tabela de verdade NOR a negao dos nveis lgicos da sada (S) da tabela de verdade OR.

Smbolo novo

Smbolo antigo

Expresso da funo

Tabela de verdade

A
A

1
B

S=A+B

0
0 1 1

0
1 0 1

1
0 0 0

Negao

Porta lgica NOT (negao)


O nvel lgico da sada (S) a negao do nvel lgico da entrada (A).
Smbolo novo
Smbolo antigo Expresso da funo Tabela de verdade

S 1 0

S=A

0 1

Porta lgica EXclusive OR (ou exclusivo)


A sada 1 se uma entrada 1 ou a outra entrada 1, mas no ambas. De outro modo: o valor da sada (S) 1 se as entradas (A ou B) so diferentes e 0 se so iguais.
Smbolo novo Smbolo antigo Expresso da funo Tabela de verdade

A
A

B 0 1

S 0 1

=1
B

S=AB

0 0

1
1

0
1

1
0

Porta lgica EXclusive NOR (no ou exclusivo)

A porta lgica abreviadamente designada por EX-NOR uma porta lgica EX-OR com a sada negada.
Pode observar-se que os nveis lgicos da sada (S) da tabela de verdade EX-NOR a negao dos nveis lgicos da sada (S) da tabela de verdade EX-OR.

Smbolo novo

Smbolo antigo

Expresso da funo

Tabela de verdade

A
A

B 0 1

S 1 0

=1
B

S=AB

0 0

1
1

0
1

0
1

Propriedades da lgebra Booleana

Multivibradores Bi-estveis ou FlipFlops


Qualquer dispositivo ou circuito que tem dois estados estveis chamado de biestveis. Como exemplo: o interruptor de luz pode estar fechado (luz acesa) ou aberto (luz apagada). O flip-flop um bi-estvel que possui memria, e pode ser construdo atravs das portas NAND (No E) e NOR (No Ou).

Flip-Flop RS

Flip-Flop D

Memrias
A memria o componente de um sistema de computao cuja funo armazenar as informaes (por informaes entendem-se os dados ou as instrues de um programa) que so, foram ou sero manipuladas pelo sistema. Na prtica, a memria de um computador possui tantas variedades (velocidade, capacidade de armazenamento, tecnologia, etc.) que se torna um subsistema de elementos hierarquicamente estruturados.

Memrias Mtodos de Acesso


Acesso Seqencial: Os dados so organizados na memria em unidades chamadas de registros. O acesso feito segundo uma seqncia especfica. O tempo de acesso depende da posio relativa do registro, variando significativamente. Exemplo: Fita magntica. Acesso direto: Por meio de uma pesquisa seqencial em uma vizinhana do registro obtido o seu endereo fsico, sendo ento possvel a leitura ou gravao. O tempo de acesso tambm varivel. Exemplo: Disco magntico (HD). Acesso aleatrio: Cada posio de memria possui mecanismo de endereamento fisicamente conectado a ela. O tempo de acesso o mesmo para todos os endereos. Exemplo: RAM. Acesso Associativo: Um dado buscado na memria com base em uma parte de seu contedo, e no de acordo com seu endereo. Exemplo: Memria CACHE.

Memrias - Hierarquia

Memrias
Imaginemos uma memria elementar composta por apenas 4 locais. Cada local deve possuir seu prprio endereo, portanto sero necessrios 4 endereos (binrios, naturalmente):

Por outro lado, cada local deve ser capaz de armazenar um grupo de bits. Cada bit deve possuir um caminho (trilha) desde o microprocessador at a memria (na verdade, entre quaisquer dispositivos que devam transmitir ou receber dados). Se a capacidade de armazenamento do local for 8 bits, seriam necessrias 8 trilhas para receber ou transmitir estes dados.

Memrias
Para enderearmos 4 clulas de memria utilizamos 2 bits, porque 2 = 4. Desta forma, para enderearmos 32 clulas de memria utilizaremos 5 bits (2^5 = 32). Para enderearmos 256M endereos, utilizaremos 28 bits (2^8 * 2^20 = 2^28). Assim, se E for o nmero de bits de um endereo e N for o nmero de endereos, temos: N=2

A memria organizada como um conjunto de N clulas com M bits cada. Se possui N clulas, necessita de N endereos. Por outro lado se a clula possui M bits, podemos armazenar nela um valor entre 0 at 2N-1. O valor N representa a capacidade da memria, ou seja, a quantidade de clulas ou de endereos, enquanto M indica a quantidade de bits que podem ser armazenados. O total de bits de uma memria portanto:
T=M*N

Memrias
Logo, se temos o nmero de endereos e queremos saber a quantidade de bits do barramento de endereos, temos:

Microprocessadores
O que ? um tipo de circuito integrado construdo em uma fina pea de silcio que contm milhares ou milhes de transistores interconectados atravs de superfinos traos de alumnio.

Microprocessadores
Para que serve?
Os transistores trabalham em conjunto, armazenando e manipulando dados, de forma a executar uma grande variedade e quantidade de informaes e funes.

Microprocessadores
Porque da utilizao ? Custo x Benefcio Atualizao Tecnolgica Flexibilidade / Praticidade Tamanho / Acabamento

Microprocessadores
Histrico - Evoluo
Dcada de 40, 50 e 60 Tamanho/Velocidade
Computadores de Grande Porte Valvulados Inveno dos transistores e circuitos integrados

Dcada de 40: Vlvula e Transistor (1948) Dcada de 50: Comercializao do transistor Dcada de 60: Circuitos Integrados SSI ("Small Scale Integrated")
1968: => Bob Noyce e Gordon Murray fundam a Intel 1969: => Jerry Sanders e sete amigos fundam a Advanced Micro Devices (AMD)

Microprocessadores
Dcada de 70 Intel 4004 Calculadora (4 bits)
Circuitos Integrados MSI ("Medium Scale Integrated") Maior utilizao dos transistores e diminuio do preo dos computadores/ microprocessadores;

Microprocessadores
1972 Intel 8008 - CPU do primeiro microcomputador de 8 bits

Microprocessadores
1974: INTEL 8080 (4.500 transistores e 10 vezes mais rpido que o 8008)

Microprocessadores
1974: MOTOROLA 6800

Microprocessadores
1976: => TEXAS 9800 (CPU do primeiro microcomputador de 16 bits) 1977: MOSTEK 6502 ==> Apple I, II e II plus 1978: => Circuitos Integrados VLSI ("Very Large Scale Integrated")
MOTOROLA 6809 (Melhor CPU de 8 bits do mercado) INTEL 8088/8086 (29.000 transistores integrados)

Microprocessadores
Dcada de 80 Intel x86 (16 bits)
MOTOROLA 68.000 (68.000 transistores integrados)

Microprocessadores
Dcada de 80 Intel x86 (16 bits)
1981: 1982: 1983: 1984: 1985: 1986: 1988: 1989: => MOTOROLA 68.010 => INTEL 80186/80188 => INTEL 80286 (130.000 transistores integrados) => MOTOROLA 68.020 => INTEL 80386 (ou 80386DX, ou i386) => MOTOROLA 68.030 => INTEL 80386SX => INTEL i486 (1.200.000 transistores)

Microprocessadores
Dcada de 80 Intel x86 (16 bits)

Microprocessadores
Dcada de 90 Intel Pentium (32 bits)
1991: => INTEL i386SL, i486SX Microprocessadores com tecnologia RISC 1992: => INTEL i486DX2/50 e i486DX2/66 1993: => INTEL Pentium 1995: => INTEL Pentium Pro 1997: => INTEL Pentium II 1998: => Pentium II Xeon e Celeron 1999: => Pentium III e Pentium III Xeon

Microprocessadores
Anos 2000 Intel x64 (64 bits) e Dual-Core
2000: => Pentium 4 2001: => Xeon e Itanium 2002: => Tecnologia Hyper-Threading nos processadores 2003: => Tecnologia mvel Centrino 2004: => Conexo de rede PRO/Wireless 2915ABG 2006: => Plataforma Centrino Duo, plataforma Viiv e processador Core 2 Duo 2007: => Processadores Core 2 Quad, Xeon 7000 e Itanium 2

Arquitetura Bsica
CPU Unidade de Processamento Central
Registradores e Contadores ULA - Unidade Lgica e Aritmtica UCS - Unidade de Controle e Sincronizao

I/O Entradas e Sadas


Perifricos

Memria
Armazenamento de Dados e Programas

Arquitetura de Von Neumann

Arquitetura de Harvard

Comparativo

RISC E CISC
CISC (Complex Instruction Set Computing), arquitetura baseada em conjunto de instrues complexas, que devem ser decodificadas pelo processador. Estes processadores utilizam microcdigo, que so pequenos programas internos. As instrues CISC no so padronizadas, cada uma interpretada pelo microcdigo de uma forma e leva tempos diferentes para ser executada. RISC (Reduced Instruction Set Computing), arquitetura que utiliza instrues simples e sem microcdigo, no havendo necessidade de decodificador de instrues. Microprocessadores da Motorola, que equipam os computadores Macintosh da Apple, utilizam esta arquitetura.

Microprocessadores e Microcontroladores
A diferena bsica entre Microprocessadores e Microcontroladores que o primeiro realiza somente as funes de processamento, no tendo memria ou portas de I/O. O segundo, por sua vez, conta com memria interna e tambm canais de I/O, sendo utilizado em aplicaes mais especficas.

Memria
Volatilidade Escrita/Leitura Tipo de Armazenamento
RAM (Random Access Memory) ROM (Read-Only Memory) EPROM (Erasable Programmable ROM) EPROM (Electrically EPROM)

Funcionamento
O microcomputador/microcontrolador uma mquina eletrnica capaz de buscar e executar instrues de programas alocados em memria; Aps a energizao de um microcomputador/microcontrolador, gerado um sinal de reset que zera o Program Counter (PC), ou seja, posiciona o Contador de Programa no endereo inicial. O programa executado a partir de seu incio; O microprocessador/microcontrolador ir buscar e executar a instruo que est localizada no endereo de memria definida pelo PC (incio do programa); Para buscar uma instruo na Memria, o microprocessador/microcontrolador gasta um determinado tempo chamado de Ciclo de Busca. Para executar a instruo buscada, o Microprocessador/microcontrolador gasta outro tempo determinado chamado de Ciclo de Execuo.

Funcionamento
Ciclo de Busca: operao de leitura de uma instruo a partir da posio de memria cujo endereo definido pelo contedo do PC. Nesse ciclo o contedo do PC incrementado de uma, duas ou trs unidades. Isso depende do tamanho da instruo; Ciclo de Execuo: executa a instruo (operaes de movimentao de informao, operaes aritmticas e lgicas, etc.).

PIC
PIC Peripheral Interface Controller
Classificao relacionada ao comprimento da palavra da instruo: 1) Base-Line: 12 bits 2) Mid-Range: 14 bits 3) High-End: 16 bits

Classificao quanto ao tipo de Memria


C, como em PIC16CXXX. Estes dispositivos tem memria do tipo EPROM. CR, como em PIC16CRXXX. Estes dispositivos tem memria do tipo ROM F, como em PIC16FXXX. Estes dispositivos tem memria do tipo Flash.

PIC 16F628A

Pinagem

Pinagem
RA0 a RA7 PORT A Pode ser configurado como Entrada ou Sada Digital RB0 a RB7 PORT B Pode ser configurado como Entrada ou Sada Digital Vdd Alimentao 5Vcc Vss Referncia terra 0Vcc OSC1/CLKIN Sinal de Clock produzido por Cristal ou Circuito Externo OSC2/CLKOUT Sinal de Clock produzido por Cristal MCLR Reset em Nvel Baixo (0)

Mnemnicos

Mnemnicos

Mnemnicos

Mnemnicos

Linguagem Assembly
Lista de Instrues Mnemnicos definidos pelo Fabricante Baixo Nvel Assembler : Software que traduz o programa para o cdigo binrio.

Estrutura Assembly
Estrutura Bsica:
Label Cdigo de Operao (mnemnico) Operando ou Endereo Comentrio

Pseudo-Instrues

Estrutura Assembly
Pseudo-Instrues
Base do Dado
Decimal (D) Hexa (H) Octal (O) Binrio (B)

TITTLE ORG endereo EQU define label END fim de programa

Endereamentos
Modo Direto
MOVLW H10 = Move para o acumulador W o valor 10 em Hexadecimal MOVWF 0x20 = Move o valor do acumulador W para o endereo 20h

Modo Indireto
MOVLW H20 = Move o valor 20h para o acum. W MOVWF FSR = Aponta FSR para o endereo 20h MOVLW H5A = Move 5Ah para o acumulador W MOVWF INDF = Move 5Ah para o endereo 20h

Memria de Programa
a chamada memria de instrues, onde fica armazenado o programa que ser executado no microcontrolador. Esta memria do tipo FLASH no PIC 16F
Vetor Reset Reservado Reservado 0000h 0001h 0002h

Reservado
Vetor de Interrupo Memria de Programa

0003h
0004h 0005h 07FFh 0800h

Reservado 1FFFh

Memria RAM
Existem 4 bancos de memria RAM, que so compartilhados pelos GPRs (Registradores de Propsito Geral) e SFRs (Registradores de finalidades especficas). O acesso a estes bancos dados pelos bits 5, 6 e 7 do registrador STATUS.
Endereamento Indireto IRP Banco 0 0 Endereamento Direto RP1 0 RP0 0

Banco 1 Banco 2
Banco 3

0 1
1

0 1
1

1 0
1

Registradores
SFR (Special Function Register): Registradores de Funes Especiais. Muitas vezes referenciados pela letra f GPR (General Purpose Registers): Registradores de Propsito Geral Devido a forma de implementao das funes o endereamento limitado a 7 bits (128 registradores). A filosofia de paginao utilizada. Existem diversos bancos de 128 posies. O acesso ao banco controlado pelo registrador de STATUS: RP0 e RP1 Alguns registradores so espelhados

SFRs
STATUS: Est relacionado s operaes matemticas. Indica estouro dos registradores(CCarry e DC-Digit Carry) e resultados iguais a zero PCON: Funo mais utilizada que configura freqncia do oscilador interno 37KHz ou 4MHz OPTION_REG: Configura o funcionamento dos registradores internos PORTx: L e escreve informaes nos pinos externos do PIC TRISx: Define direo de funcionamento de cada pino da porta (se entrada ou sada)

SFRs
INTCON: Interrupes Especiais e chave gera
Chave Geral: GIE Timer 0, Interrupo Externa e Mudana de Estado

PIR1 e PIE: Gerencia interrupes dos perifricos


EEPROM, Comparadores, USART, CCP, Timer 1 e 2

TMR0 e TMR2: So os Timers 0 e 2 respectivamente


" Contadores de 8 bits " Seu incremento pode ser automtico (CLK) ou por um sinal externo (Timer 0)

TMR1L e TMR1H: So os registradores do Timer 1


Contador de 16 bits

Endereamento Indireto
FSR (apontador) INDF (espelho do apontador)

SFRs
Pode ser utilizado como destino de diversas operaes aritmticas e lgicas No est mapeado na memria RAM utilizado principalmente como ponte entre os registradores f , pois no possvel trocar dados diretamente entre eles A instruo MOVF copia a informao do registrador f para W A instruo MOVWF copia a informao do registrador W para f

Portas de I/O
Configurao dada pelos registradores TRISA e TRISB. PORTA associado ao registrador CMCON PORTB associado ao registrador OPTION RA5 Reset RB5 LVP (Low Voltage Program) Escrita no Port feita em Latch

Portas de I/O

Caractersticas Eltricas

Caractersticas Eltricas Temperatura de trabalho: -40oC at +125oC Tenso de Trabalho (em relao a Vss): 3.0V 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 potncia: 800mW Corrente mxima de sada do pino VSS: 300mA Corrente mxima de entrada no pino VDD: 250mA Corrente mxima de a sada de um pino (qdo em VSS) : 25mA Corrente mxima de sada de um pino (qdo em VDD): 25mA Correntes mximas de entrada e sada (PORTA + PORTB): 200mA

Exemplo - Configurao PORTA


BCF STATUS,RP1 BSF STATUS,RP0 MOVLW B00000110 MOVWF TRISA BCF STATUS,RP0 BCF STATUS,RP1 MOVLW B00000111 MOVWF CMCON
;SETA BANCO 1 ;BITS RA1 E RA2 CONFIG. COMO ENTRADA

;E DEMAIS COMO SADA

;SETA BANCO 0 ;CONFIGURA OS BITS RA3 A RA0 COMO I/O

Exemplos - Configurao PORTB


BCF STATUS,RP1 BSF STATUS,RP0 MOVLW B00000000 MOVWF TRISB MOVLW B10000000 MOVWF OPTION_REG BCF STATUS,RP0 BCF STATUS,RP1
;SETA BANCO 1 ;TODOS OS BITS SO CONFIGURADOS

; COMO SADA
;CONFIGURA OS BITS RA3 A RA0 COMO I/O ;DESABILITA RESISTORES DE PULL-UP

;SETA BANCO 0

Exemplos LEITURA DE PORTAS


===== LE O VALOR DA PORTA RB0, COMPARANDO =====

BTFSS GOTO GOTO

PORTB,0 PINO_ZERO PINO_UM

;LE O RB0

;NAO, DESVIA ;SIM, DESVIA

===== L O VALOR DO PORTB E ENVIA PARA O WORK =====

MOVF PORTB,W MOVWF TEMP

;LE PORTB E COLOCA VALOR EM WORK ;TEMP RECEBE CONTEUDO DO PORTB

Exemplos ESCRITA NAS PORTAS


===== ESCREVE NVEL LGICO NA PORTA RA0 =====

BCF

PORTA,0

;NIVEL LOGICO 0 NO RA0

===== ESCREVE NVEL LGICO EM TODAS AS PORTAS DE PORTB ===== ;W RECEBE 0FH

MOVLW B'00001111' MOVWF PORTB

;PORTB RECEBE 0FH

Exemplos
===== CONFIGURA PORTB E ESCREVE VALORES NAS SAIDAS =====

BCF BSF MOVLW MOVWF BCF BCF MOVLW MOVWF

STATUS,RP1 STATUS,RP0 B'00001111 TRISB STATUS,RP1 STATUS,RP0 B'00000000' PORTB

;SETA O BANCO 1
;NIBBLE ALTO DO PORTB CONFIG.
;COMO OUT E DEMAIS IN

;SETA O BANCO 0
;W RECEBE 00H ; SAIDAS CONFIG. VO PARA 0

Exemplos
===== MUDA CONFIGURAO DA SAIDA HABILITANDO VALOR SETADO ANTERIORMENTE =====

BCF STATUS,RP1 BSF STATUS,RP0 MOVLW B'00001111' MOVWF TRISB BCF STATUS,RP1 BCF STATUS,RP0 MOVLW B'00000000' MOVWF PORTB BCF STATUS,RP1 BSF STATUS,RP0 MOVLW B'00000000' MOVWF TRISB

;SETA O BANCO 1 ;NIBBLE ALTO DO PORTB CONFIGURADO ;COMO SAIDA E OUTRAS COMO ENTRADA
;SETA O BANCO 0 ;W RECEBE 00H ;TODAS AS SAIDA CONFIG. VO PARA 0

;SETA O BANCO 1 ;W RECEBE 00H ;TODAS AS PORTAS B CONFIG. COMO SAIDA

Fluxograma
Inicio e Fim

Sub-Rotina

Acesso aos IOs

Decises

Linha de Fluxo

Exemplo
Inicio

Acorda Lava o rosto Sim


Barba ? Faz a Barba

No Toma Banho Toma Caf

Trabalho

Exerccios
Criar um Fluxograma para Controlar o Nvel de uma Caixa Dgua Criar um Fluxograma para Controlar um Semforo Criar um Fluxograma para Controlar um Sistema de Iluminao de Ambiente

Criando um Programa
Dados fundamentais para insero como comentrios no programa:
Titulo Nome do Projetista Verso do Programa Data de Concluso

Definies
Para facilitar a programao em assembly, o fabricante disponibiliza um arquivo de definies. Este contm definies de nomes padro para endereos de memria muito utilizados, como registradores.
#INCLUDE <P16F628A.INC> #INCLUDE C:\PROJETOS\JOAO.INC

Atalhos
Utilizando a diretiva #DEFINE, pode-se criar atalhos para realizao de tarefas.
#DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0

Obs. DEFINE s pode ser utilizado para uma string

Atalhos
Para a utilizao de vrias Strings, temos a diretiva MACRO e ENDM.
BANK0
BCF BCF

MACRO
STATUS,RP0 STATUS,RP1

ENDM

Atalhos
BANK1
BSF BCF

MACRO
STATUS,RP0 STATUS,RP1

ENDM BANK2
BCF BSF

MACRO
STATUS,RP0 STATUS,RP1

ENDM BANK3
BSF BSF

MACRO
STATUS,RP0 STATUS,RP1

ENDM

Variveis
Para declarao de variveis, pode-se utilizar a diretiva EQU
W_TEMP EQU 0x20

Obs. Como no caso anterior, sua utilizao restrita a somente uma string.

Variveis
Para a declarao de variveis em bloco, utiliza-se a diretiva CBLOCK e ENDC:
CBLOCK 0x20 W_TEMP STATUS_TEMP CONT FILTRO FLAG MARIA LED ENDC

FLAGS
Est mais relacionado a tcnicas de programao, a criao de uma varivel relacionada a eventos do sistema. FLAG EQU 0x23

Neste caso, cria-se uma varivel com o nome FLAG, no endereo 0x23, onde pode-se relacionar cada um dos seus 8 bits com eventos do programa. Por exemplo, se o led j acendeu, o bit 1 vai para 1. Se o boto j foi pressionado o bit 3 vai para 0.

Constantes
A definio de constantes muito utilizada quando se utiliza muito um determinado valor no projeto, mas que este pode ser modificado para ajustes, no precisando modific-lo em todos os locais do programa que o mesmo aparece.

Constantes
Declarao de Constantes:
Decimal Hexa Octal Binrio ASCII Dxx ou .xx Hxx ou 0Xxx Oxx Bxxxxxxxx Ax ou x

Constantes
TEMPO EQU .200 MAX EQU HAA MIN EQU B00011010

Atalhos para Portas


#DEFINE #DEFINE #DEFINE BOTAO1 BOTAO2 LED PORTA,1 PORTA,2 PORTB,0

Neste caso, utiliza-se a diretiva DEFINE para associar o termo BOTAO1 e BOTAO2 com os pinos RA1 e RA2 , respectivamente, e o termo LED ao pino RB0, podendo l-los e escrev-los diretamente.

Vetor Reset e Interrupo


ORG 0x00 GOTO INICIO Indica que ao dar o reset o programa ir para o LABEL INICIO
ORG 0x04 RETFIE Retorna para o programa caso acontea uma interrupo OBS.: A Diretiva ORG define que a partir do endereo subseqente seja escrito o programa que est abaixo da rotina.

Inicializao / Configuraes
CLRF PORTA CLRF PORTB CONFIGURAES DE PORTAS

Programa LED
Inicio

Apaga LED

No

Boto Pressionado ? Sim Acende LED

Debounce
Inicio DEBOUNCE=6 No B1=? Sim Inc. DEBOUNCE DEB = 0? Sim No

DEBOUNCE=6
TRATA BOTAO

Debounce
INC_DEBOUNCE MOVLW .6 MOVWF DEBOUNCE
TESTA_B1 BTFSC B1 GOTO INC_DEBOUNCE INCF DEBOUNCE,F BTFSS STATUS,Z GOTO TESTA_B1

MOVLW .6 MOVWF DEBOUNCE GOTO TRATA_B1

Debounce
INICIALIZA MOVLW .200 MOVWF DEBOUNCE
TESTA_B1 BTFSC B1 GOTO INICIALIZA DECF DEBOUNCE,F BTFSS STATUS,Z GOTO TESTA_B1

MOVLW .200 MOVWF DEBOUNCE GOTO TRATA_B1

Debounce
INICIALIZA MOVLW .200 MOVWF DEBOUNCE
TESTA_B1 BTFSC B1 GOTO INICIALIZA DECFSZ DEBOUNCE,F GOTO TESTA_B1 MOVLW .200 MOVWF DEBOUNCE GOTO TRATA_B1

Interrupes
qualquer tipo de evento recebido pelo microprocessador que desvie da seqncia normal de programao e passe a executar uma outra seqncia de tratamento deste evento recebido.

Interrupes
Fontes de Interrupo:
1. Interrupo Externa atravs do pino RB0/INT 2. Interrupo por transbordo do Timer 0 - TMR0 3. Interrupo quando se troca alguma entrada em RB4:RB7 4. Interrupo quando se completa uma escrita de dados na EEPROM 5. Mdulo Comparador 6. Interrupo de USART 7. Estouro de TMR1 8. Quando TMR2 = PR2

Interrupes
Habilitao/desabilitao das interrupes feita atravs dos bits de controle dos registradores INTCON / PIE1 Verificao de Interrupo pelos Registradores INTCON / PIR1 As interrupes so desabilitadas com o Reset A instruo de Retorno de Interrupo - RETFIE habilita as interrupes Quando se atende uma interrupo, desabilitase automaticamente todas as interrupes e o programa salta para o endereo 0004 da memria de programa.

Tratamento das Interrupes


ORG 0x04
SALVA_REGS MOVWF SWAPF BCF MOVWF BTFSC GOTO BTFSC GOTO GOTO APAGA_FLAG_TMR0 BCF ;TRATA TMR0 GOTO RESGATA_REGS APAGA_FLAG_EEPROM BCF ;TRATA EEPROM GOTO RESGATA_REGS RESGATA_REGS SWAPF MOVWF SWAPF SWAPF
RETFIE

W_TEMP STATUS,W

STATUS,RP0
STATUS_TEMP INTCON,T0IF APAGA_FLAG_TMR0 PIR1, EE1F APAGA_FLAG_EEPROM RESGATA_REGS

INTCON,T0IF

PIR1,EE1F

STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,W

Power Down - SLEEP


um modo de baixo consumo caracterizado pelo congelamento do oscilador externo. Para entrar nesse modo, basta executar a instruo SLEEP. O WDT resetado mas no congelado. Modos de se despertar o Micro: 1. Reset no pino _MCLR 2. Transbordo de WDT 3. Interrupo (RB0/INT ; RB4:RB7 ; escrita na EEPROM)

Reset
Resistor de pull-up (1 a 10K) conectado ao pino _MCLR do PIC. O pino de entrada CMOS e no drena corrente significativa do resistor. PWRTE - Este bit de configurao (mid-range) insere 72ms de atraso antes que a primeira instruo seja buscada e executada. Power-On Reset (POR) Aguarda a tenso de alimentao chegar a um nvel suficiente para o correto funcionamento do PIC. Brown-Out Reset (BOR) Ocorre quando a tenso de alimentao do PIC est abaixo de 4V. (impede que o PIC trave em caso de oscilao de energia)

Timer / Counter
Temporizador/Contador de 8 Bits TMR0 (REGISTRADOR) Pode ser selecionado Clock interno ou externo (subida ou descida de borda)
OPTION_REG.T0CS = 0 --- Temporizador OPTION_REG.T0CS = 1 --- Contador

Temporizador : incrementado a cada ciclo de instruo Quando se escreve em TMR0, o incremento se inibe durante dois ciclos de instruo

Timer / Counter
Prescaler para Temporizao:
Configurado pelos bits PS2:PS0 do OPTION_REG Escalas de 2,4,8,16,32,64,128 e 256 x Ciclo de Instruo ( Determinado pelo Clock), configurado no OPTION_REG Ciclo de Instruo = [1/(Fosc/4)]

Exemplo
CALL SUBROTINA SUBROTINA BANK1 MOVLW MOVWF BANK0 MOVLW MOVWF MOVLW

B10000100 OPTION_REG .250 COUNT .131

DELAY BTFSS INTCON,T0IF GOTO DELAY BCF INTCON,T0IF MOVLW .131 MOVWF TMR0 DECFSZ COUNT,F GOTO DELAY RETURN

Timer / Counter
Contador: incrementado a cada subida ou descida de borda que ocorra no pino RA4/T0CKI
OPTION_REG.TOSE = 0 --- subida de borda OPTION_REG.TOSE = 1 --- descida de borda

Timers/Counters
MDULO TIMER 1
Timer/Contador de 16 bits Registrador T1CON Configura o temporizador Prescaler de 1,2,4 ou 8x Ciclo de Instruo

MDULO TIMER 2
Timer de 8 Bits (somente timer) Registrador T2CON Configura o temporizador Prescaler de 1,4 ou 16x Ciclo de Instruo Postscaler de 1,2,3 ... 16x Tempo do Prescaler

Exemplo
ORG 0x00 BANK0 MOVLW B11010110 MOVWF OPTION_REG
MOVLW 0X00 MOVWF TRISB BANK0 CLRF PORTB PARPAD
BSF PORTB,7 CALL RETARDO BCF PORTB,7 CALL RETARDO GOTO PARPAD

RETARDO
CLRF TMR0 REP
BTFSS TMR0,4 GOTO REP

RETURN

END