Você está na página 1de 13

Introdução à prática laboratorial com o Z80

5. INTRODUÇÃO À PRÁTICA LABORATORIAL COM O Z80

Este capítulo efectua a apresentação de um pequeno sistema de apoio ao ensino


do microprocessador Z80, que deverá ser utilizado para consolidar a apreensão
dos conceitos ministrados nos capítulos anteriores, bem como para estimular no
leitor o interesse pelo desenvolvimento de pequenas aplicações, proporcionando-
lhe para tal um sistema mínimo que permita a respectiva implementação.

5.1 REQUISITOS E MODELO FUNCIONAL DE UM SISTEMA MÍNIMO

O sistema apresentado foi desenvolvido para verificar o seguinte conjunto de


requisitos principais:

1. Ser suficientemente simples para que se torne possível efectuar neste capítulo
uma apresentação exaustiva, garantindo que mesmo utilizadores com
conhecimentos básicos consigam compreender em pormenor todos os aspectos
da respectiva implementação.

2. Proporcionar entradas e saídas em quantidade e variedade suficiente para que


se possa idealizar um conjunto relevante e interessante de exemplos de
aplicação, por forma a estimular o interesse pela prática e a motivar a
compreensão dos assuntos já anteriormente estudados.

3. Empregar componentes generalizadamente acessíveis e de baixo custo, de


modo a possibilitar uma simples e rápida replicação do sistema.

Mantendo como linha orientadora este conjunto de requisitos, adoptou-se como


modelo funcional a seguinte especificação:

1. O sistema deve dispor de uma memória de leitura / escrita não volátil


(NVRAM), de modo a que a carga do programa a executar se possa efectuar
através da seguinte sequência de operações: com a alimentação desligada,
transferir a memória para um outro sistema que disponha de comunicação
série e que permita carregar o programa a executar a partir do computador
onde se efectuou a geração do código objecto; de novo com a alimentação
desligada, transferir para o sistema do Z80 a memória com o programa
pretendido; ligar a alimentação para executar o programa.

2. Deve existir uma saída analógica com excursão máxima entre -5 V e +5 V,


podendo o microprocessador controlar o valor presente na saída analógica

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.1


Introdução à prática laboratorial com o Z80

através de uma operação de escrita num porto de saída. Os valores extremos


obtêm-se através da escrita dos valores 00H e FFH (respectivamente para -5
V e +5 V), devendo o valor analógico na saída crescer “linearmente” com o
código escrito.

3. Devem existir quatro entradas digitais, cujo estado possa ser lido pelo
microprocessador através de uma operação de leitura de um porto de entrada.

4. Devem existir quatro saídas digitais, cujo estado possa ser controlado pelo
microprocessador através de uma operação de escrita num porto de saída.

5. A descodificação de sistema deve observar a alocação de endereços


apresentada na tabela 5.1:

RD WR MREQ IORQ A15 A7 A6 Acesso seleccionado


0 (1) 1 (0) 0 1 0 X X Memória†
- - 1 0 X 0 0 -
1 0 1 0 X 0 1 Saída analógica
1 0 1 0 X 1 0 Saídas digitais
0 1 1 0 X 1 1 Entradas digitais
Tabela 5.1: Mapa de descodificação especificado para o sistema mínimo pretendido.

Repare-se que a descodificação das entradas e saídas está condicionada ao tipo


de acesso (leitura ou escrita), uma vez que as operações “ilegais” poderiam
provocar situações de conflito no barramento de dados. A título de exemplo, e se
esta precaução não tivesse sido tomada, a operação de escrita nas entradas
digitais faria com que quer o processador (a efectuar um ciclo de escrita), quer o
componente que permite passar para o barramento de dados o valor das entradas
(a responder à descodificação do respectivo endereço), estivessem
simultaneamente a forçar valores lógicos (eventualmente diferentes) nas mesmas
linhas.

Refira-se que a especificação deste modelo funcional permite desde logo que se
desenvolvam programas de aplicação, uma vez que estão já disponíveis todos os
elementos necessários para este fim. A título de exemplo, e se se pretender gerar
uma forma de onda em dente de serra na saída analógica, aproveitando a

