Sie sind auf Seite 1von 233

!

Microcontrolador

DE' A l

ADO

• Revisiio da Logica Binaria, Aritmetica e Digital·

• Principios de Microprocessodores·

• Funcionamento Detalhado do 80S 1 •

• Explica~iio Detalhada das In5tru~oe5 •

• Exercicios Resolvidos •

Inclui Apendice com Exercicios Resolvidos de Algorifmos

6~ EDICAO

(ndice Analitico

Parte 1 - Fundamentos Basicos 1

Capitulo 1 -lntroducao 3

Capftulo 2 - Representayao de Informa~ao 4

2.1 - Sistemas Numericos 5

2.2 - Conversao entre Bases 6

2.3 - Bytes e Kilobytes , 11

2.4 - Complementos de 1 e de 2 11

2.5 - Nimeros Sinalizados , 12

2.5.1 - Numeros Sinalizados per Sign-Magnitude (Bit de Sinal) , 12

2.5.2· Numeros Sinalizados por Complemento de 2 13

2.6· Numeros Reais 14

2.7· Numeros com Pontos Flutuantes 15

2.8· C6digo Binario Decimal (C6digo BCD) 17

2.9 - ASCII 17

Capitulo 3 • Arltmetica Binarla 20

3.1 . Adigao 20

3.2· Subtragao Simples 20

3.3 - Adig80 e Subtragao Utilizando Complemento de 2 21

3.4· Multiplicagao 21

3.5· Divisao , 22

Capitulo 4 - Portas L6gicas e Algebra Booleana 23

4.1 . Chaves (Switches) como Operadores L6gicos 23

4.2·" Portas Basicas 25

4.3 - Extensao para Ires ou mais Entradas 27

4.4 . Portas EXOR e EXNOR 28

4.5· Transforrnacoes DeMorgan 30

4.6 - Versatilidade das Portas NAND e NOR 31

4.7 -Identidades Booleanas 32

4.8 - Manipulagao Aigebrica 33

4.9· Tempos (Timings) 34

4.10· Tipos de Safda 35

Capitulo 5 - L6gica Combinacional ,,. 40

5.1 . Half Adder (Meio Somador) 40

5.2· Full Adder (Somador Completo) 41

5.3· Somadorde 4 bits 42

5.4 - Somador/Subtrator 4-bits 42

5.5 - Decodificadores 44

Capitulo 6 - Logica Sequencial 48

6.1 - Flip Flops ,"" ., "',,.,,',.,"',.,"' .. , , .. ,."., .. ,.',., .. , , ,.,' 48

6.2 - Registradores , , ,., , ', , , ,., .. ,., .. ,., , .. 49

Capitulo 7 - Dispositivos de Memoria Semicondutores 51

7.1 - RAM , .. "., , .. , .. , , , , , , .. , .. ,., .. ".,., ,., ,., .. , 52

7.2 - ROM , .. ,", .. , .. "., .. ,."."., " " .. ,.".,."., , ,.".,." 53

Parte II· 0 Microcontrolador 8051 " " " " 55

Capitulo 1 • 0 que e um Microprocessador? " , 57

1,1 • Explicacao Intuitiva: Fazendo um Bolo " ".".""." " " , 57

1 ,2·0 que e um Microprocessador - Explica980 Tecnica 60

1.3 - A CPU Internamente "."" .. " ""."" 62

1.4 - 0 8051 Basico ,." .. ,', .. , .. , , .. , , 63

1.5· Qual e a Diferenga entre Microprocessador (Mp) e Microcontrolador (Me)? " " 65

1.6 - 0 Grupo de lnstrucoes do Microcontrolador " 66

1.7 - 0 Mundo Exterior - 1/0 e Peritericos "." " 67

1.8· Microcontrolador versus Hardware eom L6gica Fixa 68

1,9 - Exercfeios de Fixag80 "." " "" 68

Capitulo 2·0 que e a Familia 8051? " " " " 70

2.0· Introdug80 " " " " ,," 70

2.1 - Arquitetura Interna dos 8051/8052/80550 " 71

2.2· Como e 0 Chip Externamente " " 74

2.2.1 • Esquema Eletnco , , " " , 74

2.2.2 - Desenho da Pastilha (Chip) " 76

2.3 - Descricao Formal da Pinagem do Me 8051 76

2.4 . Organizag80 das Mem6rias " 80

2.4.1 - RAM Interna (General Purpose RAM) 81

2.4.2 - Apresentando com Detalhes os Registradores do Mc 84

2.4.2.1 - ACC ou A (Aeumulador) 85

2.4.2.2 • Ports PO, Pl, P2 e P3 85

2.4.2.3 - B - Registrador B (FOh) 86

2.4.2.4· PSW (Program Status Word) " 87

2.4.2,5 - IE e IP (Interrupt Enable e Interrupt Priority) - (Bytes A8h e B8h) 90

2.4.2.6 - "DPTR", DPH e DPL (Data Pointer High e Data Pointer Low) . (Bytes 83h e 82h) .. 90

2.4.2.7 . SP (Stack Pointer) - (81 h) 91

2.4.2.8 - PCON - (Power Control Register) - (87h) 91

2.4.2.9 - Os Registradores da RAM Interna de Uso Geral 93

2.5 - Exercfeios de Fixagao " 95

Capitulo 3·0 Clock, Ciclos de Maquina e Reset 98

3.1· 0 Clock 98

3.2· Ciclos de Maquina 99

3.3 . 0 Reset 99

Valores dos Registradores logo ap6s 0 RESET 100

3.4· Exercicios de FixaGao 101

Capitulo 4· Os Ports 103

4.0 . lntroducao 103

4.1 . Caracteristicas Internas dos Ports " " 1 03

4.1.1 - 0 Port PO 103

4.1.2 - 0 Port P1 J P2 e P3... 104

4.2 - Caracterfsticas Gerais e de Tempo dos Ports l05

4.2.1 • lnstrucoes que Alteram diretamente 0 Conteudo dos Ports 105

4.2.2 - Condieoes de Tempo Envolvendo os Ports 106

4.3· Exercicios de Fixay8.o 106

Capitulo 5 . 0 Conjunto de Instruyoes 107

5.0 ·lntrodu98.0 107

5.1 - Modos de Enderecarnento das lnsirucoes 109

5.1.1 • Endereyamento por Registrador 109

5.1.2 - Enderegamento Direto 109

5.1.3 - Enderecarnemo Indireto 110

5.1.4· Endereyamento Imediato 111

5.1.5 - Endereyamento Relativo 111

5.1.6 . Enderecamento Absoluto " 112

5.1.7· Enderecamento Longo 114

5.1.8 . Endereyamento Indexado 115

5.2· Tipos de lnstrucao 116

5.2.1 -lnstrucoes Aritrneticas 120

5.2.2· Instruyoes 16gicas 123

5.2.3 -Instrucoes de Transtereneia de Dados 125

5.2.4· lnsirucoes Booleanas 136

5.2.5 - lnslrucoes de Desvio (excluidas as booleanas de desvio) 138

5.3 - Instru90es que afetam Registradores (PSW) 140

5.4· Exercicios de FixaG8.o 141

Capitulo 6 . Interrupcao 144

6.0 -Introducao "" " " " 144

6.1 • Propriedades da lntsrrupcao.; 145

6.2 -Interrupyoes na Familia 8051 146

6.3 - Como Programar as Interrupyoes 149

Exereieio 152

Solugao 153

6.4 - Estrutura Basica de urn Programa com lnterrupcdes 154

6.5 - A lnterrupcao e suas Condicoes de Tempo 156

6.6 - Exercfeios de Fixaeao 158

Capitulo 7 - Timer 159

7.0 - lntroducao , , .. "', .. ", ,', , .. , .. , ,, , .. " ,,' , , , , 159

7.1 - Modos de Trabalho do Timer " " 160

7.1.1 - Modo 0 (13 bits) 160

7.1.2 - Modo 1 (16 bits) 161

7.1.3 - Modo 2 (8 bits com reearga autornatca) 162

7,1,4 - Modo 3 (8 bits rnisto) 162

7.1.5 - 0 Bloeo de "Liga-Oesliga" 163

7.2 - Programando as mod as dos Timer/Counters " 164

7.2,a - Timer Mode Register - TMOD 164

7,2,b - Timer Control Register - TCON 165

7.3· Como Programar as Timer/Counters " 165

Exercfcio , , , , , .. , .. ".,.,',., .. , .. ,", .. ,." , .. , .. , , .. ,.".,.".,., .. ,., .. ,., 166

Solugao .. ,', " " .. ,." .. ,." .. " , , .. ,." , .. ,', , .. ,., '.',., .. , " , ," 166

7.4 - Necessitando de Tempos muito Curtos au muito Longos " 174

7,5 - Exercfcios de Fixagao "." " 175

Capitulo 8 - Serial , .. ,." .. ,."", .. , .. ,.,' ', .. ,." .. ,,., , "., .. ,.,'., .. ,.".,.',.,., 176

8.0 -Introducao , ,,, ",, .. , , , ,",.,, , .. ,." , ,'".,' 176

8.1 - Modos de Cornunicaeao " "."" .. ""."" " 176

8.2 - 0 Sistema de Transrnissao e Becepcao " 177

8.3 - A palavra de Contra Ie SCON 178

8.4 - Os Modos de Operacao 179

8.4.1 - Modo 0 - Sincrono " .. "" " .. " " " " , 179

8.4.2 - Modo 1 - Assfncrono de 8 Bits 180

8.4.3 - Modo 2· Assfncrono de 9 Bils 181

8.4.4 - Modo 3 - Assincrono de 9 bits com Baud Rate Proqramavel 181

8.5 - Corrunicacao entre Varies Processadores " 181

8.6 - Como Programar a Serial " "." "."." 183

8,6,a - Como Habilitar a Serial " "."" .. "".""." " " "" " 183

a.6.b - Como Atuar com as Bits de lnterrupcao SERIAL " " " "." 183

8.6.c - 0 Bit de Paridade nos Modos 2 e 3 " " "" .. " " ,,' 184

8.6.d - Como Gerar as Baud-rates Dssejados.; " " " " "".""."" 184

8,6.e - Quem e a Registrador PCON " " .. "".""." 186

8.6.1 - Como Gerar Baud-rates com a Timer/Counter_I 186

8.6.g - Como fazer a SERIAL interromper 0 microcontrolador na recepcao de dados 188

8.7 - Exercfcio de Fixacao 189

Capitulo 9 - Expansao dos Ports e de Capacidade de Memoria 190

9.0 - Introdug8.o 190

9.1 - Como se Constroi um Sistema em 1/0 Mapeado 190

9.2 - Aumentando a Capacidade do PORT Pl por meio do Perilerico Serial 193

9.3 - Aumentando a Capacidade de Memoria 194

Capitulo 10 - Software: Compllacao, Simulagao, Emulagao e Gravagao 195

10.1 - Linguagem de Maquina e linguagem Assembly 195

10.2 - Linguagens de Alto Nfvel 197

10.3 - Procedimentos Basicos para a Crtacao do Software 197

10.4 - Sirnulacao e Ernulacao 198

10.4.1 - 8imuladores 198

10.4.2 - Emuladores 199

10.4.3 - Emulagao Parcial por meio de Kits de Custo Acessfvel 199

10.5 - Gravagao de EPROM 199

C6digo Fonte 200

C6digo em .HEX 200

C6digo em Binario Resultante na Eprom 201

Capitulo 11 - Desafios 202

Anexo A - Fabricantes de Software de Apoio - 8051 " 207

lnlorrracoes sobre Ferramentas para Desenvolvimento com a Microcontrolador 207

Anexo B - Tabela de lnstrucoes e Perifericos Internos ·8051 209

Notagoes dos Registradores " , "., .. ,', , ,., .. , ,.,.214

L6gica de lnterrupcao ,."., "" .. "", .", ",,'.', , "'" " .. " ,.,.""."., .. , ,.,." ".,214

Registradores Especiais de Programagao , .. , , 215

IE (Interrupt Enable Register) - A8h 215

IP (Interrupt Priority Register) - B8h 215

TCON (Timer Control Register) - 88h 216

TMOD (Timer Mode Register) - 89h 216

Distribuicao da RAM Interna do 8051 219

SCaN (Serial Communication Register) - 98h 220

~ Apendice C - Exercfcios Resolvidos - Algoritmos 222

indice Remissivo , 229

Referencias Bibliograficas .. , .. , , , .. ,." , .. "., .. , , , "., ,.,.".,."., ", 233

.................................................................................................................................................................................................

Parte I

Fundamentos Basicos

.......................................................................................... !.~!~??~f~? _ _ _ !l~~,~~~}

Introdu~ao

Para 0 inicio de nossos estudos sobre microcontrolador, necessitamos de um conhecimento basico do sistema numerico binario e tecnicas digitais. Estes sao itens primordiais para nosso estudo, pois todos os sistemas microprocessados sao base ados nestas tecnicas, Leitores que possuem um born conhecimento de algebra booleana e loqica digital podem pular esta parte.

.~~4.~ " ¥.!.~!.~.~.~~.t!'~!~.~9:'.~.o.?.~.P~!~.!~~.~~ ..

Representa§oo de Informa§oo

Computadores arquivam, manipulam e transform am intormacoes, Neste universo, infermacoes sao frequentemerte chamadas de dados (data). Dados sao normalmente representados por nurneros e texto. Antes de arquivarmos, manipularmos e transformarmos os dados ou informacoes, necessitamos de urn sistema que os represente.

Quando criancas, aprendemos 0 sistema nurnerico decimal para representarmos os nurneros e 0 alfabeto para reproduzirmos um texto. Estes sistemas ainda nao podem ser us ados diretamente pelos computadores que entendem apenas 0 sistema binario, comumente representado pelos sfmbolos "0" e "1 ", mas existem outras possibilidades, como mostrado na labela 1.

Um dfgito binario simples e chamado de bit. Em um computador, 0 bit e armazenado em um dispositive eletr6nico chamado de flip-trop. A caracteristica baslca de um flip-flop e sua capacidade de 'lembrar", Uma vez que um bit e armazenado em um flip-flop, ele podera ser buscado quando necessarlo, Normalmente, 0 e armazenado como baixa tensao (0 Volts) e 1 como alta ten sao (5 Volts).

Na secces seguintes, iremos explorar as propriedades dos sistemas numerlcos decimal e binano, e tambern falaremos dos sistemas octal e hexadecimal, muito us ados nos sistemas computado rizados.

Urn sfrnbolo o Outro Sfrnbolo
1 0
Verdadeiro Falso
Alto Baixo
5 Volts o Volts
Ligado Desligado
8im Nao
Maya Laranja Tabela 1 - 0 sistema binario,

Representa980 de Informa98o fITj'S·

.............. , ; .

2.1 ~ Sistemas Numerlcos

Como 0 sistema binario utiliza apenas dois sfmbolos, ele e chamado de base 2., 0 sistema numerico mais usado pel os humanos e 0 decimal - base 10 - utilizando dfgitos de 0 a 9. Quantidades maiores que 9 sao representadas com 0 aumento do nurnero de dfgitos. Por exemplo, 0 numero 268 contem tres digitos. 0 "8" que tem 0 peso 8 x 1 = 8 0 "6" que tem 0 peso 6 x 10 = 60 e 0 "2" com peso 2 x 100 = 200, formando um total de 268: A ilustracao abaixo mostra isto:

2 x 100 = 200 6 x 10 = 60 8 x 1 = + 8

268(10)

Quando M a possibilidade de alguma conlusao, a base de um numero e indicada no canto inferior do nurnero: 26810.

Geralmente, os pesos dos dfgitos sao representados na forma mn, em que mea base (no caso 10) e n e a posicao do digito, 0 digito da extrema direta esta na posicao "0", 0 proximo digito esta na posicao "1 ", e assim sucessivamente. lsto e mostrado abaixo:

2 x 102 = 200

6 X 101 = 60

8 x 10° =.2:...§_

268(101

Sistema Base Simbolos Entendido pelos Entendido pelos
Humanos Computadores
Binario 2 0, 1 Com dificuldade Sim
Octal 8 0,1,2,3,4,5,6,7 Com dificuldade Nao
Decimal 10 0,1,2,3,4,5,6,7,8,9 Sim Nao
Hexadecimal 16 0,1,2,3,4,5,6,7,8, 9,A, S, Com dificuldade Nao
C,D, E,F Tabela 2 - Sistemas blnarlo, octal, hexadecimal e decimal.

o digito que se encontra na extrema direita do numero formado e chamado de dfgito menos significativo (least significant digit).

Assim como conhecemos 0 sistema decimal, e de sum a importancia que conhecarnos os sistemas binario, octal e hexadecimal.

Octal, ou base 8, utiliza os sfmbolos de 0 a 7, Hexadecimal, ou base 16, utiliza dezesseis simbolos que consistem nos algarismos de 0 age nas letras de A a F. Os sirnbolos de.A a F representam as quantidades de dez a quinze com A para 10, B para 11, C para 12, D para 13, E para 14 e F para 15,

»,

•• h'~ •• ' •• '." •• ' •• "' •• """'."."."'".''.''''''''' ~!.c.~~.??~.t~~!~.?~:..~.~~.!.g~!~!~~.d.? ..

As duas ultimas colunas da tabela 2 most ram que 0 sistema decimal e 0 preferido dos humanos e 0 binario e 0 unico entendido pelos computadores. Entao, por que necessitamos conhecer os sistemas octal e hexadecimal? Apesar de nao serem entendidas pelos computadores, muitas interfaces utilizam esses sistemas para efetuar a comuncacao; e claro que, antes de serem processados, esses sistemas sao convertidos no sistema binario,

Octal e hexadecimal sao usados pelos humanos porquee muito mais facil trabalhar com eles do que com 0 blnario, A seguir, verificamos como e realizada a conversao entre os sistemas.

2.2 - conversao entre Bases

Dentro das quatro bases apresentadas, e possivel a realizacao de doze convers6es diferentes, como mostra a figura 1:

Base 16

Base 2

Base 8

Base 10

Figura 1 - Doze conversoes entre as quatro bases.

Num rspldo exemplo,o nunero 13, na base 10, e mostrado abaixo em cada uma das quatro bases:

1310 = 11012 = 158 = 016

A conversao de urn nurnero binario, octal ou hexadecimal em decimal e feila como mostrado abaixo. Multiplica-se cad a dfgito pelo seu peso, somando os resultados.

Para um nurnero binario:

1 X 23 = 8 1 x i = 4 a x 21 = 0 1 x 2° = + 1

~10)

......................................................................... ~~p.:.~~.~.~t.af~~.?~ .. !~!.?~:!!.~9.~~ ~ . r .

Para um numero octal:

1 X 81 = 8

5 x 8° = + 5 13(10)

Para um numero hexadecimal, 10A9, temos:

1 x 163 = 4096 o x 162 = 0 A X 161 = 160 9 x 16° = ~

4265(10)

Para converter um nurnero decimal em blnario, 0 seguinte procedimento e usado: divide-se continuamente 0 nurnero decimal por dois, ate que 0 resultado chegue a zero. Em cada divisao teremos um resto, que sera sempre zero ou um. 0 nurnero formado pela combinacao dos restos sera 0 binario equivalente ao nurnero original. 0 primeiro resto sera 0 bit menos significativ~ (LSB-Ieast significant bit), a direita, eo ultimo resto sera 0 bit mais significativ~ (MSB - most significant bit), a esquerda. Abaixo tem-se a conversao do nurnero decimal 84 em blnario.

84l2_---" 84 dividido par 2 e

~ .,._ __ 0 42l.f_ 42 e tem resta 0

o 211£

1 10ll.

o 5l2_

1 2l2_

o 1l2_ I MSB1.,._-------1 0

8410 = 10101002

A conversao de decimal em octal au de decimal em hexadecimal e similar ao exempla acima. Converter um decimal em octal e dividir continuamente um numero por 8 e combinar os restos. 0 numero decimal 93 e convertido em octal, como e mostrado abaixo:

93lli_-' __ .. , 93 dividida par 8 e

5 11lli_ 11 e tem resto 5

3 1l.§_

1 0

9310 = 1358

Utilizando a mesma tecnica, 0 decimal 9309 e convertido em hexadecimal da seguinte maneira:

~ ,,8 ' Microcontrolador 8051 Oeta/hado

.:: •.• ~~ • .';r..' " ' , ••••••••.••• u .

9309l1.§---' 9309 dividido por 16 €I

o 581l1.§ 581 e tern resto 1310 ou 016

5 36l1.§

4 2l1.§ 2 0

A base 16 po de ser explicita pelo numero 16 ou pela letra rninuscula h.

Dfgito Octal Dfgito Blnario
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111 Tabela 3 • conversao octal em binario,

Convers6es entre bases 2, 8 e 16 sao extremamente taceis, sendo est a a maior razao para que essas bases sejam mais utilizadas. Um simples dig ito octal corresponde a tres dfgitos blnarios, como mostrado na tabela 3.

Para converter um numero octal em binario, basta converter Gada dfgito octal no correspondente 3-bits binaries. Por exemplo, 10758 e convertido em binarlo:

Octal: 0 7 5

~ ! ! !

Blnario: 001 000 111 101

A ideia e a mesma para conversao hexadecimal em binario, exceto que cad a dfgito hexadecimal corresponde a 4 bits binaries, como ilustra a tabela 4.

Para converter urn numero hexadecimal em binario, basta substituir cada digito hexadecimal pelos 4-bits binarios correspondentes, Por exemplo, 0 hexadecimal A3F1 C e convertido em bnario:

...

Representay80 de Informay8o liC;g.';; .

.. ••• •••••••• ••• ••••• ••• ••• ••• 0 •• 0.' ••••••••••••••••• , , '" u ••••• ~ ••••••• , ;~; •• :.~.'.

Hexadecimal: A 3 F 1 C

I I J ~ \

Blnario: 1010 0011 1111 0001 1100
Dfgito Hexadecimal Digito Binario
a 0000
1 0001
2 0010
3 0011
) 4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
0 1101
E 1110
F 1111
Tabela 4 - Conversao hexadecimal em blnario, A convsrsao de binario em octal ou de binario em hexadecimal e a operacao reversa dos dois exemplos anteriores. Apenas troca-se 0 sentido das setas. A conversao oposta e ilustrada abaixo. Cornecando pelo LSB, formando grupos de tres bits para octal e grupos de quatro bits para 0 hexadecimal:

Binario: 110 0000 1111 T'"
1 1 1 Grupos de quatro
comecando com
o LSB
Hexadecimal: 6 a F 5
r
Binario: 10 110 r---
1 1 Grupos de Ires
cornecando com
Octal: 2 6 7 o LSB .: .. 1.q 0!.~.:~:.~~.~~~!.~.~~:.. ~.~s..! . .'?~~~.~~~.~?. .

As (micas convers6es que sobraram para analisar foram a octal em hexadecimal e hexadecimal em octal. A maneira mais facil de realizar estas conv.ers6es e utilizando a conversao em binario como processo intermediario:

Octal _.,.. Blnarlo ~ Hexadecimal

Hexadecimal

Binario

Octal

Todas as convers6es entre as qualro bases foram apresentadas. Apresentaremos agora um resumo na tabela 5.

cenversao Tecnica
Binario em octal Bits agrupados em tres, cornecando pelo LSB.
Binarlo em decimal Multiplicar cad a bit pelo seu peso e soma-los ao final.
Binario em hexadecimal Bits agrupados em quatro, cornecando pelo LSB.
Octal em bnario Substitui-se cada dfgito octal pelo 3-bit binario,
Octal em decimal Multiplicar cada dfgito octal pelo seu peso e soma-los no final.
Octal em hexadecimal Converter octal em binario e binario em hexadecimal.
Decimal em binario Continuamente divide-se por do is e retiram-se os restos; 0 primeiro
resto e 0 LSB (dfgito menos significativo).
Decimal em octal Continuamente divide-se por oito e retiram-se os restos; 0 primeiro resto
e 0 dfgito menos significativo.
Decimal em hexadecimal Continuamente divide-se por dezesseis e retiram-se os restos; 0
primeiro resto e 0 dfgito menos significativo.
Hexadecimal em binario Substitui-se cad a dfgito hexadecimal pelo 4-bit bnario.
Hexadecimal em octal Converter hexadecimal em binario e depois em octal.
Hexadecimal em decimal Multiplicar cad a dfgito hexadecimal pelo seu peso e soma-los ao final. Tabela 5 - Resumo das teenicas de conversiio.

Exemplo 1: Qual e 0 maior nurnero decimal possivel que eu posso representar com (a) 8 bits, (b) 12 bits, (e) 16 bits, (d) n bits?

Solu~ao: (a) 255, (b) 4095, (e) 65535, (d) 2n - 1.

Discussao: 0 maior numero binario de 8 bits e , 1111111. A solucao para 0 exemplo 1 po de ser encontrada utilizando proeedimento de conversao, mas existe um metodo mais rapido e Iacil. Se adicionarmos 1 ao nurnero 11111111, teremos 100000000 ou 28. Assim sendo, a resposta e 28 - 1 = 255.

Exemple 2: Qual e a quantidade minima de bits utilizada para representar 0 nurnero decimal 539?

Solu~ao: 10 bits.

........................................................................ F2~p.:.~~.~~~~.Y.~? .. ~~..!n.!.?.~!!!.~9.~~ ~1~1~!r

Discussao: 29 = 512, entao 9 bits nao e 0 suficiente. 210 = 1024, entao 0 minimo de 10 bits e 0 suficiente para representar 0 nurnero 539. A resposta a esta questao e tambern encontrada calculando log2539 e arredondando para cima. LOg2539 = 9,074, que arredondando para cima resulta 10 bits.

2.3 - Bytes e Kilobytes

Os computadores e microprocessadores mais antigos trabalham com dados de 8 bits. 0 termo byte veio para descrever convenienlemente este tipo de dado. Outra convencao e que os bits em um byte sao numerados de 0 a 7, sendo 0 menos significativo - posicionado a direita - 0 bit 0, eo posicionado a esquerda 0 bit 7. Como mostrado abaixo:

Numero de bit: 7 6 5 4 3 2 1 0 Byte: 1 0 0 1 0 0 0 1

Um valor de 2 bytes ou 16 bits e frequentemente chamado de word (palavra), e um valor de 4 bytes ou 32 bits e chamado de long-word. Um nibble e um valor de 4 bits ou metade de um byte.

o simbolo K, para Kilo, refere-se a 210 ou 1024. Um kilobyte representa 1024 bytes.

Se um computador trabalha com dados de 8 bits e usa um endereco de 16 bits para arquivar ou recuperar dados da mem6ria, seu endereco contem um espaco de 216 = 65.536 bytes .. Como 216 eo mesmo que 26 x 210, 0 computador tem um espaco de endereco de 64 Kbytes.

Exemplo 3: Quantos bits ha em 3 Kbytes? solueao: 3 x 210 X 8 = 24.576

E comum utilizar 0 termo M ou Mega no lugar de 220 ou 1.048.576. Um megabyte significa 1.048.576 bytes. Um computador que usa 24 bits de enderecamento de dados tem 24 x 220 = 16 megabytes de espaco de enderecamento,

2.4 - Complementos de 1 e de 2

Os complementos de 1 e de 2 de nurneros binaries sao usados para simplificar a subtracao e representar nurneros negativos. Formar 0 complemento de 1 de um nurnero oinario e complementar cada bit. Complementar significa trocar ° por 1 e 1 par 0.

Nurnero binario: 1 0 1 1 1 0 0 Complemento de 1: 0 1 0 0 0 1 1

~t Formar 0 complemento de 2 de um numero binario e obter seu comptemento de 1 e

samar 1.

"

Numero blnario: 1 0 1 1 1 0 0

Complemento de 1: 0 1 0 0 0 1 1

Somar 1: + 1

Complemento de 2: 0 1 0 0 1 0 0

.·I?'.~ ~i~~~.~?~.t~~!.~.?~:..~.~?~ .. ~~!.~!~~.?.~ ..

Uma propriedade interessante e que, efetuando 0 complemento de 2 duas vezes em um nurnero, 0 resultado e 0 proprio numero.

Numero blnario: 1 0 1 1 1 0 0

Complemento de 1: 0 1 0 0 0 1 1

Somar 1: + 1

Complemento de 2: a 1 a a 1 a a

Complemento de 1: 1 a 1 1 a 1 1

Somar1: + 1

Complemento de 2: 1 0 1 1 1 a 0

A ideia dos complementos de 1 e de 2 tem a seguinte interpretacao: para um radical m, 0 complemento de (m-1) e encontrado pela stbtracao de cada dfgito de (m-1). 0 complemento de m e encontrado pegando 0 complemento de (m-1) e eniao somando 1. Na base 10, por exemplo, 0 complemento de 9 e encontrado pela subtra~ao de cada dfgito de 9. 0 complemento de 10 e 0 complemento de 9 mais 1. 0 complemento de 9 de 5210 e 4710, e 0 complemento de 10 e 4810.

2.5 - Numeros Sinalizados

Ate agora, discutimos apenas os nurneros nao sinalizados ou positivos. Na pratica, devemos representar tarnbern os numeros sinalizados ou negativos. Uma vez que introduzimos os rnmeros sinalizados, e importante prestar atencao aos tipos dos numeros. Por exemplo, um computador de 8 bits arquiva numeros do tipo 8 bits. Entao, 0 nomero 510 e representado desta forma:

000001012

as cinco zeros a esquerda do nurnero sao redundantes para nossa concepcao, mas sao importantfssimos ao trabalharmos com computadores.

2.5.1 - Nameros Sinalizados par Sign-Magnitude (Bit de Sinal)

Um simples rnstodo de representacao de rumeros negativos e chamado de signmagnitude. Usando 0 sign-magnitude, 0 bit da esquerda de um numero binario representa 0 bit sinal. Se 0 bit sinal for 1, 0 nurnero e negativo. Se 0 bit sinal for 0, 0 nurnero e positivo. Usando uma representacao sign-magnitude e 8 bits dos val ores +510 e -510, temos:

+5: 0 0 0 0 0 1 0 1

.....----'-----1 ~~--,

Bit sinal positiv~ I Magnitude (5) I 'i

·5: 1 0 0 0 0 1 0 1

.....----'-----1 .L

Bit sinal negativo J Magnitude (5) I

""" .. "" ~.~p.r.~~.~~!.~.9.~~ .. ~~ .. ~~!~:::!.~f~.? j~~i~.1R

Como podemos ver, e de suma importancia saber de quantos bits 0 nurnero e formado.

Por exemplo, nao podemos perguntar simplesmente: Como e representado 0 rusmeto -5 utifizando bit sinal? E necessario fornecer tambern 0 tipo de dado com 0 qual estamos trabalhando.

Exemplo 4: Como e representado 0 nurnero -5 em computadores que operam em 12 bits? Solu~ao: 100000000101

Dlscussao: 0 bit sinal e 1 e os outros 11 bits representam a magnitude 5. Exemplo 5: Que faixa de mmero podemos ter com 8 bits, ulilizando 0 bit sinal? Solu~ao: - 127 a + 127

Discussao: Utilizando a representacao de n bits com sign-magnitude, a faixa de numeros e de - (2n.1-1) a +(2n·1.1).

2.5.2 ~ Numeros Sinalizados por Complemento de 2

o esquema mais comum de representar nurneros sinalizados e por complemento de 2.

Novamente n6s devemos prestar atencao ao tipo dos numercs. Utilizando 8 bits e representacao em complemento de 2, os valores +5 e -5 sao representados assim:

+5: 0 0 0 0 0 1 0 1

-5:

Podemos ver novamente que 0 MSB e 0 para numeros posifivos e 1 para numeros negativos. 0 esquema visto anteriormente para conversao de nurneros binanos em decimais nao trabalha com nurneros negativos representados na forma de complemento de 2. Como ja vimos, efetuando 0 complemento de 2 duas vezes, obtemos 0 nurnero original; nos precisamos apenas pegar 0 complemento de 2 de um numero negativo para encontrar 0 equivalente positivo. Por exemplo, considerando 0 nurnero de 16 bits abaixo:

J111111111101011

Se estamos utilizando 0 metoda de complemento de 2 e perguntamos que numero e este, a resposta nao e tao 6bvia. Sabemos que e um numero negativo, mas para sabermos qual sua magnitude, precisamos apenas efetuar seu complemento de 2 para encontrar seu positivo equivalente. Com isto teremos 0 seguinte resultado:

000 0 0 0 000 001 0 1 0 1 que e facilmente convertido em 2110; entao 0 numero original e -2110•

A seguir, temos um surnario da faixa de rurneros de 8 bits sinalizados (complemento de 2):

!r;j.'4.;~~ ~!~r~~~~!.~~!.~.~~:.§.~~.!.P~~~.!0.~.~? .

Binario Decimal
10000000 -128
10000001 -127
10000010 -126
11111110 -2
11111111 -1
00000000 0
00000001 1
01111110 +126
01111111 +127 Em geral, a faixa para n bits de numeros sinalizados e por complemento de 2 e de _(2n-1) a +(2n-1_1).

A representacao em complemento de 2 dos numeros negativos, a primeira vista, parecs meio estranha, mas observando melhor, torna-se muito elegante. Por exemplo, se somarmos 1 a representacao binaria de -127, usando a tecnica padrao da adicao, nos teremos -126. Isto nao ocorre no caso da representacao sign-magnitude. Outra vantagem do complemento de 2 e que simplifica muito as operacoes de soma e subtracac em nurneros sinalizados.

Exemplo 6: Qual a faixa de nurneros sinalizados em complemento de 2 de 12 bits? Solu~ao: -2048 a +2047

Dlscussao: n = 12, _2n-1 = _211 = -2048, +2n1 - 1 = 211 - 1 = +2047.

2.6 ~ Numeros Reais

r----------1 x 2'" = 16,000'000 ...--------0 X 2+3 = 0,000000 ...-------0 X 2+2 = 0,000000 r-------1 x 2+1 = 2,000000 ...------0 x 20 = 0,000000

r------1 x 2'1 = 0,500000 o x 2'2 = 0,000000 1 X 2'3 = 0,125000 ~ 1 x 2'4 = 0,062500

. I Ir ~ ~ ~::: ~:~~~~~~

100 10,10 110 112J 18,703125(10)

A representacao de nurneros reais em blnano e uma extensao natural da tecnica para inteiros. 0 peso do bit a direita da vfrgula e 2-1, 0 peso do proximo bit e 2-2, e assim sucessivamente. Por exemplo, a conversao do numero real binario 10010,101101 em decimal e mostrada ahaixo:

........................................................................ '2~p.!~~~.~t~.y.~~ .. ~~ .. !Q!.?:r:!~9.~O' ~:5.5 .. :~

A conversao inversa e interessante. A parte inteira e convertida como antes. A frayao e convertida multiplicando continuamente par 2 e extraindo a porcao inteira do resultado (0 digito imediatamente a esquerda da virgula). 0 processo e repetido ate que 0 resultado da multiplicagao seja zero, ou ate que se atinja a precisao desejada. A conversao de 0,39207 em bnario com seis casas decimais de precisao e mostrada abaixo:

~

0,39~ O...______

r Primeiro binario

0,78414 x 2 :;: 1,56828 11 / 1-(_ca_s_a_de_C_im_a_l) _.

0,56828 x 2 :;: 1,13656

0,13656 x 2 :;: 0,27312

0,39207\0 :;: 0,0110012

o

0,27312 x 2 :;: 0,54624 0

0,54624 x 2 = 1,09248

etc.

Note que a conversao pode continuar indefinidamente·.

2.7 - Numeros com Pontos Flutuantes

A representacao em ponto flutuante e muito usada para descrever nurneros reais. A notayao ponto flutuante consiste em expressar um nurnero utilizando urn expoente, uma base e a frayao (tarnbern cham ada de mantissa).

) Expoente I I Fra9ao OU mantissa r- F x B~ r.::---1.

~

A fracao tern um ponto decimal (virgula) implicito a esquerda. Em binarlo, e colocado um bit de sinal para descreve-lo como positivo au negativo. 0 numero decimal 2,40625 e mostrado abaixo em 12 bits no formato ponto tlutuante, com urn bit de sinal, mantissa de 8 bits e urn expoente de 3 bits.

I Ponto decimal impllcito I

= + 0,01001101 x 2°'1 = + 0,01001101 X 23 :;: + 0010,01101

= + 2 + 0,25 + 0,125 + 0,03125 :;: + 2,40625



rtmm ¥..~~:9.~~~.t!.~!~.~~!..~.~?~.p.~!.~/~~.??. .

Como e visto acima, 0 expoente e 0112 ::: 310. Assim a mantissa e multiplicada por 23, que e 0 mesmo que deslocar a virgula tres casas para a direita,

Ha numerosos formatos de ponto flutuante em uso. 0 mais comum corresponde a Iracao normalizada (0 bit a esquerda deve ser sempre 1) que utiliza a notacao excess-n para 0 expoente. A tabela 6 mostra como exemplo 0 formato excess-4 em 3 bits:

Bimirio Decimal Decimal-4
000 a -4
001 1 -3
010 2 -2
011 3 ·1
.100 4 0
101 5 1
110 6 2
111 7 3 Tabela 6 - Notac;ao Excess - 4.

Note que a coluna da direita nos da uma faixa de expoente de -4 a +3, ou seja, esta notacao nos fornece a oportunidade de trabalhar com expoentes negatlvos. Abaixo moslraremos 0 valor decimal 0,171875 expresso em 12 bits em ponto flutuante, um bit sinal, uma frac;:ao de 8 bits normalizada e um expoente em excess-4 em 3 bits.

= + 0,1 011 0000 x 2.2 = + 0,001011

= + 0,125 + 0,03125 + 0,015625 = + 0,171875

o formato excess dependera de seu tipo. A ideia e fornecer expoentes positives e negatives. Per exemplo, um formato de 8 bits de expoente poderia utilizar 0 excess-128, e isto daria uma faixa do expoente de -12810 a + 12710•

,ti'-:·~'",·.rj

........................................................................ ~~e!.~~~~~~f~9 .. ~~ .. ~~!.?~~?~9.~? J~H~:

2.8· C6digo Blnario Decimal (C6digo BCD)

Ha lnlormacoes numericas que nao representam quantidades,. ou seja, nao sao usadas em operacoes arlnneticas. Um bom exemplo e urn numero de telefone. Um metodo comum de representar esses nurneros para armazenar em uma mem6ria do computador e chamado de c6digo blnarlo decimal ou c6digo BCD (binary-coded decimal). Um c6digo BCD separa cada dfgito em um c6digo de 4 bits. Veja tabela 7.

BCD Decimal
0000 a
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
Tabela 7 - C6digos BCD. Nota-se que os nurneros 10102 ate 111 lz, nao sao usados. Por exemplo, 0 nurnero de telefone 824 7590, em BCD, e mostrado assim:

Decimal: 8 2 4 7 5 9 0

/ / III \ \

BCD: 1000 0010 0100 0111 0101 100 0000

o c6digo BCD tarnbem e usado para representar quantidades, mas tarnbem e necessaria uma arltrnetica BCD. Circuitos especiais ou instrucoes sao usados para adiyao e subtrayao BCD.

2.9· ASCII

Os textos sao mais comumente representados por urn sistema padrao, 0 ASCII (American Standard Coded for Information Interchange) que e urn c6digo de 7 bits, representando 27 = 128 sfmbolos ou operaeoes de controle. Veja tabela 8.

~d;~1~ ¥.!.~~9.~~~.t:.?!.~.??!..~.~~.~ .. g~!~.!~~.?? ..

bits 4321 bits 765
000 001 010 011 100 101 110 111
0000 NUL DLE SPACE 0 @ P , P
0001 SOH DCl ! 1 A Q a q
0010 STX DC2 " 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d 1
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB , 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i Y
1010 LF SUB * J Z j z
1011 VT ESC + , K [ k {
1100 FF FS < L \ I ,
, I
1101 CR GS - = M 1 m }
1110 SO RS > N " n -
1111 SI US I ? 0 - 0 DEL Tabela 8· C6digo ASCII.

Posicao do bit no C6digo ASCII:

7 6 543 2

1 0 0 0 0 0

Exemplo da tabela 8:

A = 100000h = 4116 = 6510

Dos 128 c6digos ASCII, 95 sao graficos e 33 sao de controle. Os c6digos graficos cornecarn em 2016 (Space) e VaG ate 7E16 (-). Os mais comuns, e claro, sao os sfmbolos do alfabeto e os dfgitos. Uma variedade de sinais de pomuacao e tarnbern representada.

Os c6digos de controle cornecarn em 0016 e VaG ate 1 F16• 0 ultimo c6digo, 7F16, tarnbcrn e um c6digo de controle.

Os bits do c6digo ASCII sao numerados de 1, a direita, ate 7, a esquerda. Este e um estilo diferente da numeracao de bits usual (0 LSB normal mente e 0 bit 0) e isto pode causar certa confusao. 0 exemplo da representacao ASCII e dado abaixo:

Numero do bit: 7 6 5 4 3 2 1

Letra z C6digo ASCII: 1 1 1 1 0 1 0

o c6digo ASCII tem propriedades muito interessantes. Note que os dfgitos de 0 a 9 sao dados pel os c6digos de 3016 a 3916. Se os Ires bits mais significativos forem desprezados, teremos 0 c6digo BCD.

, ,.""" """".".''' '''' ''''' '''' '''''' ,F2~p.!.~~~.~!~,t~~"~~.,!~!.~~~~9.~,?" , .. , "., , " ,"" " .. ,,:1;:1g,.:

As letras maiusculas e rninusculas diferem apenas no bit 6. Veja exemplo abaixo: 7 6 543 2 1

"A": 1 0 0 0 0 0 1

"a": 1 1 0 0 0 0 1 Ir-A~p-en-as bit 6 e diferente I

o exemplo acirna rnostra que se quisemos transforrnar urna letra rninascula em maiuscula, basta "zerarrnos" 0 bit 6, Para fazermos a transtorrnacao no sentido oposto, basta "setarmos" 0 bit 6.

A maior parte das teclas de urn computador implementa uma fungao de control, Por exemplo, contro/-s e trequenternente utilizado para suspender a transrnissao de saida para urn dispositivo (pause), enquanto control-q finaliza a transmissao, A funcao de controle e freqiientemente implementada, inibindo os bits 6 e 7 no c6digo ASCII. Da tabela ASCII, s e 73,6, entao control-s gera a c6digo 1316, como mostrado abaixo:

b~: 7 6 5 4 3 2 1 "5": 1 1 1 0 0 1 1

IBits 6 e 7 sao inibidosl

"Control-s": ~ .

Na tabela 8, este c6digo e chamado de DC3, para Device Code 3, Este e um c6digo de cantrale de dispositivo especial e e usado para indicar transmissao "off" (XOFF). 0 c6digo de cantrale de transmissao "ON" e chamado de DC1 au XON, Os c6digos XON e XOFF tarnbern sao usados para a controls de fluxo de informagao junto as linhas de comunicacao que utilizam modems, Os c6digos de controle do ASCII tern grande utilizacao nos meios de cormmicacao.

Exemplo 7: Converter a placa de um autom6vel AFC 4589 nos c6digos ASCII binario e hexadecimal.

Solu~ao:

Simbolo Hexadecimal Binario
A 41 01000001
F 46 01000110
C 43 01000011
Space 20 00100000
4 34 00110100
5 35 00110101
8 38 00111000
9 39 00111001 Exemplo 8: Que c6digo de controle e gerado pela func;:ao control-m em urn computador tfpico? Solu~ao: 0016, (CR = Carriage Return = Retorno)

Oiscussao: Control-m e um modo de gerar um retorno ou "enter" na maioria dos teclados. m = 1101101 »» "zerando" os bits 7 e 6, teremos:

Control-rn = 0001101 = 0016

:::.?'Q;:~ , .. , .. ,,~!?~~,?,?~,t!.~!~,~~!.,~,q,?',~.,~~_t~'!h.~.1.? ,., ..

Arilmelica Blndrln

Neste item, vamos apresentar tecnicas de adi9ao, subtracao, muhiplicacao e divisao,

3.1 - Adigao

A adi9ao binaria e similar a decimal. Em decimal, existe 0 "vai urn" (carry) quando a soma ultrapassa 9. Em binario, ha 0 carry quando a soma ultrapassa 1, Em binario, se dois bits sao somados, ha apenas quatro possibilidades:

~

11

e :':._._j_

10

o 0

+0 +1 +0

o 1 1

Uma soma de nurneros com n bits e feita normalmente. Em caso de estouro, 0 carry se "propaga":

11 10 11 1 + 0 1 1 0 10001

Pode-se verificar 0 exemplo acima, convertendo em decimal. 0 primeiro tator e 101 h == 1110, 0 segundo tater e 01102 == 610, e a A soma de 11 mais 6 e 1710 == 100012.

3.2- Subtragao Simples

Uma subtracao envolve um minuendo, urn subtraendo e a dllerenca:

Minuendo: A Subtraendo: .:..!2.

Diferenca: C

Aritmetica Bin aria mi'21li\j,

" 0 •• 0 •• '···· ••••••••••••••••••••••••• , t.·.··.··.···· .. _ .. _· " " _, _ ........................•. 0 •••• •••• ••••••••••• ~ .••••.••••• ~;

Numeros binaries sao subtraidos com a mesma tecnlca usada para os decimais. Zero subtraido de um e claro que necessita de um "em presta um" (borrow). Veja 0 exemplo abaixo:

1 0 0 1

- 0 1 0 0

o 1 0 1

Em decimal, 9 - 4 = 5. Na pranca, os computadores utilizam um esquema muito mais eleganle para realizar um subtracao, utilizando adiyao em complemento de 2.

3.3· Adi~ao e Subtra~ao Utilizando Complemento de 2

Utilizando a representacao em complemento de 2, os nurneros posltivos e negativos sao somados ou subtraidos sem introduyao de uma nova tecnica, Por exemplo, considere a soma -3 com 7; teremos 4. Se -3 e representado em forma de complemento de 2, entao nos somariamos da maneira usual. A seguir, temos alguns exemplos com nurneros de 8 bits:

AJJ

Complemento de 1 do valor 3 /

m-o 0 0 0 0 .0 1 1~1 1 1. 1 1 1 0 1 r::7l

1 1 1 1 1 100 000 0 0 1 1 1 ~

G]-+ 1 00 000 1 0 o-ill

r--. ~1 101

~ ~O 0 0 0 0 1 0 1

~ 11111010 GJ-+ 1 ~1 1 1 1 1 0 1 1

00010101---{ill

+ 1 1 1 1 1 0 1 1 ----jrM=a7-js-_ 5=-1 000100 ° 0"'iJII

o metodo tradicional de subtraeao nao e necessario se os nurneros negativos sao representados usando complemento de 2. A subtracao e realizada utilizando um metoda simples e eficaz que nos chamamos de subtracao por adicao. Para realizar a operacao A - B, nos apenas somamos a complemento de dois do valor S. Isto mostra a seguinte relacao:

A - B = A + (-B)

A operacao decimal 21 - 5 = 16 e rnostrada na ilustragao acima. 0 primeiro passo e converter osubtraendo (+5) em seu complemento de 2 (-5). Ele entao sera somado ao minuendo (21).

Este metoda e valida para qualquer raiz ou base. Se A e B sao de base 10, entao:

A - B = A + "complemento de 1 a do valor B"

3.4 . Multiplica~ao

Multiplicagao binaria e muito similar a decimal. A rnultblicacao envolve 0 multiplicando, o multiplicador e 0 prod uta.

A :Multiplicando !..§.. :Multiplicador C :Produto

~.~2.~.~:i: 0.~?~~.q,?~t~~!~.~~r..~.q,?LP.~[~!~~.~? .

Produtos parciais sao formados pela tecnica de deslocamento e adigao:

1 0 1 0 0 1 1 = 8310

X 0 1 1 1 0 1 1 = 5910

1010011 1010011 0000000

1010011

1010011

1010011

o 000 000

1 0 0 1 1 0 0 1 0 0 0 0 1 = 489710

3.5 - Divisao

Divisao envolve um dividendo, divisor e quociente. ,--_--, A ~-1 Divisor I IDividendor- C-jQuocientel

Para realizar a divisao blnaria, e necessario acompanhar os seguintes passos:

1. Inicialize 0 quociente em zero.

2. Subtraia 0 divisor do dividendo para ter 0 resto parcial (RP).

Se RP > ou = 0, incremente 0 quociente e continue. Se RP < 0, pare.

3. 0 resto torna-se dividendo. Va para 0 passo 2.

Por exemplo, a operacao 100/50 = 2 e mostrada abaixo:

Complemento de 2 do divisor, - 50

Quociente

o 1 100 1 0 0 0 0 0 0 0 0 0 0

+ 1 1 0 0 1 1. 1 0 -------1 RP > ou = 0 entao incrementa I

00110010 "

RP torna-se novo dividendo

00110010 + 1 1 0 0 1 1. 1 O.-----i RP > ou = 0, en tao, incrementa I 0000000 0

o 0 0 0 0 00 1

0000001 0

RP torna-se 0 0 0 0 0 0 0 0

novo dividendo + 1 1 0 0 1 1 1 0

11001110

IRP < 0, entao pare(

Resposta: 0 0 0 0 0 0 1 0 (que e 0 quociente)

.................................................................... ~?~~~ .. ~.?9.i_~.~s..~A!~~!?~~ .. ~.~o.!~~~~ ~ii~~.~

,

Portas Logicas e Algebra Booleana

Neste subitem, deslocaremos nosso foco para circuitos computadorizados. A maio ria dos componentes que sao circuitos 16gicos (tarnbern cham ados de circuitos digitais) opera com dados binaries, em que 0 e representado como tensao baixa e 1 e representado como tensao alta.

4.1 . Chaves (switches) como Operadores Logicos

A ideia de circuitos 16gicos e introduzida por um circuito simples controlado por chaves (switches) e um diodo emissor de luz (led).

o circuito da figura 2 tem quatro componentes: uma bateria de 5 volts, uma chave (sw), um led e um resistor.

Quando houver corrente fluindo no circuito, 0 led acendera. Caso contrario, 0 led ficara apagado. Quando a Sw A esta na posiyao fechada, 0 led acende. Quando a Sw A esta na posiyao aberta, 0 led esta apagado. 0 valor do resistor controla 0 brilho do led. Quanto menor a resistencia, maior sera a corrente, aumentando 0 brilho do led.

SwA

+ Bateria - 5V

Figura 2 - Urna chave controlando urn led.

A idela de circuito 16gico e ilustrada, adicionando mais uma chave ao circuito, como mostrado na figura 3:

rl;;g41% ~~~~?q,?~!.(9!~.??:..~.q,?! . .I?~t~/~~.~? .

~ Bateria

- 5V

$wA SwB LED
aberto aberto apagado
aberto fechado ace so
fechado aberto aceso
fechado fechado aceso Figura 3 • Duas chaves implementando uma tuncao OR.

Se Sw A "OU" Sw B estiverem fechadas, 0 led acendera. Esta e uma fungao loqica OR.

As posicoes possiveis das chaves e a condicao do led estao descritas na tabela 9.

Tabela 9 • Operaeao do Circuito OR.

Se as chaves estiverem arranjadas como no circuito da figura 4, a tuncao loqica AND sera implementada. Agora, para 0 led acender, e necsssario que a Sw A "E" a Sw B estejam fechadas. Se uma delas estiver aberta, 0 led estara apagado.

SwA

o

Sw v,o-----,

Led

~ Bateria 5V

Figura 4 • Duas chaves irnplementando a fun({ao AND.

As possibilidades para 0 led e as chaves A e B estao na tabela 10.

$wA $wB LED
aberto aberto apagado
aberto fechado apagado
fechado aberto apagado
fechado fechado aceso Tabela 10 • Operacao do circuito AND.

................................................................. f?~~~.~.~9!.~~?~.A~Q~.?:~ .. ~?.~!~.~~.~ Jj!?§.~.

o sistema maternatlco usado poles cientistas de computador para descrever a operacao de circuitos logicos e chamado de Algebra Booleana. Nos apenas precisamos introduzir urn pequeno nfvel de abstracao para interpreta-la. Vamos chamar 0 led de Z, e quando ele estiver aceso, teremos 1; quando estiver apagado, teremos O. Para as chaves, diremos que quando estiverem fechadas, teremos 1, e quando abertas, teremos O. As relacoes existentes entre A, B e Z podem ser descritas por uma Tabela-Verdade. Tomando como exemplo 0 circuito AND mostrado e a tabela 10, teremos a seguinte tabela-verdade:

A B Z
0 0 0
0 1 0
1 0 0
1 1 1 A funyao OR e representada em algebra booleana com 0 sfmbolo V e a funcao AND com 0 sfmbolo 1\. Entao:

Z=AVB

e a expressao rnaternatica da fungao OR mostrada na tabela 9, e Z=AAB

e a expressao maternatica da funcao AND mostrada na tabela 10.

4.2 - Portas Basicas

Com esta introduyao, nos ilustramos os circuitos que implementam 0 quadro basico de operacoes logicas. Esses circuitos, comumente chamados de Portas L6gicas, sao mostrados na tabela 11.

A coluna nomeada de operar;8o nos da 0 nome usual de cad a funyao. Alern das fungoes OR (OU) e AND (E), ja vistas anteriormente, temos as fungoes NAND, NOR, EXOR (XOR, OU-eXclusivo), EXNOR (XNOR) e INVERSORA (NOT).

A coluna Sfmbolo mostra 0 sfmbolo gratico de cada porta 16gica. Gabaritos sao encontrados em software de desenho para maior facilidade ao desenha-Ios. A coluna TTL da-nos 0 exemplo de um c6digo de componente de um Gircuito Integrado (GI) para cada fungao logica. TTL, do ingles Transistor-Transistor Logic", e um circuito utilizado para implementacao de circuitos logicos. Gada c6digo corneca com 0 nurnero 74 para indicar que 0 CI e membro da familia TTL. A desiqnacao LS, do ingles Low Power Schottky, retere-se a uma subfamflia dentro da familia TTL. Geralmente as subfamflias sao diferenciadas pelo consumo e velocidade de operacao. Os dfgitos finais sao referentes a fungao do dispositivo.

A coluna equar;ao nos da a formula alqebrica que descreve a funyao de cada porta.

Note 0 usa de uma barra acima da variavel (ou expressao) para indicar uma inversao 16gica, ou negar;ao, Cada equacao tern duas formas comuns. Quando nao ha confusao com operacoes

.J~t ~!.~!.~g'?'0.t!.~!~.?~!..~.~?tP~t~.~~~.d.~ .

arifmeficas, as equacfies superiores podem ser utilizadas. A 16gica OR po de ser expressa como:

Z=A+B

ou como:

Z=AVB

sendo a ultima a forma mais tradicional para a algebra booleana. De tato, e comum chamar a funcao OR de 16gica somat6rio e a tunyao AND de 16gica multiplicadora. Tambem e comum a ornissao do simbolo para a 16gica AND (A . B = AB).

Operacao Simbolo TTL Equa9ao Tabela-verdade
Inversora A----t>o-Z itt
74LS04 Z=A 1
ou NOT 0
A B Z
!=[)-z Z=A+B 0 0 0
OR 74LS32 0 1 1
B Z=Av B 1 0 1
1 1 1
:=O-z Z=A.B ~ ~
o 0 0
AND 74LS08 o 1 0
Z=A!\B 1 o 0
1 1 1
-- ~ ~
D-z Z=A +B o 0 1
NOR 74LS02 -- o 1 0
B Z=AvB 1 o 0
1 1 0
D-z ~ ~ ~
Z=A.B o 0 1
NAND 74LSOO - o 1 1
Z=A!\B 1 0 1
1 1 0
A B z
~D-z Z=A (+) B 0 0 0
EXOR 74LS86 0 1 1
B Z=A\-/B 1 0 1
1 1 0
A B z
~D-z ~- 0 0 1
Z = A (+) B
EXNOR 74LS66 -- 0 1 0
B Z=A\-/B 1 0 0
1 1 1 Tabela 11 - Portas 16gicas basicas,

A coluna da direita, nomeada de tabela-verdade, expressa, em termos booleanos, todas as cornbinacoes possfveis de variaveis de entrada (A e B) e a condicao resultante de safda (Z).

Como exemplo, 0 74LSOO e um circuito 16gico TIL Schottky low-power (baixa potencial que implementa a funQao logica NAND. Ele contern quatro portas NAND de duas entradas em um Cl de 14 pinos, como mostrado na figura 5. Note que doze dos pinos sao referenle as

................................................................... ~~~~~~ .. ~.?9.!.~.~~.~A!q_~?~~ .. ~.??!~.~~~ ;!.?7' ...

A B C o E F G H

Figura 6 - Porta NAND de oito entradas 74LS30.

emradas e saidas de cada porta, enquanto os dois restantes correspondem a conexao de alimentagao. 0 pino 14 e +5 volts (Vee) eo pino 7 e 0 terra (ground ou gnd).

74LSOO

2 3 --+--"./ 4 5 6

(GND)7

14 (Vee) +5V r----+--13

12

11

10

9

8

Figura 5· Configura9ao de pinos do 74LSDD.

4.3 . Extensao para Tres ou mais Entradas

As portas AND, NAND, OR e NOR sao mostradas na tabela 11 com apenas duas entradas, mas estas tuncoes podem ser estendidas para um numero n de entradas. Por exemplo, a 74LS30 e uma porta NAND TTL com oito entradas (veja figura 6).

z

Com oito entradas a tabela-verdade desse disposifivo tem 28 = 256 linhas (nos nao vamos mostra-la aqui). A saida e 1 para cad a combinacao, exceto quando todas as entradas sao iguais a 1.

Aigebricamente tem-se:

Z=A.B.C.D.E.F.G.H

Na teoria, qualquer numero deentradas e possivel para as fungoes AND, NAND, OR e NOR. Na prance, devemos escolher os dispositivos disponiveis em uma familia particular de circuitos integrados. Urn exemplo disto esta na tabela 12.

... ~~.:: Mi~~9.~?'~.~~9/~.?'9!'.~P?~. P~!~~~~.~? , .

Dispositivo Tipo de Porta Numero de Numero de Pinos Tipo de Safda
Portas
7400 nand 2 entradas 4 14 totem-pole
7401 nand 2 entradas 4 14 open collector
7402 nor 2 entradas 4 14 totem pole
7404 inversor 6 14 totem pole
7405 inversor 6 14 open collector
7407 buffer 6 14 open collector
7408 and 2 entradas 4 14 totem pole
7410 nand 3 entradas 3 14 totem pole
7420 nand 4 entradas 2 14 totem pole
7430 nand 8 entradas 1 14 totem pole
7432 or 2 entradas 4 14 totem pole
74LS240 inversor 8 20 three-state
74lS244 buffer 8 20 three-state Tabela 12 - Portas TTL comuns.

4.4 - Portas EXOR e EXNOR

As portas NOR exclusivo e OR exclusivo tern algumas propriedades unicas. A funr;:3.o EXOR pode ser expressa usando operacoes OR, AND e NOT como abaixo:

A EEl B = (A . B) + (A .8)

A operacao EXOR pode ser implementada com portas OR, AND e NOT, como mostrado na figura 7:

A

z

~=lD-z -

8

Figura 7 -Implementaeao EXOR com portas pad roes.

A idela de mais de duas entradas para as fungoes EXOR e EXNOR requer especial

consideracao. E comum pensar na funr;:3.o EXOR desta maneira:

A sa fda e alta se uma ou outra entrada for alta, mas nao ambas. ou

A safda e alta se as entradas forem diferentes.

................................................................... ~?~~~ .. ~.?9..~~.~~.~.A![l.~~.~~ .. ~.??!~.~~~ :~.!?~.~

lsto e evidente, observando a tabela-verdade (veja tabela 11). Obviamente estas frases nao servem, se utilizamos mais de duas entradas. Entretanto, a funcao EXOR pode ser descrita da seguinte maneira:

A safda e alta se a quantidade de bits altos de entradas for fmpar.

Da tabela 11, a safda EXOR e baixa quando nenhuma ou as duas entradas forem altas, e a safda e alta quando uma entrada for alta. Zero e dais sao nurneros pares, um e nurnero impar. Oaf lemos 0 principia de funcianamento da funyao EXOR quando temos mais de Ires entradas. Abaixo vemos a irrplementacao do circuito EXOR de tres entradas utilizando portas de duas entradas, como mostra a figura 8.

~=)D r t e =:JD--z

Figura 8 -lmplernentacao da fun~ao EXOR de tres entradas.

Temos a tabela-verdade desta fun<;ao mostrada na tabela 13:

Entradas Safdas
A B C Z' Z
0 0 0 0 0
0 0 1 0 1
0 1 0 1 1
0 1 1 1 0
1 0 0 1 1
1 a 1 1 a
1 1 0 0 0
1 1 1 0 1 Tabela 13 - Tabela-verdade da fun~ao EXOR de tres entradas.

Comparando Z com as entradas A, B e C, vemos que Z e 1 se uma OU tres entradas forem 1, eO se nenhuma ou duas entradas forem 1, confirmando 0 que foi visto anteriormente. Para Ires enlradas, entao temos:

Z = A (+) B (+) C

Analogamente, a funyao NOR exclusivo e citada da seguinte maneira:

A safda e alta quando a quantidade de bits 1 na entrada for par.

: .. ,~Q: " " ¥.!.~:~.~o.~_t!.~!~.~~!..~.q,?.~ .. P..~t.~J~~.~o. .

4.5 - Transforma~6es OeM organ

o teorema de DeMorgan e uma interessante e poderosa propriedade da algebra booleana. Ele e usualmente expresso como uma identidade das funcoes NAND e NOR:

NAND: A.B=A+B

NOR: A + B = A . B

A B Z
0 0 1
0 1 1
1 0 1
1 1 a Similar identidade para operacoes AND e OR:

AND: A . B = A + B

OR: A +8 =A, B

Para explicar 0 teorema de DeMorgan, vamos considerar primeiramente as duas

seguintes sentences:

Vestir urn casaco se estiver chovendo ou estiver frio,

Nao vestir urn casaco se nao estiver chovendo e nao estiver frio.

Estas sentences chegam a um unico resultado de maneiras muito diferentes.

Analisando-as separadamente, voce pode ver que a primeira sentence e como uma tuncao OR e a segunda e como uma funcao equivalente DeMorgan da operacao OR, Analogamente, as tuncoes AND, NAND e NOR podem ser transformadas para terem uma estrutura diferente, mas a mesma operacao 16gica, Considere a operacao NAND esquematizada na Figura g,

Figura 9· Descricao verbal de uma porta NAND,

Primeiramente, transformaremos a operacao NAND utHizando 0 teorema de DeMorgan que esta esquematizado na Figura 10,

A B Z
a 0 1
0 1 1
1 0 1
1 1 a Figura 10· Descri~ao verbal de porta NAND com transtormacao DeMorgan.

Portas L6gicas e Algebra Booleana ;d'1.~

.......... " "' ' ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• ' ••• ' ••••••••••• ~C,' .~' .; •• ' .' ~ ~:

Opera~ao Forma Padrao Forma DeMorgan Equivalente
AND D- :::[>--
Z=A. B - - -
Z=A+B
::[)- ::::r:>-
NAND - -
Z=A .B Z=A+B
=D- =L>-
OR - - -
Z=A+B Z=A. B
:::[>- ~
NOR - -
Z=A+B Z=A. B Primeiramente vimos que 0 sfmbolo mudou drasticamente para refletir a transtorrnacao.

Ao analisarmos 0 desenho e sua tabela-verdade, observamos que, com uma porta OR com suas entradas negadas, temos uma safda Z ldentlca a uma porta NAND.

A tabela 14 nos da urn resumo das quatro operacoes booleanas e seus equivalentes DeMorgan.

Observe que se:

Z=A .B

entao e 0 mesmo que dizer:

Z=A.B

Compare estas duas equacoes com a figura 9. Elas representam este circuito.

Tabela 14· Transtorrnacoes DeMorgan de portas 16gicas.

4.6· Versatilidade das Portas NAND e NOR

Qualquer fungao loqica pode ser criada utilizando apenas portas NAND. Essa propriedade e chamada de versatilidade da porta NAND. A figura 11 ilustra as fungoes NOT, AND, NOR e OR implementadas com portas NAND.

: .. ~g.:~ 0.~~~~.~?~!.~~!~.r!~:'.~P~.!.g~t~.!h.~.~? .

-----f>o- - ::[)-

Figura 11 - Versatilidade da porta NAND.

Existe a possibilidade de implementar algumas funcoes loqicas com portas NOR.

&::[)-x &::[)-o
7::[)-1 7::[)-x
~::[)-x ~::[)-x
9::[)-1 ~::[)-o 4.7 - Identidades Booleanas

Utili zan do a algebra booleana, verificam os vanas identidades em seu manuseio. Veja a tabela 15, em que sao mostradas estas identidades.

Todas as identidades booleanas podem ser ilustradas por portas logicas. Isto e visto na Figura 12 - lmplementacao com portas loqicas

figura 12, das identidades boolean as.

X+O=X X ,0=0
X +1 =1 X, 1= X
X+X=X OR NOT X ,X=X AND
=
X + X =1 X=X X, X =0
X+V=V+X
X.V=V.X Regra Comutativa
X + (V + Z) = (X + Y) + Z Regra Associativa
X . (V . Z) = (X . V) . Z
X . (Y + Z) = X . V + X . Z Regra Distributiva
X + (V . Z) = (X + V) . (X + Z)
-- - -
X+V=X.V
- - - Teorema de Demorgan
X.V=X+V Tabela 15 -Identidades booleanas.

................................................................... ~?'~~~ .. ~o.9!.~.~?'.~. A~9.~~~~ .. ~?~!.~.~~.a JI~@~ .. ~i

4.8 . Manipula~ao Aigebrica

Conhecendo as identidades booleanas, e possfvel construir e manipular equacces complexas utilizando funyoes 16gicas simples. 0 ideal e minimizar 0 numero de portas requeridas para construir 0 circuito. Por exemplo, considere a equacao booleana

F = ABC + ABC + AC

8em pensar em simplificar a equacao, vejamos como fica a irnplernentacao do circuito na figura 13.

ABC

F

Figura 13· Exemplo de circuito 16gico.

Entretanto, se manipularmos os termos utiJizando as identidades boolean as, a equacao pade ser simplificada.

F = ABC + ABC + AC

- -

F=AB(C+C)+AC

F = AB(1) + AC F=AB+AC

o circuito J6gico da figura 14 e equivalente ao da figura 13, mas nitidamente superior, pois utiliza menos portas.

ABC

F

Figura 14· Exemplo de circuito logico (simplificacao do anterior).

Existe uma variedade de tecnicas para simplificar circuitos 16gicos, sendo a mais comum os mapas de Karnaugh, que serao vistos mais a frente.

4.9 - Tempos (Timings)

.... ~~: 0!.~!.?~~~.~~9!~.~?r..~.~?.!.p.~t.~.~0.~.~~ .

Nos geralmente pensamos na operacao de circuitos logicos com uma nocao estatica, utilizando tabelas-verdade ou equacces booleanas. E importante saber como os circuitos loqicos funcionam dinamicamente, e como as entradas mudam ao longo do tempo. Esta particularidade e importante quando circuitos seqOenciais (ou flip-flops) sao introduzidos. Como exemplo, considere uma porta NAND de duas entradas as quais variam ao longo do tempo (figura 15).

A questao e determinar 0 estado da safda Z com as mudancas das entradas A e B. lembrando da tabela-verdade da funcao NAND e efetuando a separacao dos "timings" das entradas a cada momento em que ha uma rnudanca de nivel, podemos fadlmente obter 0 "timing" de safda (figura 16).

Tempo

Tempo

z

?

(al (b) (c) (d) (e)

Figura 15· Exemplo de timing para porta NAND. Figura 16 - Exemplo de timing para porta NAND.

Separando a forma de onda no tempo, por partes, teremos:

Parte A B Z
a 1 1 0
b 1 0 1
c 0 0 1
d 1 0 1
e 1 1 0 E claro que os timings sao mais complexos quando utilizamos varias portas.

A escala do tempo nao e mostrada no diagrama de timing da figura 16. As entradas estao mudando instantaneamente (Iinhas verticais) eo atraso de entrada para safda e zero. Na pratica, ha pequenos, mas significativos atrasos, A figura 17 ilustra 0 valor dos atrasos de propaqacao da entrada para sa ida. 0 pararnetro "TPHL" (Time Propagation High Low) e 0 tempo de propaqacao de alto para baixo, que e 0 tempo entre pontos de referenda especfficos .nas formas de onda de entradas e saidas com a safda chaveando de alto para baixo. 0 ponto de reterencia para os dispositivos das series 74LS e 1,3 V. Similarmente, "TPLH" (Time

Propagation Low High) e 0 tempo entre pontos de referenda especfficos nas formas de onda

.................................................................... ~?~~~ .. ~.?q!.?~~.~A!!l.~?~~ .. ??.~!~.~~<!. ~)m~

da entrada e salda com a saida chaveando de baixo para alto. Tipicamente, 0 atraso de propapacao da entrada para salda e da ordem de 10 ns para dispositivos 74LS.

tempo

r----------

,

Salda totem-pole

entrada
I
I
I
tphl : I tplh
_....., - --
I I
I I
saida ,.3V' r- Figura 17 - Tempos de propaqacao alto para baixo e baixo para alto.

4.10 .. Tipos de Safda

Anteriormente, na tabela 12, nos listamos uma variedade de portas TTL e identificamos as tipos de safda como Totem-Pole, Open Collector ou Three-State.

SAfoA TOTEM-POLE: Para comecarmos, apresentaremos uma safda tipica inversora TIL (7404). Sfmbolo e circuito sao mostrados na figura 18.

+5V

A--J>o--Z

01

02

Figura 18 - Sfmbolo inversor TIL e esquema.

· .36' Microcontrolador 8051 Detalhado

.................................................................................................................................. u _ .

o estagio de safda do dispositivo esta contido no retangulo Iracejado. 0 termo totempole refere-se apenas ao alinhamento vertical dos componentes. Nos podemos pensar nos dois Iransistores 01 e 02 como chaves controladas por uma entrada A. Enquanto um transistor esta LlGADO, 0 outro esta DESLIGADO. Se 01 esta ligado, a safda Z e 5 V (logica 1). Se 02 esta ligado, a safda Z e 0 V (16gica 0). 01 e chamado de transistor de pull-up e 02 de transistor de pull-down. A relacao entre A, 01, 02 e Z e resumida na tabela 16.

Transistor
Entrada (A) Q1 Q2 Safda (Z)
0 ON OFF 1
1 OFF ON 0 Tabela 16 - Opera~ao interna de urn inversor TTL.

A tabela 16 esta completa: em nenhuma situacao ambos os transistores estarao ligados, ou desligados ao mesmo tempo. Ha uma implicacao pratca disto quando implementamos cireuitos logicos. E comum n6s conectarmos juntas entradas de portas loqicas diferentes, mas nao e possfvel conectarmos duas safdas totem pole juntas, como ilustrado na figura 19.

CORRETO

ERRADO Saidas totem-pole nao podem ser conectadas juntas

Entradas podem ser conectadas juntas

Figura 19 - Saldas totem-pole nao podem ser conectadas juntas.

o problema esta quando a entrada eondiciona uma safda alta a uma porta e uma safda baixa a outra porta, isto 8, ao mesmo tempo teremos 01. ligado em uma porta e 02 ligado em outra. Isto cria uma baixa reslstencia, no componente, do Vcc para 0 terra. 0 Iluxo de corrente atraves das portas sera muito alto, podendo danltica-las,

SAIOA THREE-STATE: A grande maioria de dispositivos TIL tem saida totem-pole. No projeto de sistemas computadorizados, entretanto, e necessarlo conectar as safdas de portas logicas juntas, quando interfaceando urn "bus", ou barramento. Para efetuar isto, um dispositivo 16gieo deve desconectar eletricamente sua safda, quando ela nao esta sendo utilizada no barramento. Considerando a safda totem-pole ilustrada na figura 18, isto ocorreria se 01 e 02 estivessem desligados simullaneamente. Por meio de um controle de entrada, um simples mecanismo 8 introduzido para forneeer um terceiro estado para as portas 16gieas. lsto e ilustrado na figura 20, que mostra urn inversor three-slate com urn controle de entrada. 0 pequeno trianqulo dentro do sfmbolo indica saida three-state.

A entrada extra, E, que significa enable (habilitac;:ao), controla dois diodos que alterarn a operacao interna da porta. Simplificando, se E = 1, ambos, 01 e 02, estarao habilitados para

A

Pones L6gicas e Algebra Booleana lrr37J1i;

............................................ , ••••••••• , •••••••••••••••••••••• 0 •••••••••••••• , ••••••••••••••••••••••••• 0 ••••••••••••••••••••••••••••••••••••• , •••••••••••••••••••••••••••. " •••• r~:: .. ~ •. '.~;~~

eslar ligados, dependendo da entrada A. Se E = 0, lemos uma condicao na saida do gate de alta impedancia, e este seria 0 terceiro estado. lsto e ilustrado na tabela 17.

E---....I

Figura 20 - Uma porta inversora com saida three-state - simbolo e esquema.

Entrada Entrada Transistor
(E) (A) 01 Q2 Safda (Z)
1 0 ON OFF 1
1 1 OFF OFF 0
a x OFF OFF alta irnpedancia Tabela 17 • Operacao de urn inversor three-state ativo em nfvel alto.

A ultima coluna na tabela ilustra 0 terceiro estado. Quando E = 0, (independente da entrada A) temos Q1 e Q2 desligados, traduzindo para a saida Z um estado de alta lmpedancia (Hi-Z). Se 0 dispositivo estiver conectado a uma linha do barramento, ele ira se desligar eletricamente, logo que coman dado pelo sinal E.

Presumidamente, outros componentes estao ligados nessa linha do barramento. A figura 21 ilustra um exemplo disto:

o clsposfivo three-state das figuras 20 e 21 e chamado de buffer inversor three-state com enable ativo em alto. Outras possibilidades sao mostradas na figura 22.

. .l.~~: 0.~?~?.??~.t~?!~.~?!..~.~?Lq,~!~!~~?? .

BARRAMENTO

03

02

01

00

E

Figura 21 - Dispositivo three-state conectado a urn barramento.

buffer Ihree state alivo em baixo

buffer Ihree state inversor ativo em baixo

buffer three-state a~vo em alto

bufffer Ihreee state inversor ativo em alto

Figura 22 - Quatro tipos de buffer three-state.

................................................................... ~?~~~.~.?f!!.~.~?~ .. ~!e~~E~ .. ??.?.!~.~~.~ :r~~.:;.

SAioA OPEN COLLECTOR: 0 terceiro tipo de saida para interface em bus de computadores e chamado de open collector (coletor aberto). Como a safda three state, a open collector permite que varies dispositivos sejam ligados a uma mesma linha. Um inversor com safda open collector e mostrada na figura 23.

+5V

Figura 23 - Safda open collector.

A safda tem um transistor pull-down Q2, mas nao tem um transistor pull-up, 0 terminal superior do transistor - 0 coletor - conecta-se diretamente a saida Z, dar 0 termo open collector. Como 0 transistor de pull-up nao existe, 0 circuito tem apenas a capacidade de colocar sinal 0. Um resistor externo de pull-up e necessario para jogar sinal 1 na safda, isto quando Q2 esta em OFF, como ilustrado na figura 24.

resistor de pull-up

10Kohms Z

oc.

Q.C.

o.c.

Q.C.

Figura 24 - Quatro inversores open collector conectados juntos.

Se alguma entrada A, B, C ou D estiver em alto, a safda Z e colocada em 0. Se todas as entradas estiverem em 0, Z e colocado em alto por um resistor externo de pull-up. Aigebricamente ternos:

Z=A+B+C+D

Desde que a funQao 16gica OR seja implementada por conex6es de saidas de dispositivos juntas, isto e chamado de conexao WIRED - OR. Como visto anteriormente, os buffers open collector estao disponfveis tanto como inversores quanto nao inversores.

.AQc 0!.~~~.~~Q.t!.~!~.d.~!..~.q,?~ .. !?~!~.!?~.??. ..

Logica Combinacional

Um circuito construfdo com portas logicas, cuja operacao e caracterizada por uma tabela-verdade, e chamado de circuito loqico combinacional. A loqica combinacional contrasta com a logica sequencial que tem um clock de entrada, fazendo com que sua operacao dependa de condicoes anteriores.

Como nosso prop6sito e introduzir topicos em organiza<;:ao de computadores, nosso tratamento neste item nao e exaustivo. Nas secces seguintes, ilustraremos alguns tipos de 16gica combinacional, incluindo:

+ Adders (Somadores);

+ Subtracters (Subtratores); + Decoders (Decodificadores).

Entrada (A) Safda (Z)
A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1 5.1 - Half Adder (Meio Somador)

Quando dais mirneros de 1 bit sao somados, existem apenas quatra posibilidades. Se os nurneros sao A e B e as safdas S (soma) e C (carry), entao a tabela 18 ilustra as possibilidades:

Tabela 18 - Adi9ao de dois nurneros de 1 bit.

Um circuito para implementar esta tabela-verdade e ilustrado na figura 25 com duas portas loqlcas.

Loglea Combinacional'4fill

...................................................................................................... , _.·································· ••••• •••• •• 04 •••••••••••••••••••••••••••••••••• :

Entrada (A) Safda (Z)
A 8 Ci Sn Carry-out
0 0 0 0 0
0 a 1 1 0
0 1 a 1 0
0 1 1 a 1
1 a 0 1 a
1 a 1 a 1
1 1 a 0 1
1 1 1 1 1 Figura 25 - Half adder.

5.2· Full Adder (Somador Completo)

Quando somamos nurneros binaries de n-bits, para cada poslcao n nos precisamos de um carry. Considere a soma 5 + 4 ;:: 9, como esquematizado abaixo em binario:

a 1 0 1

+ 0 1 0 a

1 a a 1

Quatro adir;:6es de 1 bit sao necessaries. Considerando como carry-in 0 vindo da operar;:ao anterior e carry-out a resultante, temos na tabela 19 as oito posibilidades que podem ocorrer.

Tabela 19 - Adil?ao de dois mimeros de 1 bit com carry-in Ci.

Um circuito logico para implementar esta tabela-verdade e chamado de full-adder. Uma configurar;:8o comum e mostrada na figura 26 (esquema e simbologia).

A B

FA S

Co

A .............. .--...

B )--t--___"'''''''''

Ci-+- +------1.._.

Ci

Figura 26 - Full adder.

Microcontro/ador 8051 Oetalhado

5.3 w Somador de 4 bits

A adicao de val ores de 4 bits requer quatro full adders. No en tanto, 0 carry-out do bit #0 deve se propagar para 0 Ci do bit #1. As conex6es sao mostradas na figura 27 .

....----Co

S3

A2 An
S2
B2
-
A1 Bn
81
B1
Ci 2:
,
,


'I Co

8n

80

Figura 27 - Somador 4 bits (esquema e simbol.ogia).

5.4 w SomadorlSubtrator 4wbits

Como visto anteriormente, 0 metoda complemento de 2 de representacao de nurneros negativos aparece como subtracao por adig30, isto e, A - B = A + (-B). Com algumas portas extras e possivel expandir 0 somador de 4 bits da figura 27 em urn somadorl subtrator. Uma entrada de contrale seleciona entre instrucoes de soma ou subtracao, Portas EXOR fornecem recursos para isto, como ilustrado na figura 28.

Entrada de

B(+)O=B B(+) 1= B B~B

L..... _

Figura 28 - Portas EXOFI com entradas de controle (simbologia e equacao boolean a).

................................................................................ ~.?fJ!.~~g_9.'!:.~!~~~[.?~~! ~f.:

A entrada de controle aparece como uma varievel de entrada que permite passar 0 sinal ou o seu inverso. Isso e predsamente 0 que queremos para um somador/subtrator. Para a adkao, a entrada nao deve ser mudada (B (+) 0 = B} e para a subtracao, 0 fator B deve ser transformado em complemento de 2. As portas EXOR transformam 0 fator B em complemento de 1 (B (+) 1 = B) eo + 1 final e obtido por meio do carry in do bit #0.0 esquema completo e mostrado na figura 29.

Figura 29 - Somador subtrator de 4 bits.

A entrada de controle e apropriadamente chamada de ADD/SUBTRACT para tornar implfcita sua operacao. Quando ADD/SUBTRACT = 0, Ci = 0 e B atravessa as portas EXOR inalterado, e feila entao a operacao A + B. Quando ADD/SUBTRACT = 1, Ci = 1 e cada bit de Be invertido, entao a operacao e subtracao (A + (-B}).

Antes de prosseguir, ha pequenos conceitos que devem ser apresentados agora. N6s pademos pensar na entrada de controle da figura 29 como uma palavra de instrucao de 1 bit, selecionando 1 de 21 = 2 lnstrucoes, Uma palavra de instruc;:ao de 2 bits poderia selecionar 1 de 22 = 4 insirucoes, e assim par diante.

Pensando nisso, a 16gica na figura 29 A paderia expandir par varias lnsnucoes (multiplicar, dividir, incrernentar, OR, AND, etc.). Um circuito que efetua isto e charnado de Unidade logica e Aritmetica (UlA). Se uma B ULA implementa n instruc;:6es, 0 c6digo de instrugao deve ser logzn bits. Par exemplo, urn microprocessador com 256 instrugoes requer IOg2256 = 8 bits para seu c6digo de nstrucao, Uma ULA generica e rnostrada na figura 30.

A

entrada de contrale: 0= soma 1 = subtrai

B

ADDI SUBTRACT

Ci

t--- Co

1---- Resultado

Resultado

C6d90 de Instrucao

Figura 30 - ULA generica.

· .44., Microcontrolador 8051 Detalhado

,~ .. '~~~.~~ .. ~""."""""'.""""""""""'" .

Uma das opsracoes loqicas mais comuns e a selecao de uma de 2n escolhas dada em um codigo blnarlo de n bits. Um circuito logico combinacional que efetua esta fun~ao e chamado de Decodificador (decoder), isto e, um decodificador de n entradas e 2n safdas. A ideia e que a entrada representa um endereco e uma safda correspondente ativa, ou seleciona aquele endereco, enquanto as outras safdas nao sao selecionadas, ou ativadas.

Para 0 caso de n = 1, 0 decodificador tem uma entrada e 21 = 2 safdas. 0 circuito e Tabela-verdade sao ilustracos na figura 31.

A

5.5 ~ Oecodificadores

+--+----01 +----02

Figura 31 - Decodificador 1 linha para duas.

Para n = 2,0 decodificador tem 2 entradas e 22=4 safdas (veja figura 32).

A1 A2
A1 A2 03 02 01 00
o 0 0 0 0 1
0 1 0 0 1 0
1 0 0 1 0 0
1 1 1 0 0 0 03

02

01

DO

Figura 32 - Decodificador 2 linhas para 4linhas (2x4).

................................................................................ ~.?q!.~~.g~.'!'.~!.'!.~~!~.~~! .4:f·

Um exemplo de decodificador 3 x 8 e 0 74LS138 que e caracterizado por ter safda ativa em nfvel baixo e tres entradas de habilitacao, Ele e mostrado na figura 33.

74LS138

Y7

c
Ys
8
Ys

A
Y4
T3

G1 Y2
G2A -
Y1
G28 Yo Entrada de Ender~s

Said as Decodificadas

Entrada de Habilita9ao

G1 G2A G28 C 8 A VO V1 V2 V3 V4 V5 V6 V7
0 X X X X X 1 1 1 1 1 1 1 1
X 1 X X X X 1 1 1 1 1 1 1 1
X X 1 X X X 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 0 1 1 0 1 1 1 1 1 1
1 0 0 0 1 0 1 1 0 1 1 1 1 1
1 0 0 0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1 0 1 1 1
1 0 0 1 0 1 1 1 1 1 1 0 1 1
1 0 0 1 1 0 1 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 1 1 1 1 0 Figura 33 . Decodificador 3 x 8 74LS138 (simbologia e tabela-verdade).

As tres primeiras colunas da tabela-verdade (figura 33) ilustram a tuncao de habilitacao, Se uma das tres entradas de habilitayao estiver inativa, 0 dispositivo e desabilitado e todas as safdas estsrao inativas (nfvel logieo 1). Se as tres entradas estiverem ativas (oito ulfirnas colunas da tabela-verdade), entao 0 dispositivo opera como especificado. Os tres enderecos de ennada- C, B, A - determinam que safda sera ativa. As outras sete safdas estarao inativas.

Decodificagao par c6digo de operaeao (opcode) dentro de uma CPU. Ha numerosas aptcacoes para os decodificadores. Se um computador tiver uma palavra de instruyao de n bits, entao um decodificador n x 2n e necessaria para identificar a instrucao determinada. Isso e ilustrado na figura 34 para um eamputadar bipotetico de 8 bits.



l!' ;'~.~). .!