† A memória tanto pode ser seleccionada com WR=0 e RD=1 (ciclo de escrita) como com
WR=1 e RD=0 (ciclo de leitura).

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.2


Introdução à prática laboratorial com o Z80

máxima excursão possível, seria desde já possível escrever um pequeno


programa como o que se apresenta a seguir:

inicio .org 0h ; posiciona o codigo a partir de 0000

saida .equ 40h ; endereco do conversor D/A

inicio ld a,$00 ; comeca com o valor minimo


ciclo out (saida),a ; escreve no D/A (saida analogica)
inc a ; incrementa o valor para o D/A
jp ciclo ; repete o ciclo escreve / incrementa

.end

Chama-se em particular a atenção do leitor para a importância de se chegar a


uma cuidada identificação de requisitos quando nos confrontamos com a
necessidade de desenvolver uma dada aplicação, a que se deverá seguir uma
caracterização em pormenor do modelo funcional do sistema pretendido. Quando
convenientemente levadas a cabo, estas duas etapas facilitam largamente a
tarefa de implementação do sistema, permitindo ao mesmo tempo iniciar em
paralelo o desenvolvimento do hardware e dos programas que constituirão a
aplicação pretendida.

5.2 IMPLEMENTAÇÃO

A partir do modelo funcional descrito na secção anterior torna-se relativamente


simples efectuar a respectiva implementação, que deverá processar-se através de
um conjunto de passos que incluem a definição do diagrama de blocos global
(onde se representam os principais componentes que deverão estar presentes), a
descodificação do sistema, a passagem do diagrama de blocos para um diagrama
esquemático detalhado e finalmente a concepção da carta de circuito impresso
que permita a montagem do sistema. Cada uma destas etapas será agora
analisada em detalhe.

5.2.1 Diagrama de blocos e selecção dos componentes

A partir do modelo funcional anteriormente definido torna-se relativamente


simples chegar ao diagrama de blocos representado na figura 5.1.

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.3


Introdução à prática laboratorial com o Z80

barramento de dados
Z80
saída
Memória Conversor
barramentos analógica
D/A
de endereços e
de controlo

selecção de selecção de
acesso acesso

entradas digitais
Descodificação
saídas digitais
e entrada / saída paralela

Figura 5.1: Diagrama de blocos do sistema mínimo pretendido.

Repare-se que esta representação não inclui quaisquer aspectos de pormenor,


embora permita identificar com facilidade quais os tipos de componentes que
deverão estar presentes, bem como a interdependência entre os vários blocos.

5.2.2 A descodificação do sistema (e implementação da E/S digital)

Embora a descodificação do sistema pudesse ser feita com circuitos SSI/MSI da


gama comercial corrente (tipo TTL), optou-se neste caso pela utilização de um
dispositivo lógico programável (DLP) com recursos internos (arquitectura e
número de macro-células) adequados aos requisitos da aplicação. Para além dos
aspectos didácticos inerentes à utilização de DLPs, que aliás constituem uma
solução comum para este tipo de aplicação, esta opção permitiu também
implementar no mesmo componente os blocos necessários às entradas e saídas
digitais pretendidas, contribuindo deste modo para minimizar o número de
circuitos integrados empregues e a área de circuito impresso necessária.

No sentido de não expandir a apresentação para áreas que se afastam do seu


tema central, omitem-se nesta secção a descrição da arquitectura interna do DLP
seleccionado (o 22V10) e dos comandos de simulação lógica que permitiram
efectuar a validação de projecto. As respectivas equações de funcionamento, que
definem a geração dos sinais de descodificação (de acordo com a tabela 5.1) e a
implementação das entradas e saídas digitais, merecem no entanto uma análise
em pormenor:

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.4


Introdução à prática laboratorial com o Z80

/MEM_CS = /MREQ*IORQ*/A15
DA_CS = MREQ*/IORQ*/A7*A6*/WR*RD

OUT0 := (MREQ*/IORQ*A7*/A6*/WR*RD)*D0 + /(MREQ*/IORQ*A7*/A6*/WR*RD)*OUT0


OUT1 := (MREQ*/IORQ*A7*/A6*/WR*RD)*D1 + /(MREQ*/IORQ*A7*/A6*/WR*RD)*OUT1
OUT2 := (MREQ*/IORQ*A7*/A6*/WR*RD)*D2 + /(MREQ*/IORQ*A7*/A6*/WR*RD)*OUT2
OUT3 := (MREQ*/IORQ*A7*/A6*/WR*RD)*D3 + /(MREQ*/IORQ*A7*/A6*/WR*RD)*OUT3

D0.TRST = MREQ*/IORQ*A7*A6*WR*/RD
D1.TRST = MREQ*/IORQ*A7*A6*WR*/RD
D2.TRST = MREQ*/IORQ*A7*A6*WR*/RD
D3.TRST = MREQ*/IORQ*A7*A6*WR*/RD
D0 = KEY0
D1 = KEY1
D2 = KEY2
D3 = KEY3

A geração do sinal de descodificação da memória (/MEM_CS) não está


condicionada aos sinais de /WR e /RD, uma vez que estes sinais vão ligar
directamente aos pinos correspondentes neste componente.

Uma das vantagens da utilização de DLPs consiste precisamente em permitir ao


projectista efectuar uma especificação textual (através de uma linguagem
descritiva com vários níveis possíveis de abstracção) da funcionalidade
pretendida para o circuito, sem necessitar portanto de se preocupar com a sua
transposição para uma representação por diagrama esquemático. No entanto, e
para os leitores menos familiarizados com a utilização desta tecnologia, poderá
ser útil que se analise brevemente a relação entre cada bloco de equações e as
estruturas dos circuitos que elas implicitamente sugerem (o que não significa
necessariamente que a sua implementação nos DLPs siga os modelos que serão
agora apresentados).

1. A descodificação do acesso à memória e ao conversor D/A, através das


equações correspondentes aos sinais /MEM_CS e DA_CS, indica uma
estrutura do tipo ilustrado na figura 5.2:

Figura 5.2: “Equivalente” dos sinais de descodificação da memória e do conversor D/A.

(os sinais estarão negados nas entradas ou nas saídas, quando forem activos
em zero)

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.5


Introdução à prática laboratorial com o Z80

2. A implementação das saídas digitais, que memorizam os valores escritos pelo


microprocessador, sugere uma estrutura como a que se ilustra na figura 5.3:

mux
0 OUTi
Di D
1
elemento de memória
condição de selecção de Di: (flip-flop) do tipo D
MREQ*/IORQ*A7*/A6*/WR*RD relógio do
sistema

Figura 5.3: “Equivalente” das saídas digitais.

3. A implementação das entradas digitais, cujo valor deve aparecer no


barramento de dados apenas quando se efectua a respectiva leitura, sugere a
utilização de um dispositivo com terceiro estado controlado pelas condições de
selecção, como se apresenta na figura 5.4:

condição de selecção:
MREQ*/IORQ*A7*A6*WR*/RD

KEYi Di

Figura 5.4: “Equivalente” das entradas digitais.

A simulação efectuada produziu as formas de onda da figura 5.5, onde está


representada a evolução temporal das saídas de selecção (/MEM_CS e DA_CS, na
figura 5.5 (a)) e do bit 2 das E/S digitais (D2, OUT2 e KEY2, na figura 5.5 (b)).

(a) Saídas de selecção (/MEM_CS e DA_CS).

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.6


Introdução à prática laboratorial com o Z80

(b) Bit 2 das E/S digitais (D2, OUT2, KEY2).

Figura 5.5: Resultados da simulação do bloco de descodificação e E/S digital.

5.2.3 Diagrama esquemático

O diagrama esquemático do sistema desenvolvido está representado na figura


5.6, onde a conectividade entre os pinos pertencentes à mesma ligação é
identificada pela utilização de um nome comum (D0, por exemplo, é o nome da
ligação que une o pino 14 do Z80, o pino 11 da RAM, o pino 20 do DLP e o pino 3
do 373 que memoriza os valores escritos no D/A).

Repare-se em particular que houve o cuidado de garantir que nenhuma entrada