:, .. ~~.:.~ ¥.i?~~.??~.t!.~!~.~~!..~.q,~.! . .'?.~t~.~~~.~o. .

Figura 34 • Decodifica~ao de lnstrucao,

Para cada c6digo de insnucao, uma salda do decodificador fica ativa. As saidas decodificadas conectam se aULA, causando a instruyao 16gica selecionada dentro da ULA.

Decodificagao de Enderegos. Usualmente, a decodficacao de um c6digo de

instruyao ocorre dentro de urn circuito interno ao microprocessador, ou outra unidade de processarnento. Um exemplo em que os Cis decodificadores, como 0 74LS138, sao frequenternente utilizados e na interlace de mem6rias para microprocessadores. A figura 35 ilustra uma comum aplicacao de decodificadores. Nela, a interface e mostrada entre duas RAMs em uma tlpica CPU de 8 bits.

C6digo de Instru9i\o 8 bits

decodificador 8 x 256

o

adicao

subtraeao

2

incrementa

etc.

255

barra de dados 8 bits

CPU

AO-A13

74LS139

para outros disposilivus

Figura 35· Interface entre RAM e uma CPU.

~ .. '~~'1f1i

" ~.?f!!.q.~.~?'!1.~!n.~?!9.0.~! ~~!~

I Cnnectacc ao I decodificador I