não usada ficasse a flutuar, como se pode verificar no caso dos dois inversores
que sobram no 74HCT14 e dos vários sinais do barramento de controlo do Z80
(/WAIT, /BUSRQ, /INT e /NMI). Todos estes sinais têm resistências para VCC,
estando alguns deles disponíveis exteriormente através de um conector que
inclui também outros sinais com interesse para vários exercícios práticos de
aplicação.

Refira-se ainda a presença de vários condensadores de desacopulamento entre os


pinos de VCC e GND (100 nF), que têm por objectivo responder aos picos de
corrente pedidos pelos circuitos integrados, minimizando as flutuações na tensão
de alimentação.

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.7


Introdução à prática laboratorial com o Z80

U1
27 30 A0 U2 U3
M1 A0
31 A1 A0 10 11 D0 CLK 1 23 D3
A1 A0 Q0 I1/CLK O1
/MREQ 19 32 A2 A1 9 12 D1 /MREQ 2 22 D2 VCC
MREQ A2 A1 Q1 I2 O2
/IOREQ 20 33 A3 A2 8 13 D2 /IOREQ 3 21 D1
IORQ A3 A2 Q2 I3 O3
/WR 22 34 A4 A3 7 15 D3 A15 4 20 D0
WR A4 A3 Q3 I4 O4
/RD 21 35 A5 A4 6 16 D4 A7 5 19 OUT3 1
RD A5 A4 Q4 I5 O5
VCC 36 A6 A5 5 17 D5 A6 6 18 OUT2 C3
A6 A5 Q5 I6 O6
28 37 A7 A6 4 18 D6 KEY0 7 17 OUT1 2 100n
REFSH A7 A6 Q6 I7 O7
R1 2K2 38 A8 A7 3 19 D7 KEY1 8 16 OUT0
A8 A7 Q7 I8 O8
1 2 18 39 A9 A8 25 KEY2 9 15 DA_CS
HALT A9 A8 I9 O9
R2 2K2 40 A10 A9 24 KEY3 10 14 /M_CS
A10 A9 I10 O10
1 2 24 1 A11 A10 21 /WR 11
WAIT A11 A10 I11
R3 2K2 2 A12 A11 23 VCC /RD 13
A12 A11 I12
1 2 /INT 16 3 A13 A12 2
INT A13 A12
1 2 /NMI 17 4 A14 A13 26 22V10 JP1
NMI A14 A13
R4 2K2 5 A15 A14 1 1 GND OUT0
A15 A14 1 2
/RESET 26 C2 VCC OUT1
RESET 3 4
R5 2K2 14 D0 /M_CS 20 2 100n Q0 OUT2
D0 CE 5 6
1 2 25 15 D1 /WR 27 Q1 OUT3
BUSRQ D1 WE 7 8
23 12 D2 /RD 22 Q2 KEY0
BUSAK D2 OE 9 10
8 D3 Q3 KEY1
D3 11 12
VCC CLK 6 7 D4 DS1230Y Q4 KEY2
CLK D4 13 14
9 D5 VCC Q5 KEY3
D5 15 16
10 D6 R10 Q6 /NMI
D6 17 18
1 13 D7 1 2 Q7 /INT
D7 19 20
C1 1
2K49
2 100n Z80 C5 CONECTOR
2 100n VEE
Y1
1 2
1 U6
3 4
4MHz U5
U7A U7B
U4A U4F D0 3 2 Q0 12 4 2 J1
D0 Q0 B8 V IOUT SAIDA
D1 4 5 Q1 11 + 1 5
D1 Q1 B7
1 2 13 12 CLK D2 7 6 Q2 10 3 7 1
D2 Q2 B6
D3 8 9 Q3 9 2 6
D3 Q3 B5 IOUT TL082
1 D4 13 12 Q4 8
D4 Q4 B4
C8 74HCT14 74HCT14 D5 14 15 Q5 7 8 TL082 2
D5 Q5 B3
2 100p R13 R14 D6 17 16 Q6 6
D6 Q6 B2
1 2 1 2 D7 18 19 Q7 5 16 R8
D7 Q7 B1 COMP
VDD 1 2
1K 1K 1 14 1
OC VR+
DA_CS 11 C7 1 10K
G V
VCC VCC 15 1 2 100n R9
VR- - VLC
74LS373 10K
1 1 DAC0800 VCC
1 2 R11 R12 3 VEE 2
R16 D1 2K49 4K99
10K 1N4148 1 1
U4C U4E 2 2 C6 VCC D4
S1 2 1 VEE 2 100n LED_2
1 2 5 6 11 10 /RESET
VCC
RESET
1 2
R15 1 74HCT14 74HCT14 1 VCC
1K C9 R28
2 4u7 390R
2 VCC VCC 1
2 D5
VCC VCC VCC VCC R25 1 LED_3
1 1 OUT2 1 2 Q1
D2 D3 BC547
VCC U4B VCC U4D 1 1 1 1 LED_0 LED_1 10K 3 2
R17 R18 R19 R20 R21 R22 1
1 2 3 4 1 2 9 8 2K2 2K2 2K2 2K2 R27
2 2 390R
2K2 2K2 2 2 2 2
74HCT14 74HCT14 KEY0 KEY1 KEY2 KEY3 1 1 2
VCC R23 R24 R26 1
390R 390R OUT3 1 2 Q2
2 2 2 2
JP2 BC547
+5V VCC 1 S2 S3 S4 S5 2 2 10K 3
1 VCC
+12V C4 KEY0 KEY1 KEY2 KEY3 OUT0 OUT1
2 VDD
-12V 2 100n
3 VEE
GND
4
1 1 1 1 SITEMA Z80 - SD2
ALIMENTACAO
Size Document Number REV
A JMF / HCM 1.0
Date: December 12, 1995 Sheet 1 of 1