Iconectado as I RAMs I

Figura 36 - Composi9ao de endereco para exemplo de decodificador.

A faixa de enderecos selecionados por cada sa fda do decodificador e identificada pel a tabela 20,

Entradas do Decodificador Endereeo
Saida Ativa Endere90 Binario
A15 A14 Hexadecimal
0 0 a OOxx xxxx xxxx xxxx 0000 - 3FFF
0 1 1 Oixx xxxx xxxx xxxx 4000 - 7FFF
1 0 2 1 Oxx xxxx xxxx xxx x 8000 - BFFF
1 1 , 3 11 xx xxxx xxxx xxxx COOO - FFFF
Tabela 20 - Faixa de Endere90s para saida do decodlficador Qualquer cicio de leitura ou cicio de escrita de mem6ria para 0 sndereco na faixa 000016 para 3FFF16 acessara a RAM da esquerda na figura 35 (selecionada pela safda 0 do decodificador), Similarmente, a RAM da direlta e selecionada apenas quando a CPU acessa um enderego na faixa 400016 ao 7FFF16.

o sinal de contra Ie da CPU, E (enable), e um clock sincronizado que se conecta (via uma porta inversora) a entrada ativa em baixa do decodificador. Esse sinal de controle e apenas ativado pela CPU quando um endersco estavel e valldo esta na barra de enderecos, fazendo com que evite enderacamentos err6neos quando sao mudados (na translcao),

;J~k 0i?:~.??~.t!.~!~.c!.~!..~.~?'.U?~!~.!h.~9.9. .

Log ica Seq iiencia I

Um circuito 16gico, cuja operacao e determinada por um pulso de clock de sincronismo, e chamado de circuito 16gico sequencial. A operacao de um circuito sequenclal e descrita par uma tabela de funcoes (oposto a tabela-verdade). Como realizado com 16gica combinacional, nosso tratamento da 16gica sequencial a simplificado. 0 objetivo a familiarizar-se com conceitos baslcos de 16gica sequencia!

S~Q Ua

R~Q R Q

S R Q Q
0 0 nao muda
0 1 0 1
1 0 1 0
1 1 nao permite 6.1 - Flip Flops

Uma celula 16gica capaz de manter um estado ap6s rnudancas na entrada a chamado de "flip flop" au "latch". Como 0 estado mantido e como se fosse gravado, um flip flop e tambern uma celula de mem6ria.

Ha muitas variedades de flip flops, a mais basica existente 0 flip flop RS (veja figura 37).

Figura 37 - Flip flop RS (circuito, simbologia e tabela de funcoes),

o flip flop RS tem duas entradas - S para Set e R para Reset - e duas safdas - Q e seu complemento Q. A frase "0 flip flop e setado" implica que Q = 1. Analogamente, a Irase "0 flip flope resetado" implica que Q = O. Par definicao, Q e 6 sao complementos urn do outro. 0 estado usual de S eRe inativo, ou O. Quando S e ativado (1), 0 flip flop e setado. Quando S retorna ao estado inativo (0), 0 flip flop perrnanece setado. Esta e a caracterfstica principal de um flip flop: a capacidade de lembrar, ou manter, seu estado. Quando R e ativado (1), 0 flip flop sera resetado. Ele permanecera em reset apes R retornar para 0 estado inativo, ate que a entrada S seja ativada novamente. A condcao S = R = 1 nao e permitida porque ambas safdas Q e Q serao setadas.

A cxplicacao acima e extremamente breve, no entanto e suficiente para entender a operacao do flip flop RS.

................................................................................... ~~.Q!·~~ .. ~.e.qP.e.0~!~.! ~~~,'.:.

Q1

Outro importante tipo de flip flop 8 a D (veja figura 38).

dad4jO

o Q

clock

0 elK Q
0 +- 0
1 +- 1
x 0,1+ nao muda Figura 38 - Flip flop tipo D (simbologia e tabela de funcoes),

o simbolo "seta para cima" representa uma transicao O-para-1, ou borda positiva, ou borda de subida na entrada de clock, enquanto a "seta para baixo" representa uma transicao de t-para-o, au borda negativa, ou borda de descida. 0 trHlngu!o na entrada de clock implica que ele 8 ativo na borda de subida (Se uma circunlerencia aparecer na entrada do clock, implica em clock alive em borda de descida.). Note que para a estado estavel 0 au 1 na entrada de clock, a saida Q nao muda. Para interpretarmos a tabela, consideremos a seguinte exemplo: se 0 = 0, quando ocorre uma rnudanca de a para 1 na entrada de clock, teremos a em 0, isto 8, 0 dado em D e transferido para Q na transicao positiva.

6.2 . Registradores

Urn dos usos mais comuns do flip flop - particularmente do tipo D - e manter um valor de dado. Se um valor de dado e um byte, entao 8 flip flops tipo D serao necessaries. Para que a valor de dado seja armazenado em uma unica operacao simples, apenas um clock e necessaria. Isto e ilustrado na figura 39.

Q3

02

QO

clock Figura 39 - Registrador 4 bits.

~~:§9..;; J~~~~9E~~.~~?/~.~?:..~.q,?~.P~!~i~~.~?. ..

Um exemplo comum de latch e 0 octal 74LS374 com safda three-state (veja figura 40).

D7 0

l>
~ Q
't,...
r---
06 0

l> -

0 ,..

05 D

[>
~ Q
't

D
04
l>
r---"I- Q
'1-

03 0

l>
r---"I- 0
,..


02 0
~
Q
,...

01 0

[>
Q
,..

00 D

C>
Q
I'
Clock

output enable

Figura 40 - Latch octal 74LS374 com saidas three-states.

07

06

05

04

03

02

Q1

00

.............................................................. p.!~P..~~!!!~~.s..~~.¥..~'!!9.~[~ .. ?.~'!!!.~.~~~u.t~.c~~ §J: ..

}-----t S

Data out

Dispositivos de Memoria Semicondutores

o flip flop e urn elemento basico em dispositivos de memoria semicondutores. A figura 41 mostra uma celua de memoria feita de urn flip flop RS.

Row select

}-----i R

ReadfWri\e

Row Read! Data Q Data Funyao
select Write in out
0 , x x x 0 n seleciona
1 0 11r )0 0 escrita
1 1 x 11~ leilura Figura 41 - Celula de memoria de urn flip flop RS (esquema e tabela de funcees),

Poucas portas extras sao adicionadas para selecao, escrita e leitura da celula .. Cada uma das tres funyoes da celula e descrita em seguida:

Seleciona.: Quando Row Select e manti do em baixo, as safdas das AND sao travadas em O. Isso previne que 0 latch comece "setado" ou "resetado". Assim, dados nao podem ser

D3

02

01

DO

52 Microcontrolador 8051 Detalhado

.......... .- " " .

escritos no latch. No caso, quando temos nfvel zero em Row Select, rnantem-se a sa fda (Data Out) em O. Dados nao podem ser lidos do latch.

Escrita: Assumindo que a celula esta selecionada (Row Select = 1): se read/write = 0, um cicio de escrita sera realizado. a valor no "Data In" (1/0) estara presente como um nfvel alto em S (Data In = 1) ou em R (Data In = 0), e entao 0 latch e "setado" ou "resetado". Isso faz tarnbem com que a salda (Data Out) perrnaneca em O.

Leitura: Assumindo que a celula esta selecionada (Row Select = 1), se read/write = 1, um ciclo de leitura sera realizado. 0 estado invertido de read/write faz com que S = R = 0, assim 0 estado do latch nao muda. No entanto, habilita a porta AND conectada a Data out, fazendo com que 0 estado de Q passe para a salda,

7.1 - RAM

Urn circuito integrado de memoria, contendo celulas similares ao que foi visto na figura 41, e chamado de Static RAM (SRAM) ou RAM estatica, sendo que RAM significa Random Access Memory (Memoria de Acesso Aleatoric). RAMs contem centenas, ate milhares de celulas, 0 mecanismo para a combinacao de celulas em um CI RAM e mostrado na figura 42 para uma RAM estatlca de 16 bits.

3

A1

2

AD

SELECT

decoder 2x4

o

RNJ------ .......

03 Figura 42 - RAM estatlca,

Q2

Q1

QO

+5 VOLTS

............................................................. ~!~p..?~!!!~9.~.~.~.¥..~~.~:!~ .. §.~~.~~.?~.?~!9.C~~ §#:~C.i

Urn outro importante tipo de dispositivo de mem6ria semicondutor e a Read Only Memory (ROM), ou mem6ria apenas de leitura. Sendo opostas as RAMs, as ROMs sao escritas apenas uma vez e podem apenas ser lidas. Ha muitas variedades de ROM, dilerenciando·se pela forma como sao escritas ou se podem ser apagadas ou nao, podendo ainda ser reescritas ou nao, Uma ROM mascarada de fabrica e construida com uma mascara especial permanentemente, que coloca 0 ou 1 em cada celula, Uma Programmable ROM (PROM), ou ROM proqrarnavel, e proqramavel pelo usuario por meio de urn hardware especial.

Mais uma vez vemos um decodificador em uma funyao muito importante: selecao de colunas das celu!as RAM. E claro, a RAM de 16 bits nao e muito grande. A estrutura da celula da RAM da ligura 42 estende-se facilmente para RAMs muito maiores. Par exemplo, a SRAM 6264 contern 8 Kbyles de RAM (um total de 8 x 210 X 8 = 65.536 celulas). 0 simbolo para este CI e mostrado na ligura43.

Outro tipo comum de RAM e a Dynamic RAM (DRAM) ou RAM dinamlca Em uma DRAM, cada celula e urn capacitor que armazena 1 ou 0 (com carga ou sem carga). Apenas um transistor e necessaria para fornecer acesso a celula, assim DRAMs sao muito densas comparadas com as SRAMs que requerem quatro ou cinco transistores por celula. As DRAMs requerem circuito externo para "refresh" (recarga) dos capacitores periodicamente, para prevenir perda de dados. DRAMS sao mais baratas que as SRAMs; no entanto, sao mais dificeis de manipular devido a necessidade deste circuito externo. Gera!mente SRAMs sao utilizadas para aplicayoes de centenas de Kilobytes ou menos. DRAMs sao utilizadas quando se requer megabytes.

7.2· ROM

26,28
Vee
2 A12
23 19
A11 07
21 A10 18
06
24 A9 17
05
25 16
AS 04
3 15
A7 03
4 A6 13
02
5 12
AS RAM 01
6 11
A4 6264 DO
7 A3
8 A2
9 A1
10 AO

20 CE

22 OE

27 W
GNO
1J_ Figura 43 • Hepresentacao esquematica da RAM 6264 - 8 Kbytes.

1::§4. ~!~:~.~?~.t!.~!~.~~!..~.~~.~ .. '?~!~.!~~~?. ..