Figura 5.6: Diagrama esquemático do sistema mínimo desenvolvido.

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.8


Introdução à prática laboratorial com o Z80

5.2.4 Disposição dos componentes e circuito impresso final

Apresenta-se na figura 5.7 uma fotografia do respectivo circuito impresso, já


completamente populado. Todos os componentes se encontram montados sobre o
mesmo lado da carta, pelo que é fácil de estabelecer a sua associação com o
diagrama esquemático apresentado anteriormente na figura 5.6. O conector de
alimentação encontra-se na parte inferior esquerda, situando-se na margem
direita o conector com os sinais disponíveis para o exterior (o conector para cabo
plano com 20 pinos) e a ficha BNC que contem a saída analógica.

Figura 5.7: Fotografia da carta de circuito impresso.

5.3 EXEMPLO DE APLICAÇÃO

O exemplo de aplicação descrito nesta secção consiste no programa apresentado


já anteriormente na secção 5.1, que efectua a geração de uma onda em dente de
serra na saída analógica. A geração do respectivo código objecto efectua-se
invocando um cross-assembler que toma por entrada o código fonte então
apresentado, podendo para o caso do TASM esta invocação fazer-se através do
seguinte comando:

tasm -80 -f00 -c -h -s -b serra.asm

(os parâmetros apresentados têm o seguinte significado: -80: usa a tabela


correspondente ao microprocessador Z80; -f00: preenche o espaço de memória não
usado com 00h; -c: escreve o ficheiro objecto como um único bloco; -h: produz uma
tabela com o código gerado em hexadecimal; -s: produz um ficheiro com uma

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.9


Introdução à prática laboratorial com o Z80

tabela de símbolos; -b: produz o código objecto em formato binário; serra.asm:


nome do ficheiro que contem o código fonte)

A execução deste comando produz a correspondência que se apresenta a seguir


entre o código simbólico (assembly) e o respectivo código objecto. Repare-se que o
código objecto ocupa 8 posições de memória (8 bytes), de 0000 até 0007, cujo
conteúdo está também indicado (repare-se que o argumento da instrução de salto
surge na memória com o byte menos significativo em primeiro lugar, a que se
segue o byte mais significativo).

0001 0000
0002 0000 inicio .org 0h
0003 0000
0004 0000 saida .equ 40h
0005 0000
0006 0000 3E 00 inicio ld a,$00
0007 0002 D3 40 ciclo out (saida),a
0008 0004 3C inc a
0009 0005 C3 02 00 jp ciclo
0010 0008
0011 0008 .end
0012 0008