Existem variacoes que permitem 0 apagamento de dados, expondo 0 dispositivo a luz ultravioleta (Erasable PROM, EPROM, PROM apaqavel), ou por um cicio especial de apagamento eletricc (Electrically Erasable PROM, EEPROM, E2PROM, PROM "apaqavel'' eletricamente). EPROMs sao particularmente populares, pois podem ser reutilizadas, sao baratas e Iaceis de programar.

EPROMs (e outras ROMs) sao mais comumente utilizadas para armazenar programas que devem ser acessados frequentemente em sistemas computadorizados. Estes incluem, por exemplo, sub-rotinas de entrada e salda, ou 0 carregador de "bootstrap" que carrega a primeira trilha do disco para a RAM. 0 uso de uma EPROM e essencial porque 0 programa de bootstrap deve estar presente na memoria quando 0 sistema e Iigado. Obviamente, RAMs nao podem servir para este prcposlto, pois elas sao volateis e perdem seus conteudos quando desligadas. 0 termo "firmware" se refere ao software armazenado em uma EPROM (ou ROM).

Uma das mais populares ROMs e a EPROM 2764A - SK x S. 0 sfrnbolo e dado na figura 44.

+5 VOLTS

28
Vee I
2 A12

23 19
A11 07
21 A1D 18
06
24 17
A9 05
25 16
A8 D4
3 15
A7 03
4 A6 13
D2
5 A5 12
EPROM D1
6 11
A4 2764A DO
7 A3
8 A2
9 26
A1
10 AD

22 PGM 27
CE
1
20 OE Vpp

GND
1i ne

Figura 44 -Bepresentacao esquematlcaEPROM 2764A - 8 Kbytes.

............................................................................ , .!?? ,

Parte II

o Microcontrolodor 80S1

...................................................................... gg_~~.~ .. ~T .. 0.i.~.~?P..~?~~~~~.~?!.?. 3:.~i:~

o que e urn Microprocessador?

1.1- Explica~ao Intuitiva: Fazendo urn Bolo

Suponhamos que vamos confeccionar um bolo, utilizando urn livro de receitas que tern

impressa a rotina de fazer um "Bolo de Chocolate".

Como acessamos a receita do livro? De que se comp6e uma receita?

Indo a paglna correspondente ao titulo "Bolo de Chocolate", encontra-se a receita eqUivalente a um "software" de construcao do bolo, que esta gravada na paqina "XYZ" do livro de receitas. Note que, na pagina, eu 56 leio; nao escrevo nada la. E a nossa futura "ROM" Read Only Memory, Memoria Apenas de Leitura.

Vejamos a nossa paqina XYZ ilustrada na figura 1.1.a.

Livro de receitas:

BOLO DE CHOCOLATE

PGXYZ

Ingredientes: (para 1 kg de bolo) = 1 kg 2 - xicaras de farinha

1 - xicara de acucar

Conleccao:

Cobertura de Chocolate: (vide Pag. "ABC") *

• A cobertura de Chocolate esta escrita em outras paqinas, pols varies receitas a utilizam, a qual so se escreve uma vet (isto e uma sub-retina do software).

Figura 1.1.a· Pagina de uma receita de bolo.

:.:.~~.~:~ ¥.!c.~~.c.?~_t:.~!~.~~!..~.~?~.p.~t.~.!~~9.?. .

Note que na pagina"XYZ", no item correspondente a "Cobertura de Chocolate", pede-se para acessar outra papina do livro, pois essa "cobertura" serve para outra receitas e se organiza para que seja escrita uma so vez no livro.

Como proceder?

Deve-se ir a nova paqina "ABC" do livro e realizar 0 trabalho desta paoina.

Apos 0 termino desle, volta-se a paqina "XYZ", original. lsto e equivalente a uma cham ada de sub-retina em software, sua execucao e volta ao local de onde se partiu (retorno de uma sub-rotina).

Oaf, continua-se a executar 0 resto da conteccao do bolo.

Isla tarnbern e 0 que um microprocessador ira fazer, so que em um mundo mais limitado que 0 mundo da cozinha.

Note ainda, no desenho da paqina "XYZ", que existe 0 item 1, ingredientes que representam as quantidades de elementos necessaries a conteccao do bolo, no caso, um bolo de 1 Kg.

Se voce quiser fazer 2 Kg de bolo, deve usar uma "folha de rascunho" (que e a "RAM" do microprocessador, Random Access Memory, Memoria de Rascunho). E a memoria ternporaria, utilizada para calculos, e depois posso me desfazer do seu conteudo, ou seja, jogar a folha fora. Isto nao e escrito na folha do livro de receitas (ROM) e eu tambern nao devo anotar nada adicional nesta, pois a receita e geral, e 0 tamanho especffico do bolo eu calculo no rascunho, depois jogo os calculos fora, pois sao terncorarios (memoria volatil).

Este e 0 mundo do microprocessador: a cozinheiro e 0 microprocessador.

o livro de receitas e a ROM com software fixe de conteccao e suas sub-retinas.

o rascunho e para calculo de proporcoes do bolo, que e a RAM.

o cozinheiro obedece ao que esta escrito no livro (Isto nem sempre e verdade com cozinheiros experientes.) que e a ROM.

Uma sub-retina e um "desvio" a ser feito pelo cozinheiro, no software principal, para executar algumas sub-retinas. No programa principal, encontrarn-se a instrucao do desvio e a paqina do desvio (pag. "ABC").

a material, 0 cozinheiro, 0 livro e as folhas de rascunho sao 0 "hardware" do sistema. o que esta escrito no livro e no rascunho fazem parte do software do sistema.

A interpretacao do software e execucao das instrucoes sao reallzadas pelo "Microprocessa dor-Cozinheiro".

Qual e uma dilerenca sutil e importante entre 0 microprocessador e 0 cozinheiro e suas anotacoes?

o que e um Microprocessador? I'I9!P

................................................... , u u ......................•..•..•.•• ~~f~

E que 0 microprocessador, par ser uma rnaquina limitada, nao atende ao rico vccabuarlo do ser humane cozinheiro que, alem de rico, 8 sofisticado, impreciso e de rnultipla nterpretacao, que so uma "rnaquina inteligente" como 0 homem entende (por exemplo, para 0 homem as seguinte palavras sao equivalentes: fazer ;::: realizar ;::: trabalhar. Para 0 microprocessador, 0 vocabulario e reduzido e especffico; nao existem adjetivos, sinonirnos, etc.).

o microprocessador s6 entende algumas lnstrucoes baslcas e se voce quiser que ele faga alguma coisa, voce, ser humano, tern que estudar e campreender precisamente a sua linguagem e limitar-se a ela para fazer a maquina trabalhar. Este e 0 ASSEMBLER do microprocessador, 8 0 seu conjunto de instrucoes. Vide figura 1.1.b para ilustrar urn "paralelo hipotetico" entre 0 microprocessador e suas atividades e 0 cozinheiro e suas atividades.

as

PgABC= Sub-Retina

~J FOLHA DE I
LEIO t ·1 RASCUNHO
ESCREVO I
I

C I
0
INGREolENTES Z I
I Livro
+ N ~
H S6 de Receit
UTENSiL/oS E Leio I
I
R I (Linguagem co
a I Pg XYZ = RECEITA

HARDWARE

SOFTWARE

WRlTJ I .1 I
RAM
! I I (DADOS)

M
I
C
R
PERIFER/COS' a ROM
P
R
TECLAoO 0 (Programa de
C
DISPLAY 1/0 E READ' linguagem
ETC. INPUT S ONLY ~ especifica)
OUTPUT S I
A
D I
0
R I READ

HARDWARE

SOFTWARE

Figura 1.1.h - Cornparacao entre a estrutura de confeceao de urn bolo eo trabalho de urn rnicroprocessador.

1.2 - 0 que e urn Microprocessador - Explica9ao Tecnlca

~ .. ~!r.~ ¥~~~?:??~.~C?!~.~?r..~.~?!.p.e.!.~.~~~1.?. .

Um microprocessador e urn elemento elelronico, desenvolvido para executar tarefas especificas, com linguagern de comando especffica. Ele se utiliza de uma Memoria de Programa (Code Memory - ROM) para "ler" as instrucoes que deve executar e se utiliza de uma Memoria de Dados (Data Memory - RAM) para armazenar ternporariamente informagoes de uso proprio das instrucees, enquanto essas ntormacces devem ser armazenadas.

o seu proposito e executar tarela especifica gravada em sua memoria de codigo, a "ROM", e em geral se comunica com 0 mundo real para sentir intormacoes do meio ambiente e tambern para atuar nele. Como, por exemplo, poder 'ler' uma tecla de um teclado, acender uma larnpada, "escrever' em uma impressora, "comunicar-se" com um "PC", ligar/desligar motores, etc.

Programa-se a ROM com codigos compativeis com a linguagem do microprocessador para executar uma tarefa ou grupos de tarefas criadas pelo projetista. 0 projetista deve entender perfeitamente 0 conjunto de instrucoes da rnaquina (assembler) e sua estrutura fisica, e de interfaces, conhecido como hardware. Ele deve ter um propos ito bem-definido a desempenhar na maquina, e se possivel, criar um "algoritmo" ou uma receita de procedimentos que deseja para, em seguida, transtorma-la em linguagem de rnaquina (assembler).

Seja considerada a arquitetura seguinte:

Na figura 1.2, vemos a ilustracao simplificada de um microprocessador com CPU (Central Processing Unit) e seus elementos basicos associados: RAM, ROM, perifericos e fonte de alirnentacao,

ALiMENTACAo ELETRICA (DC)

Controle uxiliar

RAM

Peritsricos (Teclados, displays, reles, motor, etc.)

Bidirecional

"BUS" DE DADOS

MUNDO INTERIOR DO MICROPROCESSADOR (MP)

MUNDO EXTERIOR DO (MP)

INTERRUPC;6ES

Figura 1.2 - Arquitetura Basica do Microprocessador.

..................................................................... ..c?q_~e..~.~:!!..¥.!.~~~P~~.~e.~~~.~~!.?. ~.~T~~·

Note que 0 Mp (microprocess ad or au CPU) tern vias (Bus = Barramento) de controle de enderecos, de cornunicacao de dados, de controle auxiliar e de 1/0 (InpuVOutput).

+ Vias de controle de enderecos: Servem para 0 Mp selecionar com qual posiy8.o de mem6ria ou peritericos deseja se comunicar.

+ Vias de controle auxiliar: Sao sinais de controle que permitem ao Mp acionar, por exemplo, em um certo tempo, a ROM e nao a RAM, e vice-versa. Note que as vias de dados e de enderecos "andam" em paralelo e temos duas rnernorias envolvidas, a RAM e a ROM. Como separar uma mem6ria da outra, jii que a cornunicacao esta ligada em ambas? Pelas vias de controle auxiliar e possfvel, par exemplo, "Iigar" a ROM e deixar "desJigada" a RAM, e vice-versa, quando se desejar falar com uma delas.

+ Vias de "I/O" (Input/Output ou EntradalSaida): Sao vias que permitem abrir cornunicacao com 0 "mundo exterior", a fim de trocar intorrnacoes com ele. Como "mundo exterior", entends-se qualquer elemento eletroeletr6nico que seja senslvel ao mundo Hsico e/ou atue nele; sao numerosas e especiaJizadas como: teclados, displays, videos, impressoras, motores, modems, mouses, alarmes, larnpadas, pist6es, etc. (c1assifique-os como entrada au saida como exercfcio de cornpreensao) .

+ CPU: e a pastilha do micraprocessadar, 0 "cerebra" do Sistema, e tem competencia para acionar e se comunicar com todas as vias supracitadas, s6 que sempre seguindo ou obedecendo as diretivas gravadas na ROM. Ela nao e lao misteriasa quanta parece, como veremos em seguida.

Ela continuamente realiza fungoes de busca de uma lnstrucao na ROM, e execueao dessa lnstrucao demro da CPU que tern, internamente, capacidade de executar tuneoes logicas (E (AND), au (OR), NOT, EXOR ... ) e funcoes arltrneticas (Somar, Dividir, Multiplicar ... ), funyoes de transterencia de dados internamente e/ou externamente e funcoes de comparayao de dados com consequents declsao (ou sem decisao) apes estas comparacoes.

Ela s6 entende C6digo Bimirio, mas 0 programador pode entender este codigo em Octal, Hexadecimal, Decimal e por Nomes Simb6licos, que representem uma instrucao, par exemplo: "add" = "Soma" = C6digo Hexa 24 ou 00100100 em Binario (no exemplo, add = add A, #data), para 0 microprocessador 8051 .. A CPU so entende dlgitos binaries, mas nos a memorizamos par "add", que e mais facil de lembrar. Um software no "PC" ira transfarmar este "add" em 00100100, quando gravarmos a ROM.

+ Oscilador: E 0 elemento que gera 0 "marcapasso" da CPU, que permite que 0 microprocessador realize as suas tarefas internas e externas de maneira sincronizada e com velocidade predeterminada.

+ Reset: E 0 elemento que faz a CPU iniciar suas rotinas internas e realizar tarnbern a primeira leitura de instruyao no endereco OOOOh.

+ lnterrupcces: Sao pinos de acesso externo que permitem interromper 0 microprocessador, que entao interrompe suas tarefas atuais e atende aquelas planejadas pela interrupcao solicitada.

¢;' >

62'; Microcontra/ador 8051 Deta/hado

_" •• , ~ ••••••••••••••••••••••••••••••••••••••••• 0 •• ',. 0 0 •• 0 •• 0 •• 0 • .. • .. ··., ••••••• 0., 0 0 0 0

1.3 - A CPU Internamente

REGIS TRADORES

CPU


Acumulador
ACC
,
I
,
,
, (MEM6RIA vOLATIL)

UNIDADE DE CONTRQLE

(PC) Via de Enderecos I 'SARRAMENTO'

N --t .... - ------ .... ------------------i (ADDRESS SUS)

Program Counter , Via de dados

(Contadorde programa) , ------ ... ------- : (DATA BUS)

: I

, ,

, ,

, I

, I

• I , ,

Figura 1.3 - llustracao da CPU em um cicio de busca de instrut;ao (na ROM),

Na figura 1.3, mostra-se uma ilustragao simples da essencia interna de trabalho da CPU. Notam-se algumas funcoes de importancia:

Registradores: Sao equivalentes a uma RAM, so que interna a CPU. Servem para armazenamento temporario de mtormacoes de utilidade interna ou externa a CPU. Existem registradores com tuncao definida: por exemplo, aquele que e imagem ou espelho de uma porta de "1/0", 0 sinal na porta de 110 pode ser lido diretamente no registrador equivalente; por exemplo, a porta "PO" tem urn registrador imagem de "PO", cujo conteudo e 0 retlexo do que ha na entrada ffsica dessa porta. Existem Registradores de FunyEIO Geral, que podem ser acessados pelas instruyoes do Mp e ainda podem ser conhecidos por nomes (registrador RO, R1, etc.) ou sem nomes (registrador 20h, 21 h, etc.).

Contador de Programa (Program Counter ou PC): E 0 indicador de endereco de memoria externa. Ele serve para enderecar a pr6xima lnstrucao a ser Iida pelo Mp, a fim de que ela "saiba" onde estava e para onde deve ir (Ier nova instrugao no pr6ximo endereco).

Registrador de lnstrucao (Instruction Register ou IR): Eo local para onde se dirige 0 c6digo da instrucao que foi retirada da ROM por meio do endereco dado pelo PC no cicio de busca (fetch) da instruyao da mem6ria. 0 IR e necessano para que, depois da busca, um decodificador possa decodificar, "abrir" a instrug8.o e envia-la a unidade de processamento (ALU - Aritmetic Logic Unit), a fim de que, neste local, ela seja "executada".

Unidade de Decoditicacao (Decode Unit); E 0 local em que a lnstrucao e decodificada, e tarnbern sao gerados os controles que, junto com a Unidade de Controle, permitem executar a instrucao na ALU.

: DADO :END

... ROM ...

I '

lt~i

n-1~ XXXXXh~OPCODE

,

: UNIDADEDE

• ----- DECODIFICACAo

DA INSTRUCAo

, UNIOADE I

LOGICAE I

ARITIMETICA

(ALUI

CONTROLE

...................................................................... gH~~.~ .. ~~ .. ~!.~!.~P..~9.~~~~~~~!.? ~~I~

Unidade Logica e Aritmetlca (ALU, Arithmetic Logic Unit): E 0 local em que sao realizadas as operacoes de: 16gica, antmetica e declsaorcomparacao. E 0 "cerebro" da maquina.

Acumulador (Accumulator): E um registrador principal e muito "popular", pois varias inslrucoes se referem a ele para operar.

Unidade de Contrale (Control Unit): E 0 local em que se processa 0 controle do fluxo das inlormac;:oes a lim de realizar a instruc;:ao recebida.

Exemplo de funcionamento: Suponha que 0 MP foi ler uma instrucao na ROM. as seguinles passos serao dados. Vide ligura 1.3 para acompanhar.

1. 0 endereco de PC e posto na via de enderecos (que e 0 endereco desta pr6xima instrucao a ser lida).

2. 0 sinal de controle da ROM e ativado (pols vamos ler a ROM e nao a RAM).

3. A instruc;:8.o elida da ROM, no endereco dado pelo PC (no caso, 0 endereco "nil), e

elida pela via de dados. Estes tres itens correspondem ao ciclo de busca ou fetch.

4. A instruyao e carregada e armazenada no IR (Registrador de lnstrucces).

5. 0 PC e incrementado para ler a pr6xima instrucao (apontara para "n+1").

6. Inicia-se outro clclo, 0 de execucao interna da instrucao, auxiliado pela Unidade de Controle e pelos registradores, decodilicado pela Unidade de Decodficacao e executado pela ALU.

(Vide fluxograma desenhado sobre a figura 1.3. para melhor entender esta explicac;:ao).

1.4· 0 8051 BAslCO

Na figura 1.4, ve-se uma ilustracao mais pr6xima da realidade de interliqacao de um microprocessador (microcontrolador no caso).

Note que 0 barramento de enderecos e de 16 bits, em que os 8 bits menos significativos sao derivados junto com os 8 bits de dados. 0 que separa 0 dado do endereco e urn "Latch" que copia a intormacao de endereco, quando este e apresentado em PO. Isto se laz por meio do pino de comando chamado "ALE" (Address Latch Enable). Dizemos que dados e enderecos sao multiplexados pela via PO (misturados fisicamente no mesmo port PO).

Isto e feito para economizar 8 pinos fisicos do microprocessador, tornando-o menor passivel (em geral, 40 pinos no total e se tivesse 8 pinos para "dados" e 8 pinos separados para 'enderecos menos significativos", 0 chip teria 48 pinos).

+

-

T

(CPU)

-vcc

!L~rt, , .. , .. , .. , .. , .. , .. " .. , .. , .. ,M!C.~~.c.?~!!.~!~.~~!..~.o.~.1J?'e.!~.!0.~,~~ , .. , , .. ", .. , , .. ", , ,., , .. , ..

L
A END, LOW
PO (8 Bits) T BBits'"
C
H
ALE
8051
END. HIGH
P2 (8 Bits) {8Bits) ...
PSEN PO=8 PINOS P1 = 8 PINOS P2 = B PINOS

P3 = B PINOS

RD WR TOTAL = 32 PINOS

ALiMENTACAO = 2 PINOS

RESET = 1 PIND

CLOCK = 2 PINOS

ALE = 1 PI NO

PSEN = 1 PI NO

L-,.--:=E::============:_j EA = 1 PINO

TOTAL = 8 PINOS

(40 PINOS) TOTAL GERAL = 40 PINOS

Figura 1.4 - Diagrama de interliga~iio basica do microcontrolador 8051.

Note que os outros 8 bits mais significativos do barramento de enderecos sao dad os por P2, e este e direto, nao e multiplexado como a PO.

Observe que 16 bits de endereco equivalem a 216 = 65536 posicoes diferentes de enderecarnemo de memoria,

Observe que 8 bits de dados representam uma palavra como 28 = 256 cornbinacoes possfveis de dados a serem transmitidas e/ou recebidas.

Note que existe 0 pino de acionamento da ROM ( no caso, uma EPROM) chamado "PSEN", Note que existem pinos de acionamento da RAM, queatribuem a tuncao: "Read" ou "Write", isto 8, "Ieitura" ou "esc rita" de dados na RAM,

Note que "P1" e "P3" (P3 parcial, pois ja usamos parte dele para acionar 0 Read e Write da RAM) sao as portas destinadas a interface com 0 mundo externo, isto e, ler um teclado, escrever em um display, etc, "P1" e "P3" sao tarnbern de 8 bits cada, Eles servirao para realizar os peritericos desejados, 0 port P3 e parcial mente usado pelo microcontrolador quando se utilizam suas funQoes internas, timer e serial, as quais serao detalhadas futurarnente.

Releia agora os itens 1.2, a 1.4, visualizando a figura 1.4, Tire a limpo as duvidas, Entenda bem 0 processo e a funcao dos seus pinos.

P3

DADOS

READ/WRITE

-vcc

RAM

o que e um Mieroproeessador? r[~

........................................................................................ , t ••• ;3ffI

1.5· Qual e a Diferenca entre Microprocessador (Mp) e Microcontrolador (Me)?

Primeiramente, 0 "hardware interno" do chip do microcontrolador (Mc) e diferente, isto e, tern mais fungoes que 0 do microprocessador (Mp).

Vide a figura 1.5, na qual se destacam 0 que existe dentro de um chip tfpicode um microcontrolador e 0 que seria considerando apenas urn microprocessador.

Para melhor entendimento, vale a pena enfatizar que na maioria das aplicacoes utilizando microprocessadores necessita-se, alem do chip do microprocessador, da ROM, do "Latch" (vide figura 1.4.) e da RAM, e de outros chips auxiliares, como "Timers" (que contam 0 tempo) e "Serial" (que taz interface com 0 barramento paralelo do microprocessador e gera uma linha serial de cornunicacao). 0 rnicrocontrolador, tipicamente ja tem estes chips dentro da mesma pastilha do microprocessador. 0 rnicrocontrolador corresponde a urn microprocessador e seus perltericos tiplcos, todos juntos nurn so chip.

CPU

~ _..,/

, '

/{ ROM

, i EXTERNA

,

,

,. RAM

<: EXTERNA

~' -;

! -,

CHIP DE UM ~ I r-:»-> __ uu __ n __ • MICROPROCESSADOR

MICROCONTROLADOR .-' -.- -.- .-. - .,.- .-.- .-. - .-.-. - .-.

, : ! ", ... ROM INTERNA

, ,

I I

,

RESET i

CLOCK:

, ,

INTERRUPT i

_ .... RAM INTERNA

t--____,f----,---- - -- -- -- - -- .

..... :... I ~~_-------

I
I TIMER 1 I
I
I
J TIMER2 ,
I
, I
RECEBE' I I TRANSMITE
I SERIAL I
I
:.. . _. - . _. _. - • _. - . _. - _. - • ~. - • - . _. - .1 Observayao:

o Mp s6 e 0 chip que contem IR, PC, AL U, INT, etc. , como na figura 1.3.

o Me inclui num s6 chip, 0 Mp, timer, serial e "um peda90" de RAM e/ou ROM.

Exislem chips de Mc que tambem englobam uma ROM ou EPROM dentro do chip, en tao nao temos pralicamente nada fora. Esta e uma real utiliza9aO dos recurs os do Me, isto e, um chip s6 com tudo denlro dele.

+ Mp = Microproeessador + Mc = Microcontrolador

~]1§~L ¥.!.~~~.~.9.~!!'9.!~.~~!..~.~?LP~~~.~~~.~9. ..

1.6 - 0 Grupo de lnstrucoes do Microcontrolador

Um microprocessador/microcontrolador tem um grupo de instrucoes que 0 fabricanle criou para ele. Apesar de os fabricantes anunciarem um grupo de instrucoes tfpico de 100 instrugoes, que "assusta" 0 usuarlo, quando elas sao agrupadas, funcionalmente, nao pass am de duas duzias, gra9as a Deus!!!

Subgrupo do SET (conjunto) de instrucces: + Arnmeticas (+, -, 7, x);

+ Logicas (AND, OR, EXOR, ope ran do com byte); + De transterencia de dados (Mover Dado e MOV); + Booleanas (AND, OR, EXOR, operando com bit);

+ De ramincacao (Decisao e/ou Desvio) ex.: (CJMP = "compare" e "jump").

Cada instrucao tem um "simbolo", que e uma palavra cuja funcao e rnemorizada facilmente. Por exemplo:

+ dec A = Decrementa 0 registrador A;

+ cjne A,#data, rel e Compare and Jump if Not Equal (cjne) = (compare e salle se nao for igual).

Observa9ao: 0 sfmbofo # rnostra que "data" e urn valor (um numero).

Esta instrugao tern tres partes: "cjne A", "#data" e "rei".

E uma instruyao que compara 0 conteudo de "A" com 0 valor de "#data". Se eles forem iguais, nao desvia e continua na proxima instrucao, Se nao forem iguais, ele desvia (JUMP) para 0 endereco relativo "rei".

Exemplo: Carrega-se "A" com "5", compara-se com "10" e desvia-se para endereco

"1000", se estes conteudos nao forem iguais:

mov A,#5

cjne A,#10,1000 clr A

1000: mov B,#20

Compara-se 0 conteudo de "A" com 10; se forem iguais, executa a proxima instru9ao que e "clear A"; se forem diferentes, desvia para 0 endereco 1000 em que executara a instrucao: mov 8,#20.

Apesar de, no lnlcio, parecerem "estranhas", nos vamos nos acostumando com elas ate "ficar tacil" de "tala-las". E como aprender outras linguas, que nao a de nossa origem. Dutra coisa importante: Nao e necessarlo memorizar todos os detalhes. Existe a manual do Mp, que da todos os detalhes de cada instrucao (vide anexos no livro). Voce deve saber apenas sua funyao de cabeca, 0 resto voce esludara na hora de utilizar, ate que, com 0 usa continuo, elas se tornem "de cor e salteado".

""""" " .<? .q~~.~ .. ~!!! .. ¥.!q,~?e.~~E~~~~.~?~? ~~t ..

1.7·0 Mundo Exterior - 1/0 e Perifericos

o microprocessador/microcontrolador tem que ser usado para algum prop6sito bem·definido:

Contro/ar um processo industrial, servir de interface entre uma maquina e 0 usueno, controlar um terminal bancario, controlar uma impress ora, um brinquedo, atuar junto com sensa res no sistema de inje9ao de combustfvel de um motor, etc.

Pode-se dividir basicamente em:

+ Perlterlcos de Armazenamento de Massa: Tipicamente um CD-ROM, um winchester, um banco de mem6rias RAM, em que se quer arquivar uma imagem ou um banco de dados de clientes, etc.

+ Interlaces Homem-Maquina: E como 0 homem pode se comunicar com a maquina: teclados, displays altanurnericos, mouses, videos, impressoras, saida de som,

leitora de c6digo de barras, joysticks, light pen, microfones, etc. .

+ Perifericos de Controle: AtuaC;3o e Sensoreamento: E como 0 microprocessador consegue "ver" uma variavel externa e "atuar" em outra: sensores de temperatura, pressao, umidade, vibracao, etc. Sao acondicionados para, por meio de um Conversor Analogico-Digital "AID", poder se comunicar com 0 microprocessador, tornando-se cntao suas variaveis de entrada. Dispositivos de Saida, como: reles, pist6es, solen6ides, sirenes, larnpadas, etc. sao alguns dos exemplos nos quais 0 microprocessador pode atuar no meio externo. Muitas vezes, esses dispositivos de saida necessitam de controle por meio de um sinal anal6gico, e por isso a saida do microprocessador deve, entao, passar por um Conversor Digital-Analogico "D/A" antes de controlar 0 dispositivo. A seguir, ilustra-se urn exemplo hipotetico de interligagao do microcontrolador e alguns peritericos. Vide figura 1.6.

M
I
C MOTOR
R DE
0 (ON/OFF) C.C
C
0
DIGITAL N (ON/OFF)
T
R SIRENE
0
L
(ON/OFF) A
D
..L 0 WINCHESTER (DIGITAL)
CHAVES R
(ON/OFF)
..L
MODEM
SERIAL
(DIGITAL) Figura 1.6 - lIustrayao hipotetlca de urn rnicroprocessador e seus perlfericos,



1.8 - Microcontrolador versus Hardware com Logica Fixa

~., !':1!.c.~~.c.~~t!.~!~.?~!.§.~?Jp.~!-~.(~~.?? ..

Os microprocessadores/microcontroladores tern hoje preco baixfssimo e esta diffcil de eomparar com os custos de eireuitos montados com CI's digitais com 16giea fixa (gates), pois estes gastam mais area de placa de cireuito impresso, diminuem a confiabilidade (quanto maior for 0 numero de soldas e chips, maior a probabilidade de oeorrer falhas) e nao sao flexiveis, como e uma meqclna alteravel por software. Porem, quando se necessita de alta velocidade de resposta, da ordem de nanossegundo para baixo, os chips do microprocessador esbarram em sua limitagao de "clock".

Na familia 8051, com clock de 12 MHz, a instrucao mais rapida consome 1 us (um mierossegundo) para ser exeeutada. Um "GATE" pode exeeutar a mesma funcao em alguns nanossegundos. Portanto, em relacao a velocidade, os microprocessadores perdem. Em tempos compaHveis, da ordem de microssegundos ou mais, 0 microcontrolador e imbativeL Existem chips mieroeontroladores com ROM interna,. por uma fragao de d61ar (por exemplo US$ 0,70). Como se pode eomparar um chip "inteligente e flexfvel" com um "GATE" nestes cas os? Nao da mais para comparar! Por isto, 0 consumo de microcontroladores tem crescimento explosivo e tendencia irreverslvel.

1.9 - Exercfcios de Fixa~ao

1. Toda mem6ria precisa de informagoes de enderecos, de dados e de controls para funcionar adequadamente. Entao, 0 que difere uma RAM de uma ROM?

2. Qual barramento define a capacidade do microcontrolador: dados ou enderecos?

Qual e 0 setor interne ao Mc que realmente define sua capacidade de processamento (8 bits, no caso)?

3. As vias de 1/0 servem para que? De um exemplo pratico: desenhe um diagrama de blocos hipotetico de um caixa autornatico de banco. Que peritericos externos ele deve ter?

4. A Irequencla do oscilador "representa" a velocidade do Mc? Por que?

5. Qual a fungao do reset?

6. De um exemplo de hterrupcao "com prioridade" em um escritorlo: 0 diretor e 0 Office-boy acessam 0 chefe que esta escrevenda uma carta. Descreva a rotina provavsl que 0 chefe realizara por passos, ate a volta ao seu trabalho rotineiro.

7. Como podemos guardar dados basicos de uma rnaquina, por exemplo: seu nome, serie, data, e rnostra-los na tela cada vez que ligarmos a rnacuina?

8. A Unidade L6giea e Aritmetica (ALU) tern que fungao? Quais as cperacoes baskas que ela deve realizar, na sua opiniao?

9. 0 Contador de Programa (PC) tern que funga.a?

10. Qual a dilerenca basics entre microprocessador (Mp) e microcontrolador (Me)?

"'''''''''''''" , , .. , P,g~e..~ .. ~0 .. ¥.!~~~P.~~.~e.?~.~.~~:.? , , , , , .. , .. ~.§~ ..

11. Na realidade, um Mc trabalha com bits. Entao, para que servern os c6digos octal, hexa, ASCII e os mnernonicos que representam as instrucoes do Mc?

12. Quais sao os peritericos internos ao Mc 8051? Em que parte do programa voce os utilizaria se fosse controlar um farol de rua por meio da cornunicacao de um PC com o8051?

13. Qual a vantagem de um Mc com relacao a 16gica fixa?

14. Altere a programa-exemplo do capitulo 1.6, para que el~ realize a cornparacao de A com a nurnero "#25h", Se A for igual a "#25h", vai para endereco "1000h", em que se carrega B com #Oh; se for diferente, carrega A com "#25h".

15. De exemplos prances, do seu dia-a-dia, da chamada "Interface Homem-Maquina", (Lembre-se de: PC, rel6gio, telefone celular, banco, videogame, CD player, televlsao, aparelho de som, etc), Perceba quaisdos seus sentidos cada maquina destas faz interface e que realimentacao ha entre voce e ela.

16. 0 que e um algoritmo? De um exernplo.

17. Qual a diterenca entre a nossa lingupgem natural e a linguagem de um microprocessador? Qual e a mais "precisa"? Qual e a mais "inteligente"?

18. Descreva, por pass os, um ciclo de busca de instrucao de um Mc (fetch cycle).

: . .?9 L ¥J~~9E9.~!!.9!~.?9!..~P.?~.g~~~.!~~.~?. ..

2.0 - Introdu~ao

o Que e a Familia 8051?

No infcio da decada de 80, a INTEL, que ja tinha criado 0 microcontrolador 8048, lancou uma nova familia, herdeira do 8048, intitulada 8051, de "8 Bits".

Inicialmente ela lancou 0 "8051" com ROM interna proqramavel de fabric a, 0 "8751" com EPROM interna proqrarnavel pelo usuario e 0 "8031" com necessidade de ter "chips" de EPROM externa. Ap6s alguns anos, a familia se expandiu para 0 "8052", que tem um timer a mais que 0 8051 e suas variacces: com EPROM (8752) e sem ROM/EPROM (8032), e uma versao especial do 8052, chamado 8052. - Basic, que tem dentro de sua ROM um interpretador Basic que permite prograrna-lo tarnbem em lingua gem Basic. Esta e a familia cham ada MCS-S1. Outros fabricantes tern autorizacao de tabrica-lo, como a Siemens, Advanced Microcontroller Device, Fujitsu, Philips e Oki.

Tipicamente a 8051, como representante basico de familia, contern internamente:

+ RAM interna de usa geral de 128 bytes e 128 bytes correspondentes aos

registradores especiais;

+ ROM interna de 4 Kbytes; + 4 Ports de I/O;

+ 2 Timers de 16 bits; + 1 Interface serial;

+ Capacidade de 64 Kbytes de enderecarnento externo de ROM; + Capacidade de 64 Kbytes de enderecamento externo de RAM; + Processador "Booleano" (opera com bits);

+ Ciclos tfpicos de iostrucao de 1 e 2 !J.S a 12 MHz; + lnstrucao direta de divisao e muhiplicacao:

+ Entradas de lnterrupcao externa.

o que e a Famflia 8051? I'Z'P

............................................................................... , ~- .. "".:t~R

Hoje, alern destes ja citados, existem vers6es que ja incorporam ao chip um NO e safda do tipo "PWM" (como 0 80C550 - da Philips, que tem NO de 8 entradas, e 0 80C552 que tem ND de 10 bits e safda "PWM"). Tudo em um so chip!

Observe 0 "C" no c6digo acima, que e de tecnologia CMOS. Existem hoje todas as vers6es citadas em "CMOS", de baixo consumo de energia.

Por exemplo, 80C31 = 8031 versao CMOS. Vide manual da familia MCS-51, da INTEL e/ou Handbook IC20, 80C51 - Based 8 Bits Microcontrollers, da Philips (1995). Hoje em dia, ja he tambem a famflia 8051 "XA", que e um microcontrolador com a mesma arquitetura do 8051, s6 que com palavras de 16 bits e Clock de 30 MHz, aumentando muito seu poder de trabalho.

Vide a figura 2.1.a para melhor compreensso do texto:

2.1 . Arquitetura Interna dos 8051/8052180550

En~ada

alterna;;;;.liv;_a ;.---------1 PI+- ...

-------------------------------------------------------------------~

I "

, "

, ,

, '

, '

, '

, '

,

,

: T2EX' j_-4~N~D~8~O;55;O;;;,;====~~==========~--------j:-------------~i-

,

-----._---- T2'

: TIMER 2 :-c--- --1 : (803218052) ,

TIMER 1 T1'

TO' I , , ,

Timers'

I N T E R

R

U

P

~

E

S

8051

ou 8052

,..--------,

: 128 Bytes : : RAM : : (803218052) :

, ,

: ROM

,

: OK - 8031/8032 14K - 8051

: 8K - 8052

I ,

Comentrada Anal6gica

, I ,

~---I-----++++----t+--++--++--++----If--+--___J../( 80550

EA RST

'PINOS QUE NA '-----/

T T VEROAOE SAO PARTE ADRESS/OATA

-=- -=- DO PORT P3

Figura 2.1.a - Diagrama de blocos funcional do MC8051 e 8052.

'---./ SERIAL

Teo' RXO'

A figura 2.1.a apresenta a estrutura interna dos microcontroladores das famflias 8051, 8052 e 80550, contendo:

... ??:, , ¥.~~~~.~~~.~c~!~.??:..~.~?~.P~!~.!0.~.~9. .

As portas PO, P1, P2 e P3, cada uma com oito linhas, sao destinadas a cornunicacao externa. PO e P2 se destinam a gerenciar as vias de dados e enderecos da cornunicacao do microcontrolador com a ROM, RAM ou pernercos tipo "1/0 mapeado", que sera visto no futuro. P1 e P3 se destinam as vias de cornunicacao externa, sendo tipicamente usadas para interface com 0 mundo externo.

Aiem disto, 0 port P3 tern fungoes especiais por onde se comunicam os peritencos intern os, como ja 10i citado, que existem nos microcontroladores: timers (2 deles no 8051, 3 deles no 8052), serial (1 unidade) e AiD (de 8 canais, somente no 80550, que neste caso usa 0 port Pi como 8 entradas anal6gicas, alern de ter normalmente os timers e serial do 8051). Veja a figura 2.1.a e releia este paraqrato para melhor entende-lo. Os asteriscos na figura 2.1.a estao justamente representando que estes pinos nao sao separados dos ports P1 e P3.

Por exemplo, TKO' e RXO' sao os pinos P3,0 e P3,1, isto e, os pinos "zero" e "um" do port P3. 0 mesmo acontece com T2EX', T2', T1 * e TO'. Eles fazem parte dos ports P3 e P1, Conclusao: ou eu uso 0 port P3 como port livre, e nao uso os perilericos do chip, ou uso os peritericos do chip e comprometo alguns pinos do port P3. Ou uma coisa, ou outra. Nao e possivel ter as duas aplicacoes utilizando 0 mesmo port, e isto nem sempre fica claro para 0 iniciante no estudo de microcontroladores.

Repetindo: se eu quiser utilizar 0 port P3 integralmente como via de entradas/safdas normal (as 8 vias), eu nao posso utilizar nenhum dos seus perilericos intern os, inclusive 0 gerenciamento de RAM externa, pois esse gerenciamento, por exemplo, exige utilizar 2 pinos do port P3 (P3.7 e P3.6, RO e WR, respectivamente) e assim, de cara, ja temos apenas 6 linhas Iivres em P3. Se utilizar salda serial, menos 2 Iinhas livres, se utilizarmos os timers com contagem externa menos 2 linhas livres e se utilizarmos imerrupcao externa (INTO e INTi), teremos menos 2 linhas Iivres!!! Restando "zero" linhas livres no port P3 se utilizarmos todos os recursos juntos, Logo, 0 port P3 nao e tao disponivel assim como aparenta. Ele e muito comprometido com quais perilericos internos do Me estou utilizando e que, em geral, estou utilizando!

Futuramente este assunto tornar-se-a mais claro; agora e s6 um lembrete desta limitacao de utilizagao plena do port P3. 0 port P1 e plenamente unlizavel como port de 8 vias nos chips da familia 8051. Na familia 8052 (vide figura 2.1,a), os pinos P1.0 e P1, 1 sao cornprornissaveis, caso eu queira utilizar a terceiro timer que este chip tem disponlvel. 0 mesmo se aplica a familia 80550, (este e igual ao 8051, 56 que 0 port P1 e eompatfvel com a utilizagao do AiD interno) que e um 8051 com um AiD de 8 canais dentro do chip de 40 pinos. E Iacil, nao se assuste, isto e como carro com opclonais. E meio baquncado, mas a genIe acaba aprendendo! Existe uma tabela-resumo, tabela 2,1, que organiza 0 que foi citado aqui,

Observa9ao 1: 0 port P3 56 e totalmente livre, como port normal de 8 bits, se nao utilizamos nenhum periterico do chip e tamMm sem utilizar RAM externa.

Observa9ao 2: Porem, a port P3 pode ser utilizado como "pott normal". E s6 nao acionar esses peritericos.

Observa9ao 3: 0 port P1 e tota/mente livre, como port normal na famflia 8051. Observa9ao 4: 0 port P1 e parcialmente livre nas tamflias 8052 e 80550.

Observa9ao 5: 0 port P1 po de ser utilizado como port normal, mesmo nas famflias 8052 e 80550,

o que e a Famflia 8051? Itil73" •

.. <0 " •••••••••• , ••• ,_ ••• ' ••••••• _ •• ' •••• 0 , ••••••• ' •••••••.•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• " •• ' ••••••••••••. ::~c.:.~' .•• ' ~.

--

Atenpao: Este ass unto s6 ticet» tota/mente claro quando estudarmos todo 0 chip com

detalhes. Nao se preocupe agora.

0
a:
f-
co a:
~
f-
i=
f--
<>
,_
~r-
'" ;::
:;;
f-
cs
'" ~
c-
o:: »c
I--
" -
~
11. x
0 a:
1:
ff.- -
., ~ ;;= 0 0 ~
0 « «
"
.[ -
'" ~ ~ 0
.~ <0 0:: «
5 -
~ ~ ~ ~
0::
-
~ s ~ ~
0::
-
0:: '" '" 0 0 ~
0:: « «
-
'" ~ ~ ~
c,
-
>< ;ij ;ij ~ ~ ~
0:: ~
I-- I-- I--
-
<> IC! ~ ;,:' 0 ~ ~
0:: "<i: § § § E E E .~ .~ ·ffi
J!! !!l !!l ~ ~
.:;: :;: .:;: 0 0 0
'''' '''' .'" u
z z z z z Z «> eo co
eo «> ~ 1!l 1!l 1!l re re ~
'" '" .~ :g

<>

E ~ E E E E
"" $ ifr '" ... ! !!l '" ~
" ,:;: ec 0 ,g " w
'" .'" ~ ,:::
z z z
v '" v
~ ~ ~ ~ '" <:> '" '"
'" ii5 ~ ~ ~
gs Tabela 2.1 . Comparacao dos reeursos dos Me eitados.

RDI P3.7
WRI P3.6
T1 P3.5
TO P3.4
INT1\ P3.3
INTO\ P3.2
TXD1CLOCK
RXDJDATE P3.0 Pi.5 PSEN\
P1.4 ALE 8052
P1.3
P1.2
P1.1 1 Pi.0 T2
RDI P3.7 P2.7 Ai5
P2.7 Ai5 P2.6 A14
P2.6 A14 WRI P3.6
P2.5 Ai3
P2.S Ai3 T1 P3.S
P2.4 A12
P2.4 Ai2 TO P3.4
INTi I P3.3 P2.3 Aii
P2.3 Aii P2.2 Ai0
INTO\ P3.2
P2.2 Ai0 P2.i A9
TXD/CLOCK P3.i 11
P2.i A9 RXDIDATE P3.a P2.D AS
P2.0 AS
-::- Vss ~~4~1 ¥~c.~~.c.?~.t!.~!~.?~!..~.q?X.P~t.~.!~~.~? .

2.2 - Como e 0 Chip Externamente

2.2.1 . Esquema Eh~trico Veja a figura 2.2.a:

PSENI ALE EAI RSTNPD

F PO.7 AD7 B PO.7 AD7
PO.6 AD6 PO.6 AD6
PO.S ADS PO.5 ADS
PO.4 AD4 PO.4 AD4
PO.3 .AD3 - PO.3 AD3
-
PO.l AD2 PO.2 AD2
PO.1 AD1 PO.i ADi
PO.D ADO PO.O ADO Figura. 2.2.a - Chip do 8051, 8052 e 80550 (DIP-40 pinos) - parte.

................................................................... _ .. _ .. _ .. g.9.~~_.~.~ .. E.~.'!!!!!~.~Q?X?_ .. _ _ .. __ .. _ .. _ .. __ .. _ _ .. _ .. _ .. _ .. __ .. J~?~.i

F PO.7 AD7
PO.6 AD6
PO.5 AD5
POA AD4
- PO.3 AD3
PO.2 AD2
PO.1 AD1
PO.O ADO
P1.5 ADC5
PSENI ADC3
ALE ADC2 Conversor
EAI 80550 ADC1 AID
RSTNPD ADCO
VREF-
VREF+
RDI P3.7 P2.7 A15
WRI P3.6 P2_6 A14
T1 P3.5 com S canals s6 existe P2.5 A13
TO P3.4 na versao RL CC P2.4 A12
INTi\ P3.3 (44 pinos). P2.3 A11
INTOI P3.2 Na versiio DIP P2.2 A10
TXD/CLOCK P3_1 (40 pinos), 0 P2_1 A9
co nversor AiD possu i
RXDIDATE P3_O 6 canals, P2.0 AS Observafao 1: Note que a PO apresenta-se como ADO."AD7. A pafavra "AD" quer dizer Address/Data. 1810 significa que a e0rt PO e "multipJexado" entre as fun90es de enviar enderecos (address) e dados Idata) pela mesma via chamada "PO".

Observafao 2: Observe que, alem dos qualro ports, PO, Pi, P2 e P3, 0 chip tern dois pinos de alimentayao, dois para 0 cristal (osciJador) e mais quatro pinos intitulados PSEN (controle da ROM/RAM), ALE (controJe de comunica98o de PO como via de dados ou encerecos), RSr (que e 0 'reset'da maquina) e EA (que tern fun980 de mapear ROM internalexterna)_

Figura 2.2.a - Chip do 8051,8052 e 80550 (DIP-40 pinos) - parte.

!r~!.~}t. Mj~~?~o.~.~~?!~.??:..~.q,?!.P~t~.'~~.d.o. ..

2.2.2 . Desenho da Pastilha (Chip)

8052

80550

P1.0 VCC
PO.7 ADO
PO.1 AD1
P1.3 PO.2 ADZ
P1.4 PO.3 AD3
PO.4 AD4 POA AD4
PO.5 ADS P1.S PO.5 AD5
PO.S ADS P1.7 PO.S ADS
0 PO.7 AD7
PO.7 AD7 -q-
EANpp' RXD Pl.O EANpp'
NC TXD P3.1 n, ALEIPROG
ALE/PROG INTO P3.2 12 0 PSEN
PSEN INT1 P3.3 P2.7 A15
P2.7 A15 TG P3.4 P2.6 A14
P2.6 A14 T1 P3.5 15 P2.5 A13
P2.5 A13 WR P3.S P2.4 A12
RD P3.7 P2.3 A11
XTAL2 PZ.2 A10
XTAL1 P2.1 A9
VSS P2.D A8 C"II""" N C"') DOClO c(<(<(c(

TXD Pl.1 INTO P3.2 INT1 P3.3

PlCC 44

Figura 2.2.b - Apresentacao ffsica da pastilha da familia 8051/8052/80550.

2.3 - Deseriyao Formal da Pinagem do Me 8051

Port po: Port de proposito geral, se eu nao utilizar memoria externa de nenhuma espeeie (na versao 8051 e 8751, isto e posslvel, po is temos RAM e ROM/EPROM internas no chip). E port de utilizayao como via multiplexada no tempo, entre dados e endsrecos (s6 as enderecos menos significativos) quando us amos memoria externa. Na mesma via, num dado tempo, apresentam-se dados e em outro tempo, enderecos. Foi uma maneira de economizar pinos no chip. Se nao multiplexasse dados com enderecos, deveria ter um port de dados e outro port de enderecos, a que acrescentaria 8 pinos ao chip.

Existe um outro pino, ALE (Address Latch Enable), que ligado a um chip latch, permite demultiplexar externamente os dados e enderecos no tempo, separando assim as intorrnacoes. Isto e transparente ao programador, lsto e, voce nao precisa se preocupar com 0 comando desse pino ALE. Ele e automaticamente gerenciado pelo microprocessador; voce 56 liga 0 latch e 0 pino ALE no latch, e 0 Mc faz 0 trabalho. Veja a figura 2.3.a.

I III

PO.O ADO (LATCH) ~A7
07060504030201 0
PO.l AD1 I--- A6 "-
? '"
P02 AD2 4 ~A5 8 Vias de dados
ADDRESS
PO.3 AD3 L r--- A4
PO.4 AD4 S ~A3
3 8 Vias de enderecos
PO.S AD5 7 I--- A2 (meres significaUvos)
PO.6 AD6 3 r--- Al
8 pO.? AD? I--- AO
G
0 ADDRESS LATCH ENABLE I -!-
5 ALE
1 P2.1 '\
P2.2
P2.3 ADDRESS

P2.4 8 Vias de endereyos
P2.S (mais significativos)
P2.6
P2.7 ............................................................................ g.9.~~ .. ~.~ .. E.~.'!!!!!~~ .. ~.q,?!? }:·I~?:: ..

o

Observar;ao: Com 8 pinos de PO eu crio 8 pinos de endereqos e 8 pinos de dados.

Figura 2.3.a -liustra~ao de como geralmente se demultiplexamos dados de enderecos no port PO.

Port P1: Port de proposito geral como "1/0". Sao oito vias de ccmunicacao de proposito gera\. Via software, eu posso ler ou escrever nesse port. Lembre-se que com 0 chip 8052, caso eu utilize 0 t.erceiro timer de sse chip, eu comprometo 2 pinos desse port (vide figura 2.1.a) e com 0 80550, caso eu utilize a AJD interno desse chip, eu yOU comprometer um pino de P1 par canal do AID ulilizado.

Port P2: Port de proposlto geral, se nao utilizar nenhuma memoria RAM/ROM/EPROM enema, Como ja foi citado no item "Port PO", isto so se aplica para as vers6es 8051/8052, pois denlro do chip ja temos RAM e ROM internas. Nas outras vers6es, eu acabo us an do esses pinos para enderecar a ROM/EPROM externa au RAM externa. Vide figura 2.3.a para melhor compreensao.

Port P3: Port de proposito geral de 1/0, isto se eu nao utilizar nenhurn periterico interno aD chip, nenhuma interrupgao externa e tarnbem se nao utilizar RAM externa. Como ja citado anteriormente, no item 2.1, esse port e utiliz8vel como interface entre os peritericos internos do chip para fora do mesmo, alem de ter entradas proqramavels, como interrupcao e dois pinos que gerenciam uma memoria RAM extern a (pinos de Read - RD e Write - WR). Logo, esse port tambem, em gera!, e comprometido parcial mente com alguma utilizagao que se deseja dos perifericos internos, ioterrupcoes, etc.

Ei~/ ¥~~:qE?~!!.?!~.??!..~.~?.!.P~~~.!~~.~9. .

RXD P3.0
SERIAL TXD P3.1

INTO P3.2
Interrup(:<'io INT1 P3.3
TIMERS
TIMER 0 I TO P3.4

TIMER 1 T1 P3.S

CONTROlE WR P3.6
DE RD P3.7
MEM6RIA

Estas liga90es so
estao presentes
I 8051 I se eu programo para
utilizar estes recursos lIustra-se a seguir este comprometimento do port P3:

Observafao: Se voce nao utiliza alguns destes recursos, 0 pino correspondente ao recurso nao utjfjzado e livre como //0 para uso gera/.

Figura 2.3.b - llustracao da utiJizagao do port P3.

A seguir, apresenta-se a tabela que resume a ilusfracao anterior:

Nome Numero Fun~o Fun~ao FunCiio Especial Comenlcirios da Funciio Especial
do Pino' Especial" Normal
P3.0 10 RXD 1/0 RDX, Receive Data Usado como receptor de dados serial
P3.1 11 TXD I/O TXD, Transmit Data Usado como transmissor de dados serial
P3.2 12 INTO 1/0 External interrupt 0 Usado para algum evento extemo interromper 0 Me
P3.3 13 INTl I/O External interrupt 1 Usado para outro evenlo externo interromper 0 Me
Timer/counter 0; Usado quando S9 quer que a timer zero se tome um
P3.4 14 TO I/O
External in put contador de evenlos externos
Timer/counter 1 : Usado quando se quer que a timer1 se torne um
P3.5 15 T1 1/0
External input contador de eventos externos
- External data: Usado quando se conecta RAM extema no chip.
P3.6 16 WR I/O
Memory write strobe Sinaliza que 0 Mp vai "escrever' na RAM
- Extemal Data: Usado quando se conecta a RAM exlerna no chip.
P3.7 17 RD 1/0 Memory read strobe Sinaliza que 0 Mp val "ler" da RAM * Observafao 1: Os numetos dos pinos sao referentes a pastilha de 40 pinos (DIP).

** Observayao 2: Estas configurar;oes devem ser programadas no chip para estarem disponfveis,

Tabela 2.3 - Resumo das fungoes especiais do port P3.

· C?9.~~ .. ~.~ .. c.~'!!!!i.~ .. ~p.~.!.? L,!~L.

PSEN (Program Store Enable): E urn dos qualro pinos de controle do chip. Ele aciona a ROM/EPROM externa (chamada de mem6ria de c6digo) quando 0 Mc vai tazer uma busca de instrucao na ROM, para, em seguida, executa-la. Tambern e acionado (sempre automaticamente) quando se faz uma consulta a alguma tabela fixa, gravada na ROM, por meio de inslrugao especial para isto. Note que existe uma barra acima do nome PSEN, indieando que ele e ativo em nfvel16gico O. Ele vai automaticamente para zero toda vez que 0 Me esta no estado de busca de instrucao (fetch) para, ap6s isto, decodltica-la e executa-fa. Vide item 1.3 e figura 1.3 para melhor compreensao do ciclo de busca em ROM.

lIustra-se em seguida a utilizagao do PSEN:

Observa~ao:

Nem sempre /igam-se todos os pinos do port P2 na EPROM. Dependera do "temenno" dessa EPROM. Com ligayao comp/eta, ter{amos 0 endeteco:

2" ;; 65.535 = 64 Kbytes de EPROM enderer;avel. Se a EPROM for menor, eu uti/izo menos pinos P2 para gerenciar 0 enderer;amento dessa EPROM, par exemplo:

EPROM de 8 Kbytes = 213 = 8 K = /igarei aos pinos AD ate A 12 dessa mem6ria para acessar todos os espa90s de endereco disponfvel.

Figura 2.3.c - lIustra~ao da liga~ao da EPROM no Mc.

ALE (Address Latch Enable): Ja foi comentado quando se apresentou 0 port PO, vide figura 2.3.a. Eo pino que comanda a dernultiplexacao das informac;:6es de dados e enderecos (menos significativ~) do port PO. Ele e automaticamente gerado pelo Me.

EA (External Access): E urn pino de comando externo, que determina se vamos usar a ROM / EPROM interna do chip ou se vamos ler somente uma ROM/EPROM externa ao chip. Se 0 pi no EA estiver em nfvel 16gico 1, 0 chip ira ler sua ROM/EPROM interna, e ap6s acabar

(8 bits)
16-
DATA
L AD R
ms
A ENDEREt;;O 0
PO T • M
(AD) C (ADDRESS)
8 H menos significatlvo (8 bits)
0 A7
5 ALE I
1 A8
Ms
ENDEREt;;O ate
P2 (ADDRESS) 8 bits 1 ate
mais significativo (8 bits) DE
A15 (output enable)
PSEN t todo 0 espaco de memoria interna, ira trabalhar automaticamente com a memoria ROM/EPROM externa, se ela existir. Com 0 pino EA em 0, ele s6 enxerga mem6rias ROM/EPROM externas. Vide ilustragao na figura 2.3.d.

RST (Reset): E 0 disparador do chip quando se quer iniciar adequadamente sua fungao. Esse pino deve estar no estado 1 por, ao menos, dais ciclos de rnaqulna, que saberemos 0 que e no futuro. Ele organiza os valores internos do chip para iniciar 0 trabalho adequadamente e sempre da mesma maneira. Veremos, mais a frente, detalhes deste item.

80 Microcontrolador 8051 Detalhado

••••••••••• • •••• • n u _ u.u •••••••••••••

FFFF

FFFF

XXXX-1 XXXX

-r---+---_'__ ("4096" para 4K de ROM internal

4KI8K

ROMA

INTERNA

ROM EXTERNA

.,._ SINAL PSEN

S6 ROM

EXTERNA

<if- SINAL PSEN

0000 -'----I

00'}l

SITUAyAo COM PINOEA ~ 1

SITUAyAo COM PI NO EA~ 0

Figura 2.3.d • llustracao de orqanizaeao de ROM internalexterna em funcao do pino EA.

XTAL1 e XTAL2 (CristaI/Oscilador): Esse chip tem um sistema de oscilacao interna que so exige do exterior 0 cristal e dois capacitores para gerar a oscllacao, que se tornara 0 clock ou padrao de tempo para 0 microcontrolador trabalhar.

Veremos futuramente mais detalhes desta funyao.

Vee e Vss (Alimentacao do chip): E por onde se alimenta 0 chip: +5 Vdc em Vee, pino 40 e terra em Vss, pi no 20.

Vimos todos os pinos existentes nas familias 8051/8052/80550. So nao demos rneita entase as entradas/safdas especiais do 8052 e 80550, pois nao e 0 objetivo deste livro, apesar de estarem razoavelmente descritos neste capftulo.

2.4 ~ Organiza~ao das Mem6rias

Esse processador tem um espaco separado para mem6ria de programas e para mem6ria de dados. Nesses microcontroladores, existe memoria RAM interna, alern de poder gerenciar RAM externa. 0 mesmo acontece com a ROM/EPROM. Vide llustracao na figura 2.4.a.

Note na figura 2.4.a que 0 Mc tem uma RAM interna que, como veremos em seguida, e dividida em registradores especiais e registradores de proposito gera!. Eles sao acessfveis pela instrucao do tipo MOV, isto e, qualquer instrucao MOV indica que estamos manipulando dados da RAM interna. Note tam bern que a ROM/EPROM externa 8 controlavel pelo pino PSEN, como ja foi visto, e temos, no caso, um maximo de 64 Kbytes, como se costuma dizer (8 um arredondamento da capacidade total, que e 65.535 bytes). A nstrucao que permite manipular

............................................................................. 9.9.~~ .. ~.~f~.':!r!!~.~q~.~.? !~]1~

dados da ROM/EPROM e do tipo MOVC (MOV Code). Note, finalmente, que a RAM externa e controlavel pelos pinos RD e WR do Me e tambem tem capacidade maxima de encerecemento de 64 Kbytes. A instrugao que permite manipular dados da RAM externa e do tipo MOVX (MOV eXtern). E por isso que 0 Mc nao taz contusao com os enderecos de uma mem6ria. Por exemplo, coma ele saberia diferenciar entre a posicao 03h da RAM interna, ou 0003h da EPROM/ROM externa, e 0003h da RAM externa, se nao fosse esta dica que as instrucoes tern: MOV, MOVC e MOVX, ja que as tres mem6rias tern 0 mesmo endereco? Seria impossivel, nao e?

INTERIOR DO Me

ROM INTERNA 568051152

FF.-----....,

RAM INTERNA

oo.__----'

EXTERIOR DO Me

'ROMI EPROM EXTERNA

FFFF

'pstN libera esta mem6ria

*(64 K Max.)

MEMORIAOE CODIGO

0000

Inslru0eS de acesso a RAM I NTERNA:

MOV

lnstrucces de acesso a ROM/EPROM EXTERNA:

Move

Figura 2.4.a • Estrutura de mem6rias.

'RAM EXTERNA

*RD e RW liberam esta memoria para leitura e escrita

'(64 K Max.)

2,4,.1 • RAM Interna (General Purpose RAM)

E um espaco de 256 bytes na familia 8051 (e 128 bytes a mais no 8052). Ele e dividido em: (vide a figura 2.4.c para acompanhar 0 texto seguinte):

1. Posigoes da RAM "earn apelidos" para seus enderecos: e dividido em quatro bancos e cada um tem os "ape lidos" RO, R 1, ... , R7. Estas poslcoes tarnbern podem ser aeessadas pelo seu endereco absoluto .. Por exemplo: RO no banco 0 tem 0 endereco absoluto do byte OOh da RAM. Esses registradores VaG da posicao OOh ate 1 Fh de endereco interno.

2. Posicoes da RAM "sem apelido", isto e, aeesslveis apenas pelo seu endereco absoluto, porern com uma propriedade adicional: cad a bit de uma posicao de memoria tarnbem tem seu endereco particular, isto e, ela e "bit" enderecavel, alern de ser "byte" enderecavel Vao da posicao de byte 20h ate 2Fh. Por exemplo: as bytes 20h e 21 h tern enderecos internes, como ilustradoem seguida:

MEMORIA DE DADOS

lnsnucoes de acesso a RAM EXTERNA:

MOVX

h~82~J Microcontrolador 8051 Detalhado

••• ~ •• ~ •••.• ,;~., •• , •• , ••••••••••••••••••••••••••••••••• ,., •••••••••••••••••••••••••• 0 •••••••••••••••••••••••••••••••••••••••••••••••••••••• , , ••••••••••••••••••••••••••••• , ••••••••••••• ' •••••• ,,',.

REGISTRADORES DE FUNCOES

ESPEC IAIS :n

m

'BYTE' 21 'BYTE' 20

ObservafBO: Note que a byte 20h e 0 enderer;o do byte todo (8 bits) e 0 primeiro bit deste byte tem endereyo OOh e 0 ultimo bit tem enderer;o 07h. Assim, nesta area particular da RAM interna, eu posso acessar a byte ou um bit especffico deste byte. Deve ficar claro que nao hci confusao, por exemplo, entre as etuietecoe do bit DOh e 0 registrador RO do banco 0, que tamMm tem 0 enderer;o DOh. Por que? Porque as instruyoes que acessam byte e bit sao diferentes; logo, nao da confusao para a programador e nem para 0 Mc! A vantagem deste tipo de sistema de bits e destacada em certas aplicar;oes que veremos no futuro, em que se usa algebra booleana para a resoluyao de certos problemas.

Da posiyao 30h a 7Fh, as registradores s6 sao acessfveis par byte e nao por bit. Vide figura 2.4.c e observe.

3. Registradores de Fungoes Especiais (Special Function Registers): Sao aqueles que tern apelido, alem do seu endereco absoluto, e, alern de terem apelido, tern tarnbern uma fungao especffica dentro do Mc. Por exemplo, 0 port P1 tem 0 endereco do byte 90h e e 0 espelho do que acontece externamente com 0 port P1! Assim, ver algo pelo port P1 e olhar esse registrador P1; alterar os valores do port P1 e alterar os valores desse registrador P1.

Temos varies registradores e variadas fungoes para eles, e temos que conhecer todos eles, senao, nao e possivel utilizar bem 0 conjunto de instrucoes do Me. E necessaria paciencia e interesse, pois esta parte e fundamental para entender 0 Mc. Vale ressaltar que esses registradores especiais sao como 0 "cerebro-mernoria" da maquina: saber como a maquina esta (seu estado) em um certo in stante e olhar para seus registradores! Alterar seu estado tam bern e usar instrucoes que alteram de alguma forma seus registradores! E 0 mapa da rnaquina: e comoela se comunica com 0 meio exterior, como ela se programa internamente e como ela recebe dados externos e internos. E tudo; e a alma da rnaquina, A figura 2.4.b seguinte resume 0 descrito.

RAMINTERNA (256 BYTES)

Posicao FFH

Posi9ao SOH PO$i~o7FH

.'

DADOS

Observa9ao: As palawas foram mantidas em ingies para que haja compatibilidade com os manuais de fabrica.

Figura 2.4.b - Ram interna.

PO$iqao a

· q.9.~~..e..~ .. E.~.'!!!!!~.~p?~? [~~.;

A primeira vista, os registradores parecem ser muitos, mas, com paciencia e 0 usa continuo das instruyoes, vai-se eonhecendo eada um deles. Agora, e s6 uma apresentacao lormal. Anirne-se!

BYTEADDRESS BYTE ADDRESS
7F
"NOT BIT GENERAL
ADDRESSABLE" PURPOSE
RAM
30
2F 7F 7E 70 7C 7B 7A 79 78
2E 77 7£ 75 74 73 72 71 70
20 6F 6E 6D 6C 68 6A 69 68
2C 67 66 65 64 63 62 61 60
28 5F 5E 50 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50
29 4F 4E 40 4C 4B 4A 49 48
BIT 28 47 46 45 44 43 42 41 40
ADDRESSABLE 27 3F 3E 3D 3C 3B 3A 39 38
LOCATION 26 37 36 35 34 33 32 31 30
25 2F 2E 20 2C 2B 2A 29 28
24 27 26 25 24 23 22 21 20
23 1F lE 10 1C 18 ~A 19 18
22 17 16 15 14 13 12 11 10
21 OF OE 00 OC OB OA 09 08
20 07 06 05 04 03 02 01 00
IF BANK
18 3
NOT BIT 17 BANK
ADDRESSABLE < 10 2
OF BANK
08 1
07 DEFAULT REGISTER
00 BANK FOR RO·R7 BYTE ADDRESS FF

~ B

BYTE ADDRESS

F7 LF6_lF5 LF41 F3 I F2 I F11 FO
E.1 , E6 I E5 I E4 I f3 , E2 I fl I EO

07 I 06 I 05 , 04 I 03 I 02 I 01 I DO
• _l·1 • _lBC IBBJBA' B9J B8
B7 LB6_{ B5 1841 B3 I B2 I B1 I BO
AF I . I • lAC lAB IAA IA91A8

A7 I A6 I AS I A4 I A3 I A2 I Al I AD

NOT BIT ADDRESSABLE
9F I 9E 190 lsc 19B 19A I 99 I 98
97 _l96_{ 95_l94 I 93_l92 I 91190
NOT BIT ADDRESSABLE
NOT BIT ADDRESSABLE
NOT BIT ADDRESSABLE
NOT BIT ADDRESSABLE
NOT BIT ADDRESSABLE
8F I 8E 180 18C 18B I SA I 89 I 88
NOT BIT ADDRESSABLE

NOT BIT ADDRESSABLE
NOT BIT ADDRESSABLE
NOT BIT ADDRESSABLE
87 I 86 I 85 I 84183 _l82 I 81 I SO EO ACC

BO P3

AD P2

~ S~F

98 SCON

80 THl

8C THO

8B TLl

AA T~

~ moo

88 TCON

~ ~~

83 DPH

82 DPL

M ~

80 PO

RAM SPECIAL FUNCTION REGISTER

Observa9ao: As palavras foram mantidas em ingles para que haja compatibilidade com os manuais de fabrica.

Figura 2.4.c • Mapa dos registradores da RAM interna do Mc.

Apresentayao inieial dos registradores de fungoes especiais, vide figura 2.4.e.

1. ACC· Acumulador: E utilizado normalmente em muitas mstrucoes da maquina,

2. PO, P1, P2 e P3: Registradores dos ports de cornunicacao do Me.

3. B: E urn registrador utilizado nas instrucoes de rnultiplicar e dividir (MUL AS e DIV AB).

!J!.~ 0~?~~.??~_t:.~!~.~~!..~.~?~ .. q~~~.!~~.~?. .

4. PSW (Program Status Word): Registrador do estado da ultima operacao 16gica e aritrnetica realizado no acumulador. E um registrador auxiliar de grande irnportancia, como veremos futuramente.

5. IP e IE (Interrupt Priority e Interrupt Enable): Sao registradores que permitem programar a parte de interrupcdes do microcontrolador. Sera visto com mais detalhes no capitulo demerrupcoes.

6. DPH e DPL (Data Pointer High, Data Pointer Low): Os dois juntos formam um registrador de 16 bits chamado DPTR (Oata Pointer). que permite criar um endereyo de acesso as mem6rias externas. E muito util por causa desta funcao,

7. SP (Stack Pointer): E um registrador utilizado como pilha de enderecos de retorno de sub-rotinas. E util para 0 microprocessador saber para onde voltar ap6s terminar o tratamento da interrupcao .. Ele e acessado pelas instrucoes PUSH e POP e e indiretamente manipulado pelas instrucoes CALURETURN que sao utilizadas em sub-rotinas.

8. PCON (Power Control Register):E usado para alterar modos de funcionamento da pastllha com relacao ao consumo de palencia.

Os registradores que correspondem aos peritericos internos ao Mc (dentro do chip), vide fjgura 2.4.C, sao:

1. SBUF (Serial Buffer): E um registrador de comunicacao com 0 perilerico interno Serial, que e um chip de comunicaeao. Faz interrace com 0 Me internamente (que fala com ele paralelo, em 8 bits) e tambem com 0 mundo exterior, quando se quer transmitir/receber dad os por via serial.

2. SCON (Serial Port Control Register): Ele permite programar e controlar todas as atividades do periierico serial juntamente com 0 SBUF.

3. THO, TLO, TH1 e TL 1 (Timer High e Timer Low, 0 e 1): Sao registradores de 8 bits que, em eonjunto de dois (high e low), formam para eada timer (Timer 0 e Timer 1) seu registrador de contagem de ate 16 bits.

4. TCON (Timer Control Register): E 0 registrador que permite controlar as atividades dos timers.

5. TMOD (Timer Mode Register): Ele permite programar os modos de atuacao de eada timer que temos.

2.4.2 ~ Apresentando com Detalhes as Registradores do Me

Agora que todos os registradores foram apresentados, vamos exercitar um pouco com aqueles que correspondem especifieamente aos do Me .. Os registradores dos perfericos s6 serao explicitados nos eapitulos especffieos ..

Apresentamos os Registradores Correspondentes Internos ao Microprocessador

2,4,2.1 • Ace ou A (Acumulador)

E urn registrador que se utiliza como operando em varias instrucoes do Me. E tarnbern onde lica 0 resultado de varias operacoes realizadas, isto e, muitas vezes 0 ACC e parte do operando da insuucao e, logo ap6s a instruyao ser executada, 0 resultado fica no pr6prio acumulador, apagando a intormacao anterior de operando. Exemplos de instrucoes:

+ add A,Rn: Soma 0 conteudo do registrador Rn ao conteudo do acumulador: 0 resultado fica no acurnulacor.

+ ani A,#dado: Realiza uma operacao AND entre a #dado e 0 acumulador: 0 resultado fica no acumulador,

+ mov A,Rn: Move para A 0 conteudo de Rn, 0 que tinha em A anteriormente e perdido, po is 0 conteudo de Rn foi carregado em A.

"""""""" .. " , ,, 9._g~~ .. ~,~f .. ~,'!?!!!~ .. ~.q???.,." , , .. , .. " r?~~.,:

ENDEREC;O DE BIT

END : EO h (BYTE)

Acumulador

NaMES; ~

E7 E6 E5 E4 E3 E2 E1 EO
ACC? ACC6 ACCS ACC4 ACC3 ACC2 ACC1 ACCO Observa980: Note que eu tenho 0 endeteco do "byte" ACC igua/ a EOh e 0 endere90 do "bit" ACCD tambem cai num endeteco ehamado de EOh. 0 programador e 0 Me nao fazem confusao, porque as instruqoes que manipulam bit sao diferentes das que manipu/am byte, por exemplo:

a) elr EOh = elr bit (EOh) = clr ACCD.

b) elr A = elr byte A (todos os bits do aeumulador),

2,4,2.2· Ports PO, P1, P2 e P3

Sao os registradores que espelham a situacac atual dos pinos ffsicos dos ports do microcontrolador.

ENDERECO DE BIT

Port PO

NaMES; 0

87 86 85 84 83 82 81 80
po.? PO.6 PO.S PO.4 PO.3 PO.2 PO.1 PO.O END

; 80 h (BYTE)

Port de prop6sito geral, 56 se nao utilizarmos mem6ria externa. Port que multiplexa endereyos/dados se utilizo mem6rias externas, que e 0 caso do 8031,

Port P1

ENDERE(:O DE BIT

END

~

(BYTE)

NOMES; 0

9? 96 95 94 93 92 91 90
P1.7 P1,6 P1.S P1.4 P1.3 P1,2 P1.1 P1.0 Port P2

86. i Microcontrolador 8051 Detalhado

..••.•....• ~ , .. ,', ,., , .. o·.··· n 0.·' , 0 ..

Port de proposito geral no 8031/51. No chip 8052, os pinos P1.0 e P1.1 podem ser comprometidos com Timer 2, e no 80550, todos esses pinos podem ser comprometidos com os oito canais do AlD.

ENDEREC;:O DE BIT

END

~

(BYTE)

NOMES: 0

A7 A6 AS A4 A3 A2 A1 AO
P2.7 P2.6 P2.S P2.4 P2.3 P2.2 P2.1 P2.0 Port de proposito geral apenas se nao utilizarmos nenhuma mem6ria externa. Port dedicado ao gerenciamento de enderecos quando utilizamos mem6ria externa. Neste caso, ele fica dedicado exclusivamente a esta tarefa.

ENDEREC;:O DE BIT

Port P3

NOMES: I P3

B7 B6 85 B4 B3 B2 B1 BO
P3.7 P3.6 P3.S P3.4 P3.3 P3.2 P3.1 P3.0 END

G

(BYTE)

Port de proposito geral se nao utilizarmos nenhum perilerico interne ao Me e tambem RAM externa. Todos os pinos sao cornpromissaveis com algum periferico ou cornunicacao externa (vide itens 2.1 e 2.3 para detalhes).

Exemplos de lnstrucees que abordam os ports

mov Pl,#OOh: Move 0 valor OOh para 0 port P1, isto e, "zero" para todo 0 port P1

mov A,Pl: Move 0 conteudo do reg. P1 para 0 aeumulador, isto e, Ie 0 port P1 e guarda no aeurnulador.

setb P3.7: Faz pino 7 do port P3 fiear em nfvel16gieo 1. clr Pl.0: Faz pino 0 do port P1 ficar ern nfvel16gico O.

2.4.2.3 • B • Registrador B (FOh)

E urn registrador que ern algumas poucas instrucoes tern seu nome diretamente refereneiado: mul AB, div AB, que sao operacoes entre as registradores A e B (fora isto, e um registrador como outro qualquer).

Registrador B

F7

F6

F5 I F4 I F3 I F2

END

~

(BYTE)

ENDERE~O DE BIT

NOMES: I B

ObservafBO: Os bits de 8 nao fern nomes individuais.

............................................................................ g.9.~~ .. ~.~ .. E.~~!.~ .. ~.~?~.?. :~r:~

2.4.2.4· PSW (Program Status Word)

E um registrador de status da ultima operacao realizada no acumulador. Veja a tabela seguinte:

END I--_+-_-t-_-+-_--I __ +-_-t-_-+-_DO~ r-I :-DO hI

PSW.O (BYTE)

~--~----r_--_+----+_--_;----~----r---~

P

Lrr--PARITY

l L_~======j~OVERFLOW

BANK SELECT

l_------------------------+mR~EG.USOGE~L 1.--------------------------------+1 AUXILIAR CARRY

L-------------------------------l~_CARRY

PSW.7 ("ey" au C • "Carry (D7h))"

E um indicador de 'val um" em operacoes arifmeticas: vai para 1 quando uma soma com A "estoura" na sua capacidade (isto e, 0 setimo bit ou ACC.7 vai um para uma proxima casaque nao existe; seria um nono bit, que e um "estouro" da conta). Vai para "1" se existir um emprestimo do 72 bit no caso de uma subtracao com 0 acumulador.

Por exemplo:

Se ACC=FFh e apes isto aparece a instrucao:

add A,#01 h: A soma de FFh com 01 h lara com que 0 resultado de A seja OOh e "vai 1" para 0 carry, lsto e, "CY" e setado no registrador PSW.

o carry "CY" tambern e utiHzado como se fosse 0 "acumulador para um so bit". Existem varias instruyoes booleanas que usam 0 "C", isto e, 0 carry, como operando, em que se posiciona 0 resultado das operacoes, Por exemplo:

ani C, ACC.O: Executa um AND booleano entre 0 carry e 0 bit ACC.O. 0 resultado da operayao fica em "C" (ele e equivalente ao acumulador para opsracao com bytes), isto e, 0 resultado volta para ele mesmo.

.~r?~:} 0.~~~~.~~~.~~?!~.??!..~p?~.P~!~.!~~?? " .

PSW.6 . AC (Auxiliary Carry- D6h)

E um indicador de "vai um" entre os quatro primeiros bits do acumulador, isto e, e 0 "vai um" de um "nibble" para outro "nibble" do acumulador.

E multo util em aritmetica BCD em que os nibbles que correspondem a 4 bits sao representados por um nurnero codificado em binario, mas que representa um decimal de 0 a 9.

PSW.5 (Flag a . D5h)

E um bit registrador de uso geral, nao tem nenhuma funyao especial e nao indica nada t

("sobrou" dentro do PSW este bit, e nao tem funcao especffica). r

PSW.4 e PSW.3 • RS1 e RSO (D4h e D3h)

Sao do is bits que fazem mudar 0 banco de registradores a que se referem os nomes RO a R7, utilizados nas instrucces que trabalham com esses registradores (por ex.: mov A,RO = move para 0 "A" 0 conteudo de "RO"; mas qual RO? Os bits RSO e RS1 e que dizem a qual RO de qual banco esta se referindo). Veja a tabela:

RS1 RSO BANCO
a 0 Banco 0
0 Banco 1
a Banco 2
1 Banco 3 Exemplos:

Banco 0 => RSO=O e RS1=O => OOh a 07h. Banco 1 => RSO=O e RS 1 =1 => OSh a OFh. Banco 2 => RSO=1 e RS1=D => 10h a 17h. Banco 3 => RSO=1 e RS1 =1 => iSh a 1 Fh.

o "BANCO 0" E 0 QUE A MAaUINA "APONTA" QUANDO SE LlGA A MAaUINA OU SE FORyA UM "RESET".

Enderecos dos bits intitulados sempre de RD a R7

Quando se da 0 reset da maquina, ele aponta para 0 banco 0, isto e, as instrucoes que se referirem a RD, Ht, ... R7 estao se referindo ao "Rn" do banco 0. Voce pode utilizar a mudanca de ban cos e usar os mesmos apelidos de RO a R7 para 0 outro banco, ou usar a encereco absoluto de cad a registrador. Em geral, deixa-se 0 microcontrolador aponlado para 0 banco 0 direto e os outros registradores utilizam os enderecos absolutos deles, 56 para nao ter o trabalho de mudar toda hora de banco. Isla depende do gosto doprogramador. Veja a figura 2.4.d.

...... ""." ..r?gu.~ .. ~.~ .. E.~'!.!J!!.~,~,~~.~.?. , .. , ~~r.[f

Nomes RAM Interna: Bancos Endereyo Bits no PSW
"nomes" dos registradores Absoluto
R7 1F
R6 1E
R5 10
R4 1C RS1 RSO
Banco 3
R3 1B 1 1
R2 1A
Rl 19
RO 18
R7 17
R6 16
R5 15
R4 14 RS1 RSO
Banco 2 R3
13 1 0
R2 12
R1 11
RD 1D
R7 OF
R6 OE
R5 00
R4 OC RS1 RSO
Banco 1
R3 OB 0 1
R2 OA
R1 09
RO 08
R7 07
R6 , 06
R5 05
R4 04 RS1 RSO
Banco 0 R3
03 0 0
R2 02
Rl 01
RO 00 Figura 2.4.d -Ilustracao da RAM interna com relacao aos bancos.

Quando se "reset a" a maquina, os bits RSl e RSO ficam em OOh, lsto e, estao 5e re~erindo ao banco O.

ISo' Mieroeontrolador 8051 Detalhado

;~''-" •••• ';>~~'i ••••••••••• ''' •• 0 •• 0 •• 0 ••••••••••••••••• ro. roo ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• _ •••••••••••••••••••••••••• ' ••• , •• ', ••• ' ••• 0 •••••• '." •••••••••••••••••

PSW.2 - OV (Overflow Flag - D2h)

E um bit que vai para 1 quando, apes uma adi9ao ou subtracao, acontece um "estouro" da conta. Resultados maiores que +127 ou menores que -128 "setarao" 0 bit "OV". Por exemplo:

OF => +15

+7F => +127

8E e "OV" +142

Note que BE. e -116, que nao e a resposta desejada + 142, par isto OV e setado,

PSW.1 (D1h)

Bit nao disponivel ao usuarlo.

PSW.O - P (Parity) (DOh)

Bit que e "setado" em "1" quando a paridade do conteudo do acumulador e fmpar. Por exemplo, seja A, contendo os seguintes dados:

N DE 'lS" ~ iMPAR

A~ I 1001 I 1110 I........ P=l

N DE "15" ~ PAR

A~ I 1001 I 1111 I........ P~O

Observafao: Paridade e 0 resultado par ou impar do somat6rio bimirio do acumulador.

E ufil quando se trabalha com 0 canal serial, pols ele muitas vezes necessita desta intormacao, Outra mane ira de saber se P e 'Tou "0", e pensar que a soma dos bits "1" do acumulador mais 0 "P" tem sempre que ser par.

2.4.2.5 -IE e IP (Interrupt Enable e Interrupt Priority) - (Bytes ASh e BSh)

Sao registradores que permitem programar 0 modo, prioridades e liberacao de interruP90es externas ou internas. Sera visto com detalhes no capitulo "INTERRUPyAO".

2.4.2.6 - "DPTR", DPH e DPL (Data Pointer High e Data Pointer Low)- (Bytes 83h e 82h)

E um par de registradores compostos como se fassem uma so palavra de 16 bits. Com 16 bits eu posso enderecar ate 64 Kbytes de memoria externa, e e para isto que eles serveml Existem instrucoes que utilizam 0 "DPTR" como "ponteiro" de memoria. Por exemplo:

movx A,@DPTR: move para A 0 conteudo apontado pela poseao de memoria dada pelo endereco do "DPTR".

Na pratica, primeiro carregamos ° "DPTR" (isto e, DPH e DPL) com 0 endereco desejado e depais utilizamos a instrucao acima. Par exemplo:

............................................................................. g_9y~ .. ~.~..E.~.'!!!!!.~ .. ~p.?!.?... ~r~ri§n

ANTES _DEPOIS
Irt-h i ·t-h
;
RAM ;
INTERNA ;
Usanda, por ,
BYTE PILHA
30h exemplo, 30h
12Fh MOV 2Fh
SP,#1Fh antes
ENDERE(,:O da primeira
20h AP6s; 20h
1Fh utilizayao MOV SP,#1Fh SP-+ u n
B3 do SP, ele B3
ira para 20h
e formara a
B2 pilha dai B2
PILHA para cima.
~,C0L B1 B1
NO e--.
07h RESET: 07h

BO BO
OOh DOh
Figura 2.4.e -llustrayao da atuacao do Stack Pointer SP.
2.4,2,8· peON - (Power Control Register) • (87h)
E um byte de 'miscelanea". mov DPTR,#2000h ; carrega 0 DPTR com 0 endereco 2000h (em 16 bits) movx A,@DPTR ;move 0 conteudo de posicao 2000h para 0 acumulador

Ap6s esta instrucao, em A estara 0 conteudo que estava na posicao de mem6ria RAM 2000h. Note que e a unlca rnaneira de esse microcontrolador de 8 bits manipular urn endereyo de 16 bits.

2.4,2.7· SP (Stack Pointer)· (81 h)

E urn registrador de 8 bits que contern 0 endereco de to po de uma "pilha" realizada com os registradores, em que se acumulam enderecos de retorno, quando se trabalha com sub·retinas e interrepcoes. Voce pode EMPURRAR (PUSH) dados para a pilha (STACK) au TIRAR (POP) dados da pilha (STACK).

A instrugao PUSH incrementa 0 SP "antes" de escrever os dados e a instrucao POP Ie 0 dado da pilha e "depois decrementa" 0 SP. A pilha e formada inicialmente dentro da RAM interna quando se tern 0 RESET da maquina, e neste casco SP e carregado com valor 07h. Islo B, qualquer dado a ser armazenado na pilha causara primeiro 0 incremento do SP, isto e, ira para 08h, e depois sera gravado 0 dado na pilha nesta posicao OBh. lsto e, ela estara ocupando a posicao OSh da RAM que e 0 registrador RO do Banco 1! Se voce quiser utilizar esse banco e os outros seguintes, e melhor, logo de inicio, carregar 0 SP com outro valor de ponteiro, a partir do qual ele ira formar a pilha; por exemplo, veja atentamente a ilustracao da ligura 2.4.e.

I peON I

'/7 '/6 '/5 '/4 '/3 '/2 '/1 '/0
SMOD X X X GF1 GFO PD IDL END

: 87 h (BYTE)

92 • Microcontrolador 8051 Detalhado

•••••••••••••• _ •• _ •• _ •• _ •• _ •• _ ••••••••••••••••• _ •••••••••••••••••••••••••••••••••••••••••••••••••••• H •••••••••••••••••••••••••• 04 ••••••••••• 04 ••••••••••••••••••••••••••••••• , ••••••••••••••••••••••••••

SMOD: E bit utilizavel com calculo de tempos no timer, quando se trabalha com 0 canal serial. Vide capitulo "Serial".

GF1 e GFO: Bits de uso geral (Flags). Sao disponiveis para prop6sito geral, sem nenhuma fungao especifica.

PD (Power Down): Uma instrucao que force 0 valor "1" neste bit sera a ultima lnstrucao a ser executada pelo microprocessador antes de entrar no modo "Power Down". No modo "Power Down":

a) 0 oscilador dentro do chip para.

b) Todas as fungoes param.

c) Todos os valores da RAM interna sao mantidos.

d) Todos os niveis atuais dos ports sao mantidos.

e) Os pinos ALE e PSEN fieam em nivel O.

f) A unica maneira de sair deste modo e pelo RESET.

Em modo "Power Down", Vcc que e 5 Vdc pode chegar a ate 2 Vdc sem prejuizo dos estados supracitados! E necessario esperar que 0 estado de "Power Down" se complete para apos diminuir 0 Vec, se for este 0 caso. No caso de voltar ao estado normal, 0 Vee deve retornar a 5 V pelo menos dez ciclos de clock antes de acionar 0 RESET.

IDL (Idle Mode): Uma instrucao que torca 0 valor "1" neste bit sera a ultima instrucao executada antes de a rnaquina entrar em modo "Idle". Neste modo:

a) 0 sinal do clock do chip e Iiberado para a CPU, mas nao e para as interrupcoes,

timers e serial.

b) 0 estado da CPU eo conteudo da RAM interna sao mantidos.

c) Os niveis atuais dos ports sao mantidos.

d) ALE e PSEN ficam em nfvel16gieo "1 ".

e) 0 modo "Idle" e finalizado por:

+ Alguma interrupcao ja liberada; + Reset.

f) Qualquer das condicoes do item "e" ja zeram automatieamente 0 bit "IDL".

Observafao: Power Down (PO) e Idle (IOL) 56 existem nos chips com vetseo de construy8o tipo CMOS (que tem um c6digo "C" dentro do nometo do chip, por exemplo, 8031 => 80C31 ).

... "."",, ~.9y~ .. ~.~f~".!J!!.~.~.O'?~? ~:.s.~:,.:

Aten980; Os registradores que se referem aos periterieos dentro do Me serao apresentados em seus respectivos capftulos explicativos, isto e, "Timer", "lnterruP9ao" e "Serial".

2.4.2.9· Os Registradores da RAM Interna de Uso Geral Ternes nafigura 2.4.1 a ilustracao da RAM interna:

REGISTRADORES
DE FUNI;GES ~
ESPECIAIS -
BYTE
ENDEREi;AVEL
BIT E/OU BYTE
ENDEREi;AvEL
BANCO 3
BANCO 2
BANCO 1
BANCO a 7F
30
2F
20
1F
RAM DE usa 18
GERAL 17
10
OF
08
07
00 FF

80

Figura 2.4.1 -Jlustracao da RAM interna de usa geral.

Vide ligura 2.4.c para detalhe dos bancos de cada bit.

Vide figura 2.4.c para detalhe de cada banco e de sua proqrarnacao. Vide item 2.4 para todo detalhamento destas luncoes:

Registradores com funcoes especiais sao: A, B, PSW, PCON, PO, P1, P2, P3, IP, IE, DPH, DPl e SP e dos peritericos do Me: timers, TMOD, TCON e TH1, TL 1, THO, TLO, e na serial: SBUF e SeON.

Na verdade, ja vimos pratieamente todos os detalhes da parte referente a RAM interna de usa geral, portanto aqui vamos s6 resumir alguns deles:

1. Posiyoes inieiais da RAM, de OOh ate 1 Fh: Grupos de registradores "com apelido" de RO a R7.

a) Cada banco muda 0 "endereco" destes mesmos "apelidos". Por exemplo: RO do banco 0 = OOh e RO do banco 1 = OSh, RO do banco 2 = 10h, etc.

b} Quem muda os baneos sao os bits RS1 e RSO que estao no registrador PSw.

c) Cada um destes registradores pode ser referido na instrucao pelo seu "ape lido" ou seu enderego "absoluto". Por exemplo:

d) Se estamos no banco 0 => mov A,RO ou mov A,OOh da no mesmo. 5e mudo de banco, par exemplo, para banco 1 => mov A,RO ou mov A,08h da no mesmo.