ADDR 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-----------------------------------------------------
0000 3E 00 D3 40 3C C3 02 00 00 00 00 00 00 00 00 00

tasm: Number of errors = 0

A execução deste programa será feita colocando no sistema uma memória de


leitura / escrita não volátil, com o respectivo código previamente memorizado, e
dará origem na saída analógica à forma de onda que se apresenta na figura 5.8.

Figura 5.8: Forma de onda em dente de serra gerada pelo código apresentado acima.

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.10


Introdução à prática laboratorial com o Z80

Sendo a frequência da forma de onda gerada de 625 Hz, verifique que o conjunto
de instruções que lhe dá origem, executado à frequência de relógio de 4 MHz,
conduz efectivamente aquele valor de frequência para a onda em dente de serra.

No sentido de consolidar a compreensão dos elementos apresentados nesta


secção, recomenda-se ao leitor que procure identificar as modificações a
introduzir para proporcionar a funcionalidade referida nos pontos seguintes:

1. Dispor da possibilidade de seleccionar uma das seguintes formas de onda:


dente de serra, triangular, rectangular, sinusoidal.

2. Permitir o ajuste da frequência da forma de onda seleccionada.

3. Permitir o ajuste da componente contínua e da amplitude pico-a-pico da forma


de onda seleccionada.

5.4 OUTRAS FONTES DE INFORMAÇÃO

Tratando-se de um capítulo que apresenta questões essencialmente relacionadas


com aspectos práticos de aplicação, as fontes de informação adicionais mais
recomendáveis neste contexto serão naturalmente os catálogos e manuais que
apresentam as folhas de características dos vários componentes empregues, e
que frequentemente são complementadas com exemplos de aplicação. O catálogo
da Zilog com os componentes da família do Z80, o da Dallas Semiconductor sobre
as memórias não voláteis, e vários outros sobre DLPs, circuitos TTL / HCT,
conversores D/A e amplificadores operacionais, são exemplos que deverão ser
consultados para realizar qualquer projecto do tipo apresentado neste capítulo.

A consulta ao manual que acompanhe o cross-assembler seleccionado é também


naturalmente necessária, já que é necessário conhecer as suas regras sintácticas
específicas. Para o caso do TASM recomenda-se a consulta a Thomas N.
Anderson, TASM User’s Manual, Versão 2.8, Speech Technology Inc., 1990.

Finalmente, e atendendo à enorme variedade de fontes de informação disponíveis


via Internet, recomendam-se ainda como locais privilegiados de consulta os
seguintes endereços no WWW:

1. http://www.yahoo.com/text/Computers_and_Internet/Hardware/Microprocessors,
que contem uma grande quantidade de apontadores para outros locais do
WWW relacionados com os microprocessadores e microcontroladores. A este
respeito consulte-se também http://www.cera2.com/micro.htm.

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.11


Introdução à prática laboratorial com o Z80

2. http://infopad.eecs.berkeley.edu/CIC/archive/cpu_history.html, cujo tema


principal é Great Microprocessors of the Past and Present.

3. http://www.ti.com/, para informações relativas aos produtos da Texas


Instruments (a generalidade dos fabricantes dispõe igualmente de páginas
WWW que permitem o acesso a informações técnicas dos mais variados tipos).

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.12


Introdução à prática laboratorial com o Z80

5. INTRODUÇÃO À PRÁTICA LABORATORIAL COM O Z80 ...................................5.1

5.1 Requisitos e modelo funcional de um sistema mínimo............................... 5.1


5.2 Implementação ............................................................................................ 5.3
5.2.1 Diagrama de blocos e selecção dos componentes.................................. 5.3
5.2.2 A descodificação do sistema (e implementação da E/S digital)............ 5.4
5.2.3 Diagrama esquemático.......................................................................... 5.7
5.2.4 Disposição dos componentes e circuito impresso final......................... 5.9
5.3 Exemplo de aplicação................................................................................... 5.9
5.4 Outras fontes de informação ..................................................................... 5.11

 J. M. Martins Ferreira - Faculdade de Engenharia da UP (DEEC) 5.13

Você também pode gostar