.. ~4. 0.!~~9.~.9.0.t!'9!~.~9!..~.~?!.g~~~.!~~.~?. .

e) Os apelidos RO a R7 sao ut'lizaveis diretamente no conjunto de instrucoes do microprocessador. Vide anexo B: Conjunto (Set) de Instrug6es.

f) Esses registradores sao somente Byte Endere~aveis, isto 8, nao posso acessar um bit diretamente.

2. Posi~oes da RAM entre 20h e 2Fh: Grupo de registradores "sem apelido", isto e, as instrucoes que se referenciam a eles tem que apresentar 0 enderego absoluto do registrador.

a) Cada "Bit" tem um enderecc e cada byte tarnbem. Vide figura 2.4.c para detalhes desses enderecos.

b) Observe que 0 enderego do bit pode gerar confusao, para 0 leitor, com 0

endereeo do byte! Por exemplo (veja figura 2.4.c para acompanhar):

+ Enderego do registrador RO do Banco 0 = OOh;

+ Enderego do 1Q bit do registrador 20h = OOh;

+ Enderego do 1Q bit do registrador 24h = 20h;

+ Enderego do 1Q byte apes 0 banco 3 = 20h .

Como nao fazer cenfusao entre 0 endereeo do bit e do byte? As lnsirucoes que manipulam bit e byte sao "diferentes", vide Capitulo 5: Conjunto de lnstrueoes. (0 programador precisara de atencaol)

c) Observe que cada posicao destas pode ser acessada via bit ou via byte, lsto e: mov 20h,#00000001 b (b = binario)

ou

setb OOh

tem a mesmo efeito, pois as duas estao fazendo 0 bit OOh ir para nivel loqico "1". Isto, no infcio, nao 8 tao simples. Desenhe 0 byte "20h", seus bits e enderecos e entenda as instrucoes acima com relacao ao desenho feito par voce.

3. Posicoes da RAM entre 30h e 7Fh: Sao grupos de registradores "sem apelidos" e s6 enderecaveis por byte, isto 8, nao ha os enderegos dos bits de cada byte destes.

................... "", .. , ,, '" ", '" '" ", gg~~f ~ .. E.~.'!!(!i~ ,~9.?L? , '" " ". ". ". ~Jf~~.'.:.

4. Revendo mais uma vez 0 "problema" do Stack Pointer (SP): Veja a figura 2.4.c e localize 0 SP. E um "apontador" para uma posigao de mem6ria da RAM interna, da qual se cria uma pilha de enderecos de retorno de sub-romas.

a) Quando se liga a maquina e/ou se da urn RESET, 0 valor dele aponta para a posicao 07h, que e 0 "RT' do banco 0 (vide figura 2.4.d);

b) Quando se utilizam as mstrucoes de pilha (vide item 2.4.2.7), 0 SP e primeiro incrementado e depois sao guardados val ores nesta nova posicao, is to e, de 08h para cima;

c) Se quisermos usar os bancos 1, etc para certas fungoes que nao as de pilha, devemos realocar 0 SP para valor fora destes bancos, senao 0 SP ira "invadindo" estas posicoes se ja as usamos para outras fungoes.

Neste caso, a primeira coisa a fazer e mudar 0 valor do SP, por exemplo: mov SP,#1Fh => carrega valores da pilha a partir de 20h (=1 Fh+1). Se quisermos usar as areas de bit enderecavel que comecarn em 20h, podemos fazer, por exemplo: mov SP,#2Fh => carrega valores da pilha a partir de posicoes que nao nos atrapa'haraol (no caso, 2Fh + 1 = 30h; logo 0 SP apontara para formar pilha de 30h em diante).

Vide tarnbem 0 item 5.2.3, instrucoes PUSH e POP, para entender melhor sobre 0 SP.

2.5· Exercicios de Fixa~ao

1. Quais sao os recursos basicos existentes na famflia 8051? Procure sites da Internet (vide Bibliografia) sobre a enorme variedade de opgoes disponfveis, principalmente da Philips e Atmel. Liste os opcionais que nao foram descritos neste livro. 0 que 0 80C552 tem a mais que os outros aqui citados?

2. Desenhe, a mao livre, 0 basico da arquitetura interna do 8051 em um papel, s6 consultando 0 livro no caso de dovidas. Detalhe tambem a liga9ao basica de uma RAM e EPROM externas, no caso do 8031.

3. Existe, no mercado, urn Mc da linha do 8051 s6 de 16 bits (vide: 80C51 XA da Philips ou MCS251 da Intel nos sites desses fabricantes) .. Quais sao as diterencas bascas com relacao a famflia 8051?

4. Descreva 0 port 3, quando ele e usado para cornunlcacao com memoria externa e com peritericos. Esse port pode ser usado, parcial mente, com os periterlcos e ao mesmo tempo, com os pinos restantes como port normal?

5. Qual 0 motivo basico de 0 port PO ser multiplexado entre fungoes de 'Endereco Menos Significativo" e "Dados"? Desenhe, a mao livre, um chip de 40 pinos da familia 8051 (08031, porexemplo), sua respectiva pinagem e funcao de cad a pino. Para que serve 0 pino ALE?

1ij~§J~ ~!~~~.~~~.t!.~!~.~~!.~.~?.~.e~_t~i~~.~~ ..

6. 0 pino PSEN serve tarnbem, tradicionalmente, para acionar outra mem6ria alern da EPROM? Para que se prestam os pinos RD e WR do port P3? Eles enviam intorrnacao ou recebem lntormacao? Como funcionam?

7. Pesquise sabre 0 80550 na Internet (Philips). Que periterlcos ele tem, internamente, a mais que 0 8051? Quando se utflizam as canais de NO, a port Pi e comprometido? Eu posso dividir este port Pi entre algumas entradas de ND e as restantes, como port I/O normal?

8, Par que, para pequenas quantidades de produgao, nao se utiliza 0 chip 8051? Por que nao se utiliza 0 chip 8051 para construir prot6tipos? (vide tabela 2.1 e/ou pesquise na Internet).

9. Os pinos do port P3 (P3.2 e P3 .. 3), quando utilizados para interrupcao, tornarn-se pinos de entrada ou de saida? Por que?

10. Os pinos do port P3 (P3.4 e P3.5), quando utflizados para contagem externa, tornam-se pinos de entrada ou safda? Por que?

11. Os pinos do port P3 (P3.0 e P3.1), quandoutilizados para comunicacao serial, tornam-se respectivamente, de que fungao?

12. Desenhe, a mao livre, 0 esquema completo de ligagao de uma EPROM de 32 Kbytes em um 8031. Quantos pinos do port P2 foram utilizados? Por que?

13. Qual a aplicagao do pine EA? Como ele fica ligado quando se utiliza 0 chip 80317 Na familia 8052, ha uma "ROM interna ao chip" que tem gravado de fabrica um interpretador BASIC. Qual sua opiniao sabre a ligayao do pin a EA neste caso?

14. Qual 80 maximo de tensao de alrnernacao que voce pode aplicar nessa familia de Mc? (Pesquise em manual ou na Internet: 8051 Absolute Maximum Ratings or DC Electrical Characteristics).

15. 0 pino EA 8 chamado nos chips com EPROM interna (8751, 8752 e 87550) de EAWpp. 0 "Vpp" representa 0 pino de proqrarnacao da EPROM interna nestes casos. Qual 8 0 valor tipico de tensao aplicada em Vpp? Pesquise como se programa uma EPROM interna desses chips (vide, por exemplo, manual lntel 8051 (MCS51) EPROM Characteristics).

16. Qual e a capacidade maxima de enderecamento de EPROM e RAM externa na familia 8051? E de RAM interna?

17. Descreva os registradores intitulados banco 0 a banco 3. Explique a problernalica dos apelidos RO a R7 com relacao aos bancos 0 a 3. Desenhe, a mao livre, esses bancos, seus enderecos lnlciais e finais absolutos e seus apelidos. Esses registradores sao de uso geral ou especial?

18. Os regislradores de fungoes especiais (Special Function Register - SFR) tambem sao volateis? Isto 8, quando desligo 0 Vcc do chip, eles perdem totalmente a memoria?

Das könnte Ihnen auch gefallen