Академический Документы
Профессиональный Документы
Культура Документы
MCS51
Curitiba, 2002
SUMRIO
Sistemas Microprocessados............................................................................. 2
Hardware ............................................................................................... 2
Software................................................................................................. 5
Microcontroladores ........................................................................................... 7
Bibliografia......................................................................................................86
Anexos
Conjunto de Instrues MCS51
Manual da Placa P51
Manual do Paulmon
Tutoriais
SISTEMAS MICROPROCESSADOS
Sistemas microprocessados dividem-se basicamente em hardware e
software. O hardware constitudo dos componentes fsicos do sistema
(dispositivos eletrnicos) e o software constitudo dos componentes lgicos
(programas e dados). Chama-se de firmware o conjunto de programas
gravados em ROM, especficos para o funcionamento de um determinado
sistema microprocessado.
HARDWARE
Principais Dispositivos de Hardware
Microprocessador (CPU): Constitui o bloco "inteligente" do sistema. Segue
uma seqncia de instrues previamente armazenadas, chamada de
programa. o responsvel pela execuo de operaes lgicas, aritmticas
e de controle.
Memria no-voltil (ROM, PROM, EPROM): Armazena a seqncia de
instrues do programa a ser executado.
Memria voltil (SRAM, DRAM): Armazena temporariamente os dados
relativos ao programa. Tambm pode armazenar programas de maneira
temporria.
Perifricos (interface paralela, interface serial, temporizadores / contadores
de eventos, entre outros): So os responsveis pela comunicao com o
mundo externo ao sistema (entrada e sada de dados).
Decodificador de endereos: Seleciona o dispositivo a ser acionado pelo
microprocessador, auxiliando o microprocessador no gerenciamento do
barramento de dados.
Circuito de reset: o responsvel pela inicializao do sistema.
Circuito de clock: Fornece a cadncia (velocidade) de execuo das
instrues do programa pelo microprocessador.
Circuito
de Reset Barramento de Dados
Memria Memria
de Programa De Dados Perifricos E/S
(ROM) (RAM)
Micropro-
Interrupes cessador
(CPU)
4
SOFTWARE
Principais Conceitos de Software
Sistemas microprocessados operam segundo a execuo seqencial de
instrues e operandos armazenados em memria. A essa lista de instrues
d-se o nome de programa armazenado. Como a execuo do programa
seqencial, apenas uma instruo executada a cada instante de tempo.
Chama-se de algoritmo uma seqncia de operaes simples para se realizar
uma determinada tarefa mais complexa.
Uma das formas mais comuns e acessveis de se representar um
algoritmo o fluxograma, uma tcnica que consiste em representar na forma
de diagrama a seqncia das operaes e decises a serem realizadas para a
sua execuo. O grau de refinamento das operaes representadas em um
fluxograma depende em grande parte dos recursos oferecidos pela linguagem
de programao a ser utilizada.
INCIO
Posicionar escada
Acionar o interruptor
Subir na escada
Sim
A lmpada acendeu?
Retirar lmpada antiga
No
FIM
Ferramentas de Desenvolvimento
Alm dos aplicativos necessrios para o desenvolvimento de programas
tambm so necessrias ferramentas para a validao do funcionamento do
sistema como um todo (hardware e software). Para essa finalidade existem
programas simuladores de hardware e software, programas monitores
(debuggers), emuladores de memrias ROM e RAM, e emuladores de
microprocessadores e microcontroladores, podendo estes ltimos operar em
tempo real ou no.
Famlias de Microcontroladores
MCS51 Intel e outros fabricantes
M68HC11 Motorola
Z8 Zilog
COP8 National
PIC Microchip
AVR - Atmel
Modelos
Os microcontroladores da famlia MCS51 possuem internamente ROM
(memria de programa) e RAM (memria de dados); temporizadores /
contadores de eventos; controlador de interrupes; interfaces de entrada /
sada de 8 bits e interface serial sncrona / assncrona. Os principais modelos
so:
8031 sem ROM (ROMLESS), 128 bytes de RAM e 2 T/C
8051 com 4KB de ROM, 128 bytes de RAM e 2 T/C
8751 com 4KB de EPROM, 128 bytes de RAM e 2 T/C
8032 sem ROM (ROMLESS), 256 bytes de RAM e 3 T/C
8052 com 8KB de ROM, 256 bytes de RAM e 3 T/C
8752 - com 8KB de EPROM, 256 bytes de RAM e 3 T/C
Variaes
80C31, 80C32, 80C51 e 80C52 verses CMOS, incluindo modos de baixo
consumo de energia
80LV31, 80LV32, 80LV51 e 80LV52 verses low-voltage (ISSI)
89C51 e 89C52 verses com memria Flash reprogramvel (Atmel, ISSI,
Philips)
89C1051, 89C2051 e 89C4051 verses com memria Flash
reprogramvel, comparadores analgicos e invlucro reduzido (Atmel)
80C320 verso com clock otimizado (trs vezes mais veloz), capaz de
operar em at 33MHz (Dallas Semiconductor)
C505L verso com 32KB de ROM, 512 bytes de RAM, conversor A/D de
10 bits e interface para LCD (Infineon Technologies)
P51XA-G3, P51XA-H3 e P51XAS3 verses com arquitetura de 16 bits
(Philips)
AT89C51 (DIP40)
AT89C1051 (DIP20)
CPU
MCS51 Barramento de Dados Interno
EA\
RD\
ALE
WR\
RST
INT0\
INT1\
PSEN\
12
ORGANIZAO DA MEMRIA
O 8051 acessa as memrias de programa e dados atravs de sinais de
controle diferentes, resultando em mapas de memria separados para
programas e dados.
Memria de Programa
EA\=1 EA\=0
0000H 0000H
ROM
INTERNA PSEN\=1
0FFFH
1000H
ROM
PSEN\=0
EXTERNA
ROM
PSEN\=0
EXTERNA
FFFFH FFFFH
Memria de Dados
00H 0000H
BANCOS DE
REGISTROS
1FH
00H RD\
20H
REGISTROS
RAM RAM
ENDEREVEIS
INTERNA EXTERNA
POR BIT
7FH 2FH
WR\
80H 30H
REGISTROS RAM DE
ESPECIAIS USO GERAL
FFH 7FH FFFFH
PC Program Counter
Contador de Programa: indica o endereo da prxima instruo a ser
executada (16 bits).
CLOCK
O 8051 possui um oscilador interno destinado a gerar o sinal de clock do
sistema. Pode-se fazer uso de um cristal oscilador na freqncia de operao
desejada, conectado-o aos terminais XTAL1 e XTAL2, juntamente com dois
capacitores de realimentao conectados ao terra do circuito.
Para fazer uso de um circuito de clock externo ao 8051, basta conectar o
terminal XTAL1 ao potencial de terra do circuito (GND) e aplicar o sinal externo
ao terminal XTAL2. Dessa maneira o sinal de clock externo ir diretamente ao
circuito de temporizao e controle do microcontrolador.
A freqncia de operao do 8051 pode chegar a um mximo de 8, 10
ou 12MHz conforme o modelo utilizado, embora existam atualmente tambm
verses que operam em at 24MHz (89C51) e 33MHz (80C320).
A freqncia de clock dividida internamente por 12 para a gerao dos
ciclos de mquina necessrios execuo das instrues. Sendo assim, os
ciclos de mquina do 8051 tm a durao de 12 ciclos de clock, embora em
algumas verses otimizadas (80C320) os ciclos de mquina durem apenas 4
ciclos de clock, sendo portanto 3 vezes mais velozes que a verso original.
D0-D7 D0-D7
CK
ALE
8051
A8-A15 A8-A15
OE\ OE\ WR\
PSEN\
RD\
WR\
ALE
PSEN\
ALE
PSEN\
RD\
A0-A7 A0-A7
Port 0 Dado Instr.
(Ri / DPL) (PCL)
ALE
PSEN\
WR\
A0-A7 A0-A7
Port 0 Dado Instr.
(Ri / DPL) (PCL)
Barramento de Dados
Buffer
Tri- Flip-
E0-E7 S0-S7
State Flops D
G1\ G2\ CK
RD\
WR\
Decod.
Endereos
1 1
X1
1 1 .0 5 9 2 MHz
C2 C3
C1 3 3 pF 3 3 pF
1 0 uF U1
2 19 18
2
XTAL1 XTAL2
9
RST
31 29
EA/ VPP PSEN 30
ALE/ PROG
P3 .0 10 39
P3 0 / RXD P0 0 / AD0 P0 .0
P3 .1 11 38
P3 1 / TXD P0 1 / AD1 P0 .1
P3 .2 12 37
P3 2 / INT0 P0 2 / AD2 P0 .2
P3 .3 13 36
P3 3 / INT1 P0 3 / AD3 P0 .3
P3 .4 14 35
P3 4 / T0 P0 4 / AD4 P0 .4
P3 .5 15 34
P3 5 / T1 P0 5 / AD5 P0 .5
P3 .6 16 33
P3 6 / WR P0 6 / AD6 P0 .6
P3 .7 17 32
P3 7 / RD P0 7 / AD7 P0 .7
1 21
3 P1 .0 P1 0 / T2 P2 0 / A8 P2 .0 3
2 22
P1 .1 P1 1 / T2 EX P2 1 / A9 P2 .1
3 23
P1 .2 P1 2 P2 2 / A1 0 P2 .2
4 24
P1 .3 P1 3 P2 3 / A1 1 P2 .3
5 25
P1 .4 P1 4 P2 4 / A1 2 P2 .4
6 26
P1 .5 P1 5 P2 5 / A1 3 P2 .5
7 27
P1 .6 P1 6 P2 6 / A1 4 P2 .6
8 28
P1 .7 P1 7 P2 7 / A1 5 P2 .7
AT8 9 C5 2
Tit le
SISTEMA MINIMO
4 Size Nu m b er Rev 4
A4 1 .0
X1
1 1
1 1 .0 5 9 2 MHz
C2 C3
3 3 pF 3 3 pF
U1
C1
1 0 uF 19 18
XTAL1 XTAL2
9 U2
RST
31 29 1
EA PSEN 30 11 OC
ALE C U3
2 P3 .0 10 39 D0 D0 3 2 A0 A0 10 11 D0
2
P3 0 / RXD P0 0 / AD0 1D 1Q A0 Q1
P3 .1 11 38 D1 D1 4 5 A1 A1 9 12 D1
P3 1 / TXD P0 1 / AD1 2D 2Q A1 Q2
P3 .2 12 37 D2 D2 7 6 A2 A2 8 13 D2
P3 2 / INT0 P0 2 / AD2 3D 3Q A2 Q3
P3 .3 13 36 D3 D3 8 9 A3 A3 7 15 D3
P3 3 / INT1 P0 3 / AD3 4D 4Q A3 Q4
P3 .4 14 35 D4 D4 13 12 A4 A4 6 16 D4
P3 4 / T0 P0 4 / AD4 5D 5Q A4 Q5
P3 .5 15 34 D5 D5 14 15 A5 A5 5 17 D5
P3 5 / T1 P0 5 / AD5 6D 6Q A5 Q6
P3 .6 16 33 D6 D6 17 16 A6 A6 4 18 D6
P3 6 / WR P0 6 / AD6 7D 7Q A6 Q7
P3 .7 17 32 D7 D7 18 19 A7 A7 3 19 D7
P3 7 / RD P0 7 / AD7 8D 8Q A7 Q8
A8 25
7 4 HC3 7 3 A8
1 21 A9 24
P1 .0 P1 0 / T2 P2 0 / A8 A9
2 22 A8 A1 0 21
P1 .1 P1 1 / T2 EX P2 1 / A9 A1 0
3 23 A9 A1 1 23
P1 .2 P1 2 P2 2 / A1 0 A1 1
4 24 A1 0 A1 2 2
P1 .3 P1 3 P2 3 / A1 1 A1 2
5 25 A1 1 A1 3 26
P1 .4 P1 4 P2 4 / A1 2 A1 3
6 26 A1 2 A1 4 27
P1 .5 P1 5 P2 5 / A1 3 A1 4
7 27 A1 3 A1 5 1
P1 .6 P1 6 P2 6 / A1 4 A1 5
8 28 A1 4
3 P1 .7 P1 7 P2 7 / A1 5 3
A1 5
8 0 C3 2
PSEN 22
G/ VPP
20
E
2 7 C5 1 2
Tit le
SISTEMA COM ROM EXTERNA
4 Size Nu m b er Rev 4
A4 1 .0
X1
1 1
1 1 .0 5 9 2 MHz
C2 C3
3 3 pF 3 3 pF
U1
C1
1 0 uF 19 18
XTAL1 XTAL2
9 U2
RST
31 29 1
EA/ VPP PSEN 30 11 OC
ALE/ PROG C U3
2 P3 .0 10 39 D0 D0 3 2 A0 A0 10 11 D0 2
P3 0 / RXD P0 0 / AD0 1D 1Q A0 D0
P3 .1 11 38 D1 D1 4 5 A1 A1 9 12 D1
P3 1 / TXD P0 1 / AD1 2D 2Q A1 D1
P3 .2 12 37 D2 D2 7 6 A2 A2 8 13 D2
P3 2 / INT0 P0 2 / AD2 3D 3Q A2 D2
P3 .3 13 36 D3 D3 8 9 A3 A3 7 15 D3
P3 3 / INT1 P0 3 / AD3 4D 4Q A3 D3
P3 .4 14 35 D4 D4 13 12 A4 A4 6 16 D4
P3 4 / T0 P0 4 / AD4 5D 5Q A4 D4
P3 .5 15 34 D5 D5 14 15 A5 A5 5 17 D5
P3 5 / T1 P0 5 / AD5 6D 6Q A5 D5
16 33 D6 D6 17 16 A6 A6 4 18 D6
P3 6 / WR P0 6 / AD6 7D 7Q A6 D6
17 32 D7 D7 18 19 A7 A7 3 19 D7
P3 7 / RD P0 7 / AD7 8D 8Q A7 D7
A8 25
7 4 HC3 7 3 A8
1 21 A9 24
P1 .0 P1 0 / T2 P2 0 / A8 A9
2 22 A8 A1 0 21
P1 .1 P1 1 / T2 EX P2 1 / A9 A1 0
3 23 A9 A1 1 23
P1 .2 P1 2 P2 2 / A1 0 A1 1
4 24 A1 0 A1 2 2
P1 .3 P1 3 P2 3 / A1 1 A1 2
5 25 A1 1 A1 3 26
P1 .4 P1 4 P2 4 / A1 2 A1 3
6 26 A1 2 A1 4 1
P1 .5 P1 5 P2 5 / A1 3 A1 4
7 27 A1 3
P1 .6 P1 6 P2 6 / A1 4
8 28 A1 4
P1 .7 P1 7 P2 7 / A1 5
3 A1 5 3
AT8 9 C5 2
20
CS
WR 27
WE
RD 22
OE
62256
Tit le
SISTEMA COM RAM EXTERNA
4 Size Nu m b er Rev 4
A4 1 .0
1 1
X1
1 1 .0 5 9 2 MHz
C2 C3
3 3 pF 3 3 pF
U1
C1
1 0 uF 19 18
XTAL1 XTAL2
9 U2
RST
31 29 1
EA PSEN 30 11 OC
ALE C U3
P3 .0 10 39 D0 D0 3 2 A0 A0 10 11 D0
P3 0 / RXD P0 0 / AD0 1D 1Q A0 Q1
P3 .1 11 38 D1 D1 4 5 A1 A1 9 12 D1
P3 1 / TXD P0 1 / AD1 2D 2Q A1 Q2
P3 .2 12 37 D2 D2 7 6 A2 A2 8 13 D2
P3 2 / INT0 P0 2 / AD2 3D 3Q A2 Q3
P3 .3 13 36 D3 D3 8 9 A3 A3 7 15 D3
P3 3 / INT1 P0 3 / AD3 4D 4Q A3 Q4
P3 .4 14 35 D4 D4 13 12 A4 A4 6 16 D4
2 P3 4 / T0 P0 4 / AD4 5D 5Q A4 Q5 2
P3 .5 15 34 D5 D5 14 15 A5 A5 5 17 D5
P3 5 / T1 P0 5 / AD5 6D 6Q A5 Q6
16 33 D6 D6 17 16 A6 A6 4 18 D6
P3 6 / WR P0 6 / AD6 7D 7Q A6 Q7
17 32 D7 D7 18 19 A7 A7 3 19 D7
P3 7 / RD P0 7 / AD7 8D 8Q A7 Q8
A8 25
7 4 HC3 7 3 A8
1 21 A9 24
P1 .0 P1 0 / T2 P2 0 / A8 A9
2 22 A8 A1 0 21
P1 .1 P1 1 / T2 EX P2 1 / A9 A1 0
3 23 A9 A1 1 23
P1 .2 P1 2 P2 2 / A1 0 A1 1
4 24 A1 0 A1 2 2
P1 .3 P1 3 P2 3 / A1 1 A1 2
5 25 A1 1 A1 3 26
P1 .4 P1 4 P2 4 / A1 2 A1 3
6 26 A1 2 A1 4 27
P1 .5 P1 5 P2 5 / A1 3 A1 4
7 27 A1 3 A1 5 1
P1 .6 P1 6 P2 6 / A1 4 A1 5
8 28 A1 4
P1 .7 P1 7 P2 7 / A1 5
A1 5
8 0 C3 2
PSEN 22
G/ VPP
20
E
2 7 C5 1 2
U4
A0 10 11 D0
A0 D0
A1 9 12 D1
A1 D1
3 A2 8 13 D2 3
A2 D2
A3 7 15 D3
A3 D3
A4 6 16 D4
A4 D4
A5 5 17 D5
A5 D5
A6 4 18 D6
A6 D6
A7 3 19 D7
A7 D7
A8 25
A8
A9 24
A9
A1 0 21
A1 0
A1 1 23
A1 1
A1 2 2
A1 2
A1 3 26
A1 3
A1 4 1
A1 4
20
CS
WR 27
WE
RD 22
OE
62256
4 4
Tit le
SISTEMA COM ROM E RAM EXTERNAS
Size Nu m b er Rev
A3 1 .0
1 1
X1
1 1 .0 5 9 2 MHz
C2 C3
3 3 pF 3 3 pF
U1
C1
1 0 uF 19 18
XTAL1 XTAL2
9 U2
RST
U4 :A
31 29 1
EA/ VPP PSEN 30 11 OC 1
ALE/ PROG C G
U5
P3 .0 10 39 D0 D0 3 2 A0 2 18 D0
P3 0 / RXD P0 0 / AD0 1D 1Q E0 A1 Y1
P3 .1 11 38 D1 D1 4 5 A1 4 16 D1 1
P3 1 / TXD P0 1 / AD1 2D 2Q E1 A2 Y2 CLR
P3 .2 12 37 D2 D2 7 6 A2 6 14 D2 11
P3 2 / INT0 P0 2 / AD2 3D 3Q E2 A3 Y3 WR0 CLK
2 P3 .3 13 36 D3 D3 8 9 A3 8 12 D3 2
P3 3 / INT1 P0 3 / AD3 4D 4Q E3 A4 Y4
P3 .4 14 35 D4 D4 13 12 A4 D0 3 2
P3 4 / T0 P0 4 / AD4 5D 5Q 1D 1Q S0
P3 .5 15 34 D5 D5 14 15 A5 7 4 HC2 4 4 D1 4 5
P3 5 / T1 P0 5 / AD5 6D 6Q 2D 2Q S1
16 33 D6 D6 17 16 A6 D2 7 6
P3 6 / WR P0 6 / AD6 7D 7Q 3D 3Q S2
17 32 D7 D7 18 19 A7 D3 8 9
P3 7 / RD P0 7 / AD7 8D 8Q 4D 4Q S3
U4 :B D4 13 12
7 4 HC3 7 3 5D 5Q S4
1 21 D5 14 15
P1 .0 P1 0 / T2 P2 0 / A8 P2 .0 6D 6Q S5
2 22 19 D6 17 16
P1 .1 P1 1 / T2 EX P2 1 / A9 P2 .1 RD0 G 7D 7Q S6
3 23 D7 18 19
P1 .2 P1 2 P2 2 / A1 0 P2 .2 8D 8Q S7
4 24 11 9 D4
P1 .3 P1 3 P2 3 / A1 1 P2 .3 E4 A1 Y1
5 25 13 7 D5 7 4 HC2 7 3
P1 .4 P1 4 P2 4 / A1 2 P2 .4 E5 A2 Y2
6 26 15 5 D6
P1 .5 P1 5 P2 5 / A1 3 P2 .5 E6 A3 Y3
7 27 17 3 D7
P1 .6 P1 6 P2 6 / A1 4 P2 .6 E7 A4 Y4
8 28
P1 .7 P1 7 P2 7 / A1 5 P2 .7
U3 :A 7 4 HC2 4 4
AT8 9 C5 2
A6 2 4
A Y0 RD0
A7 3 5 U6 :A
B Y1 RD1
6
Y2 RD2
RD 1 7 1
G Y3 RD3 G
U7
7 4 HC1 3 9 2 18 D0
E8 A1 Y1
4 16 D1 1
E9 A2 Y2 CLR
6 14 D2 11
E1 0 A3 Y3 WR1 CLK
U3 :B 8 12 D3
E1 1 A4 Y4
D0 3 2
1D 1Q S8
3 A6 14 12 7 4 HC2 4 4 D1 4 5 3
A Y0 WR0 2D 2Q S9
A7 13 11 D2 7 6
B Y1 WR1 3D 3Q S1 0
10 D3 8 9
Y2 WR2 4D 4Q S1 1
WR 1 5 9 U6 :B D4 13 12
G Y3 WR3 5D 5Q S1 2
D5 14 15
6D 6Q S1 3
7 4 HC1 3 9 19 D6 17 16
RD1 G 7D 7Q S1 4
D7 18 19
8D 8Q S1 5
11 9 D4
E1 2 A1 Y1
13 7 D5 7 4 HC2 7 3
E1 3 A2 Y2
15 5 D6
E1 4 A3 Y3
17 3 D7
E1 5 A4 Y4
7 4 HC2 4 4
4 4
Tit le
SISTEMA COM E/ S MAPEADA EM MEMORIA
Size Nu m b er Rev
A3 1 .0
RST
1 1 0 uF U1 1
CON8 M
C9
C8
C1 0
C1 1
C1 2
3 3 nF
19 18
1 0 0 nF
1 0 0 nF
1 0 0 nF
XTAL1 XTAL2
1 0 0 uF
C CN2
1 9 1
JP1 RST U2 A0
C2 2
A1
C1 31 29 1 3
PSEN A2
C3 EA/ VPP PSEN 30 11 OC 4
C A3
ALE/ PROG U4 5
A4
10 39 D0 D0 3 2 A0 A0 10 11 D0 6
P3 .0 P3 0 / RXD P0 0 / AD0 1D 1Q A0 Q1 A5
11 38 D1 D1 4 5 A1 A1 9 12 D1 7
P3 .1 P3 1 / TXD P0 1 / AD1 2D 2Q A1 Q2 A6
12 37 D2 D2 7 6 A2 A2 8 13 D2 8
P3 .2 P0 2 / AD2 3D 3Q A2 Q3 A7
P3 2 / INT0
R1
P3 .3 13 36 D3 D3 8 9 A3 A3 7 15 D3
8 k2
P3 3 / INT1 P0 3 / AD3 4D 4Q A3 Q4 CON8 M
P3 .4 14 35 D4 D4 13 12 A4 A4 6 16 D4
P3 4 / T0 P0 4 / AD4 5D 5Q A4 Q5
P3 .5 15 34 D5 D5 14 15 A5 A5 5 17 D5
P3 5 / T1 P0 5 / AD5 6D 6Q A5 Q6
P3 .6 16 33 D6 D6 17 16 A6 A6 4 18 D6 CN3
P3 6 / WR P0 6 / AD6 7D 7Q A6 Q7 1
P3 .7 17 32 D7 D7 18 19 A7 A7 3 19 D7 A8
P3 7 / RD P0 7 / AD7 8D 8Q A7 Q8 2
A8 25 A9
7 4 HC3 7 3 A8 3
1 21 A9 24 A1 0
P1 .0 P1 0 / T2 P2 0 / A8 A9 4
2 22 A8 A1 0 21 A1 1
P1 .1 P1 1 / T2 EX P2 1 / A9 A1 0 5
3 23 A9 A1 1 23 A1 2
P1 .2 P1 2 P2 2 / A1 0 A1 1 6
4 24 A1 0 A1 2 2 A1 3
P1 .3 P1 3 P2 3 / A1 1 A1 2 7
5 25 A1 1 A1 3 26 A1 4
P1 .4 P1 4 P2 4 / A1 2 A1 3 8
6 26 A1 2 27 A1 5
P1 .5 P1 5 P2 5 / A1 3 A1 4
7 27 A1 3 1
2 P1 .6 P1 6 P2 6 / A1 4 A1 5 CON8 M 2
8 28 A1 4
P1 .7 P1 7 P2 7 / A1 5 JP2
A1 5 C2
AT8 9 C5 2 C1 CN4
A1 4 C3 1
P1 .0
22 2
PSEN P1 .1
JP8 G/ VPP 3
C2 JP3 P1 .2
C2 20 4
C1 P1 .3
P3 .3 C1 E 5
C3 P1 .4
A1 5 C3 6
2 7 C5 1 2 P1 .5
7
P1 .6
8
C6 P1 .7
C3 JP4
U6 1 0 uF C1 CON8 M
1 0 uF C4 1 2 C2
C1 + V+ CN5
1
3 6 P3 .0
C1 - V- U5 2
P3 .1
1 0 uF C5 A0 10 11 D0 3
4 C7 A0 D0 P3 .2
C2 + A1 9 12 D1 4
A1 D1 P3 .3
A2 8 13 D2 5
5 1 0 uF A2 D2 P3 .4
C2 - A3 7 15 D3 6
A3 D3 P3 .5
A4 6 16 D4 7
A4 D4 P3 .6
A5 5 17 D5 8
11 14 A5 D5 P3 .7
JP9 P3 .1 T1 IN T1 OUT TX A6 4 18 D6
C2 A6 D6
P3 .5 A7 3 19 D7 CON8 M
C1 10 7 A7 D7
T2 IN T2 OUT DTR A8 25
C3 A8
3 12 13 A9 24 CN6 3
P3 .0 R1 OUT R1 IN RX A9 1
A1 0 21
P3 .4 JP1 0 A1 0 2
C2 9 8 A1 1 23 CS1
R2 OUT R2 IN DSR A1 1 3
C1 A1 2 2 100k R2 CS2
A1 2 4
C3 26
MAX2 3 2 A1 3
A1 4 1
A1 4 P1 CON4 M
150k
CONFIGURACOES
CN9 CN7
C1 - C2 ROM INTERNA U7 :C C2 JP5 1 1
JP1 U3 9 2
C1 20 2 TX
C1 - C3 ROM EXTERNA A1 3
1 15 8
A1 3 CS 3
A Y0 C3 3 RX
2 14 10 4
C1 - C2 2764/ 128 A1 4 B Y1 U7 :B 27 4
3 13 P3 .6 WE A0 DSR 5
JP2 A1 5 C Y2 4 5
12 7 4 HC0 8 JP6 A1 DTR 6
C1 - C3 27256/ 512 Y3 6 C3 22 6
11 OE
Y4 5 C1 7
C1 - C2 2764/ 128/ 256 6 10 U7 :D D0 CON6 M
G1 Y5 CS1 C2 62256 8
JP3 4 9 12 D1
G2 A Y6 CS2 7 4 HC0 8 9
C1 - C3 27512 5 7 11 D2
G2 B Y7 10 CN8
13 JP7 D3
C1 - C2 ROM 8 K C2 U7 :A 11 1
7 4 HC1 3 8 D4
JP4 C1 1
D5
12
+V
2
C1 - C3 ROM 6 4 K 7 4 HC0 8 C3 3 13 3
PSEN D6
2 14 4
C1 - C2 6264 U8 :C P3 .7 D7
JP5 P3 .6
8
C1 - C3 62256 10 7 4 HC0 8 CON1 4 M CON4 M
4 9 4
C1 - C2 RAM 2 0 0 0 H U8 :B U8 :A
JP6 5 2 Tit le
C1 - C3 RAM 0 0 0 0 H 7 4 HC0 2 SISTEMA COMPLETO
4 1
6 3
C1 - C2 DADOS U8 :D Size Nu m b er Rev
JP7 11
C1 - C3 DADOS/ PROG. 13 7 4 HC0 2 7 4 HC0 2 1 .0
P3 .7
12
A3
C1 - C2 EXEC. NORMAL Da t e 03/ 2002 Dr a wn b y HUGO
JP8
C1 - C3 PASSO A PASSO 7 4 HC0 2 Filen a m e COMPLE5 1 .S0 1 Sh eet 1 of 1
A B C D
EXERCCIOS
1) Com base nos diagramas esquemticos dos sistemas apresentados,
responda as seguintes questes:
b) Por que o terminal EA\ do 80C32 do Sistema com ROM Externa no pode
ser conectado a Vcc? E se o 80C32 fosse substitudo por um 89C52, seria
possvel conectar o terminal EA\ a Vcc? Por que?
MODOS DE ENDEREAMENTO
Modo Imediato
Permite carregar constantes em posies da memria de dados interna.
Nas instrues da famlia MCS51, as constantes so precedidas pelo smbolo
#.
Modo Direto
Essa forma de endereamento utiliza diretamente o endereo da posio
da memria de dados interna na qual ser efetuada a operao.
Modo Indireto
Nesse caso o endereo da posio de memria onde ser efetuada a
operao indicado de forma indireta pelos registros R0 ou R1 do banco de
registros em uso ou pelo registro DPTR. Os registros R0, R1 e DPTR atuam
como ponteiros nessas instrues, sendo R0 e R1 ponteiros para endereos de
8 bits e DPTR um ponteiro para endereos de 16 bits. Nas instrues da famlia
MCS51, os ponteiros so precedidos pelo smbolo @.
Modo Registro
Permite o acesso aos registros R0 a R7 do banco de registros em uso
(working registers), definido pelos bits de controle RS1 e RS0 existentes no
registro de funo especial PSW.
Transferncia de Dados
Fazem parte do grupo de transferncia de dados as instrues MOV,
MOVC, MOVX, PUSH, POP, XCH e XCHD.
A instruo MOV copia o contedo de um endereo da memria de dados
interna (ou uma constante) para outro endereo da memria de dados interna,
utilizando a seguinte sintaxe:
MOV A, #dado
Carrega no acumulador o valor da constante de 8 bits (dado). O valor da
constante pode estar em decimal (sem sufixo), hexadecimal (sufixo H) ou
binrio (sufixo B).
Exemplo: MOV A, #01010101B
MOV A, direto
Carrega no acumulador o contedo do endereo da memria de dados
interna (direto).
Exemplo: MOV A, 12H
MOV A, @Ri
Carrega no acumulador o contedo do endereo da memria de dados
interna apontado pelo registro R0 ou R1 (@Ri).
Exemplo: MOV A, @R0
MOV A, Rn
Carrega no acumulador o contedo do registro R0, R1, R2, R3, R4, R5,
R6 ou R7 (Rn) do banco de registros em uso.
Exemplo: MOV A, R0
MOVC A, <fonte>
MOVC A, @A+DPTR
Adiciona o valor contido no acumulador ao valor contido no registro de
DPTR, utilizando o resultado como ponteiro para enderear uma posio da
memria de programa e carrega o seu contedo no acumulador.
MOVX A, <fonte>
MOVX <destino>, A
MOVX A, @DPTR
Carrega o acumulador com o contedo da posio de memria de dados
externa apontada pelo registro DPTR.
MOVX @DPTR, A
Carrega a posio de memria de dados externa apontada pelo registro
DPTR com o contedo do acumulador.
PUSH <fonte>
POP <destino>
PUSH direto
O registro SP incrementado e em seguida o contedo do endereo da
memria de dados interna (direto) carregado no topo da pilha.
Exemplo: PUSH ACC
XCH A, <operando>
XCH A, direto
Troca os contedos do acumulador e do endereo da memria de dados
interna (direto).
Exemplo: XCH A, 34H
XCHD A, <operando>
XCHD A, @Ri
Troca apenas o nibble menos significativo dos contedos do acumulador
e do endereo da memria de dados interna apontada pelo registro R0 ou R1
(@Ri).
Exemplo: XCHD A, @R0
Exerccios
1) Sabendo que a instruo MOVC envolve o acesso memria de programa
do microcontrolador 8051, explique o que ocorre com os barramentos
externos durante a execuo da instruo MOVC A, @A+DPTR. Leve em
considerao os casos de acesso a endereos existentes na memria de
programa interna e externa.
CLR A
CLR A
Zera o contedo do acumulador.
CPL A
CPL A
Complementa o contedo do acumulador bit a bit.
ANL A, #dado
Efetua a operao lgica E entre o contedo do acumulador e a
constante (dado) bit a bit. O resultado armazenado no acumulador.
Exemplo: ANL A, #0FH
ORL A, direto
Efetua a operao lgica OU entre o contedo do acumulador e o
endereo da memria de dados interna (direto) bit a bit. O resultado
armazenado no acumulador.
Exemplo: ORL A, 3FH
XRL A, Rn
Efetua a operao lgica OU-EXCLUSIVO entre o contedo do
acumulador e o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7 (Rn). O
resultado armazenado no acumulador.
Exemplo: XRL A, R1
RL A
RLC A
RL A
Desloca o contedo do acumulador 1 bit esquerda. O valor do bit 0 vai
para o bit 1, o valor do bit 1 vai para o bit 2 e assim sucessivamente. O valor do
bit 7 vai para o bit 0 e nenhum flag afetado.
RLC A
Desloca o contedo do acumulador 1 bit esquerda passando pelo flag
de carry. O valor do bit 0 vai para o bit 1, o valor do bit 1 vai para o bit 2 e
assim sucessivamente. valor do bit 7 vai para o flag de carry e o valor do flag
de carry vai para o bit 0.
RR A
RRC A
RR A
Desloca o contedo do acumulador 1 bit direita. O valor do bit 7 vai
para o bit 6, o valor do bit 6 vai para o bit 5 e assim sucessivamente. O valor do
bit 0 vai para o bit 7 e nenhum flag afetado.
RRC A
Desloca o contedo do acumulador 1 bit direita passando pelo flag de
carry. O valor do bit 7 vai para o bit 6, o valor do bit 6 vai para o bit 5 e assim
sucessivamente. valor do bit 0 vai para o flag de carry e o valor do flag de carry
vai para o bit 7.
SWAP A
SWAP A
Troca o nibble mais significativo pelo nibble menos significativo do
acumulador.
LOGICA: MOV A, R0
CPL A
ANL R1
MOV B, A
MOV A, R2
ANL A, R3
CPL A
XRL R4
ORL A, B
LJMP LOGICA
Operaes Aritmticas
Fazem parte do grupo de operaes aritmticas as instrues ADD,
ADDC, SUBB, INC, DEC, MUL, DIV e DA.
A instruo ADD realiza a adio entre o contedo do acumulador e o
contedo de um endereo da memria de dados interna (ou uma constante),
utilizando a seguinte sintaxe:
ADD A, <operando>
ADDC A, <operando>
ADDC A, @Ri
Adiciona o contedo do acumulador ao contedo do endereo da
memria de dados interna apontado por R0 ou R1 (@Ri) e ao flag de carry. O
resultado armazenado no acumulador e o flag de carry afetado conforme o
resultado da operao.
Exemplo: ADDC A, @R0
SUBB A, <operando>
SUBB A, @Ri
Subtrai do contedo do acumulador o contedo do endereo da memria
de dados interna apontado por R0 ou R1 (@Ri) e o flag de carry (borrow). O
resultado armazenado no acumulador e o flag de carry (borrow) afetado
conforme o resultado da operao.
Exemplo: SUBB A, @R1
INC <operando>
INC DPTR
Incrementa o valor do registro de 16 bits DPTR.
DEC <operando>
DEC A
Decrementa o valor do acumulador.
MUL AB
MUL AB
Multiplica o contedo do acumulador pelo contedo do registro de
funo especial B, armazenando a parte mais significativa do resultado em B e
a parte menos significativa no acumulador.
DIV AB
DIV AB
Divide o contedo do acumulador pelo contedo do registro de funo
especial B, armazenando o quociente no acumulador e o resto em B. Se B for
nulo o resultado da operao ser indefinido.
DA A
Exerccios
1) Execute os programas dados a seguir no simulador do ambiente Proview e
tire concluses sobre o efeito de cada instruo executada. Para uma
melhor noo do que ocorre, sugere-se que os programas sejam
executados passo a passo, visualizando-se as janelas Main Registers e
Data View.
MOV A, R1
ADD A, R3 ;adiciona R1 e R3
MOV R5, A ;LSB em R5
MOV A, R0
ADDC A, R2 ;adiciona R0 e R2
MOV R4, A ;MSB em R4
LJMP SOMA1
MOV A, R1
ADD A, R3 ;adiciona R1 e R3
DA A ;ajusta resultado
MOV R5, A ;LSB em R5
MOV A, R0
ADDC A, R2 ;adiciona R0 e R2
DA A ;ajusta resultado
MOV R4, A ;MSB em R4
LJMP SOMA2
MOV A, R1
SUBB A, R3 ;subtrai R3 de R1
MOV R5, A ;LSB em R5
MOV A, R0
SUBB A, R2 ;subtrai R2 de R0
MOV R4, A ;MSB em R4
LJMP SUBT
MOV A, R1
MOV B, R3
MUL AB ;multiplica R1 e R3
MOV R7, A ;LSB em R7
MOV R6, B ;MSB em R6R7
MOV A, R1
MOV B, R2
MUL AB ;multiplica R1 e R2
ADD A, R6
MOV R6, A ;adiciona LSB em R6
MOV A, B
ADDC A, #00H
MOV R5, A ;MSB em R5
MOV A, R0
MOV B, R3
MUL AB ;multiplica R0 e R3
ADD A, R6
MOV R6, A ;adiciona LSB em R6
MOV A, B
ADDC A, R5 ;adiciona MSB em R5
MOV R5, A
MOV A, R0
MOV B, R2
MUL AB ;multiplica R0 e R2
ADD A, R5
MOV R5, A ;adiciona LSB em R5
MOV A, B
ADDC A, #00H
MOV R4, A ;MSB em R4
LJMP MULT
CLR <operando>
CLR bit
Reseta o valor da varivel booleana endereada (bit).
Exemplo: CLR 35H
SETB <operando>
SETB bit
Seta o valor da varivel booleana endereada (bit).
Exemplo: SETB TR0
CPL <operando>
CPL bit
Complementa o valor da varivel booleana endereada (bit).
Exemplo: CPL C
ANL C, <operando>
ORL C, <operando>
ANL C, bit
Efetua a operao lgica E entre o flag de carry e a varivel booleana
endereada (bit).
Exemplo: ANL C, 08H
ORL C, /bit
Efetua a operao lgica OU entre o flag de carry e o complemento da
varivel booleana endereada (bit).
Exemplo: ORL C, /EA
MOV C, <fonte>
MOV <destino>, C
MOV C, bit
Copia o estado da varivel booleana endereada (bit) para o flag de
carry.
Exemplo: MOV C, 90H
Exerccios
1) Apresente 2 formas de setar o estado do flag de carry utilizando instrues
de manipulao de variveis boolenas e operaes lgicas do Assembly da
famlia MCS51.
LJMP <endereo>
AJMP <endereo>
SJMP <endereo>
JMP @A+DPTR
LJMP end16
Efetua um desvio incondicional da execuo para o endereo (end16) da
memria de programa.
Exemplo: LJMP 2000H
AJMP end11
Efetua um desvio incondicional da execuo na mesma pgina de 2Kb
da memria de programa. O endereo de 16 bits do desvio obtido pela CPU
completando os 11 bits (end11) com os 5 bits mais significativos do endereo
contido no registro de funo especial PC.
Exemplo: AJMP DESVIO
SJMP rel
Efetua um desvio incondicional relativo da execuo do programa. O
endereo de 16 bits do desvio obtido pela CPU somando-se o valor relativo
(rel) ao endereo contido no registro de funo especial PC.
Exemplo: SJMP VOLTA
LCALL <endereo>
ACALL <endereo>
LCALL end16
Salva o contedo do registro de funo especial PC na pilha (o registro
SP incrementado 2 vezes, pois trata-se de um registro de 16 bits). Em
seguida efetua um desvio para o endereo da subrotina (end16). O valor salvo
na pilha constitui o endereo de retorno a ser restaurado pela instruo RET ao
final da subrotina.
Exemplo: LCALL 3000H
ACALL end11
Salva o contedo do registro de funo especial PC na pilha (o registro
SP incrementado 2 vezes, pois trata-se de um registro de 16 bits). Em
seguida efetua um desvio para o endereo da subrotina (end11) na mesma
pgina de 2KB da memria de programa. O valor salvo na pilha constitui o
endereo de retorno a ser restaurado pela instruo RET ao final da subrotina.
Exemplo: ACALL TEMPO
RET
RETI
RET
Retorna de uma subrotina. O endereo de retorno recuperado da pilha
e armazenado no registro de funo especial PC (o registro SP
decrementado 2 vezes, pois trata-se de um registro de 16 bits).
Exemplo: RET
JNZ <endereo>
JZ <endereo>
JNC <endereo>
JC <endereo>
JNZ rel
Testa o contedo do acumulador e efetua um desvio relativo no
programa se for diferente de zero. O endereo de 16 bits do desvio obtido
pela CPU somando-se o valor relativo (rel) ao endereo contido no registro de
funo especial PC, se o resultado do teste for verdadeiro.
Exemplo: JNZ VOLTA
JZ rel
Testa o contedo do acumulador e efetua um desvio relativo no
programa se for igual a zero. O endereo de 16 bits do desvio obtido pela
CPU somando-se o valor relativo (rel) ao endereo contido no registro de
funo especial PC, se o resultado do teste for verdadeiro.
Exemplo: JZ ZERO
JNC rel
Testa o flag de carry e efetua um desvio relativo no programa se for igual
a zero. O endereo de 16 bits do desvio obtido pela CPU somando-se o valor
relativo (rel) ao endereo contido no registro de funo especial PC, se o
resultado do teste for verdadeiro.
Exemplo: JNC SEM
JB bit, rel
Testa a varivel booleana endereada (bit) e efetua um desvio relativo
no programa se for igual a um. O endereo de 16 bits do desvio obtido pela
CPU somando-se o valor relativo (rel) ao endereo contido no registro de
funo especial PC, se o resultado do teste for verdadeiro.
Exemplo: JB TF1, TIME
NOP
Exerccios
1) Implemente uma subrotina que receba um valor no registro R0 como
entrada e retorne esse valor elevado ao quadrado nos registros R1 e R2
(R1 dever conter o byte mais significativo e R2 o menos significativo).
;**********************************************************
; ATRASO gera um tempo de atraso por software
; ENTRADA: nada
; SAIDA: tempo de atraso
; DESTROI: R1 e R2 do banco de registros em uso
;**********************************************************
ATRASO: MOV R1, #80H
A1: MOV R2, #90H
A2: NOP
NOP
DJNZ R2, A2
DJNZ R1, A1
RET
;**********************************************************
; DAASUB - ajuste decimal do acumulador apos subtracoes
; ENTRADA: A
; SAIDA: A
;**********************************************************
;**********************************************************
; COMP3 compara valores de 3 bytes apontados por R0 e R1
; ENTRADA: R0 e R1 = ponteiros para MSB
; SADA: se Z = 1 -> R0=R1
; se CY = 0 -> R0>R1
; se CY = 1 -> R0<R1
; DESTROI: A, C, R0, R1 e R2 do banco de registros em uso
;**********************************************************
COMP3: MOV R2, #03H
DENTRO: CLR C
MOV A, @R0
SUBB A, @R1
JC FORA
JNZ FORA
INC R0
INC R1
DJNZ R2, DENTRO
FORA: RET
4) Conte o total de bytes iguais a 02h existentes nas primeiras 128 posies
da memria de programa (PaulMon). Apresente o resultado em decimal
atravs das subrotinas disponveis no PaulMon.
Pseudo-instrues
Trata-se de declaraes no programa semelhantes s instrues do
microcontrolador, mas que no fazem parte do seu conjunto de instrues. Na
verdade so diretivas de montagem do prprio montador. Algumas das pseudo-
instrues mais importantes so:
Definies
So declaraes que atribuem nomes a constantes, permitindo
referncias ao longo do programa.
Rtulos
So nomes atribudos aos endereos de rotinas de tratamento de
interrupes, subrotinas, tabelas ou simplesmente locais de desvio do fluxo do
programa utilizados em estruturas de programao (decises e repeties),
facilitando referncias ao longo do programa.
Comentrios
Qualquer texto digitado aps ponto-e-vrgula (;) desprezado pelo
assembler durante a montagem do programa. Dessa forma, pode-se fazer uso
de comentrios teis para a documentao e melhor entendimento do
programa.
Exemplo
PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
{...}
POP DPH
POP DPL
POP PSW
POP ACC
Subrotinas
Trata-se de um recurso de programao muito til quando uma
seqncia de aes bastante utilizada dentro de um programa. Comportam-
se de modo semelhante ao das interrupes. A diferena que as subrotinas
so solicitadas por software e no possuem endereos de desvio fixos.
Exemplo
INICIO: MOV R0, #11H
CALL ENVIA
MOV R0, #22H
CALL ENVIA
MOV R0, #33H
CALL ENVIA
SJMP INICIO
Exemplo
CLR C
SUBB A, R0
JZ IGUAL
JC MAIOR
MENOR: MOV R1, #2
SJMP FIM
MAIOR: MOV R1, #1
SJMP FIM
IGUAL: MOV R1, #0
SJMP FIM
Repeties
FOR (DE-AT)
WHILE (ENQUANTO)
DO-WHILE (FAA-ENQUANTO)
So estruturas de programao que permitem a repetio (loop) de um
conjunto de aes enquanto determinada condio for verdadeira. Essas
estruturas podem verificar a condio antes da execuo das aes ou depois
de j terem executado pelo menos uma vez as aes dentro do loop.
Exemplo
MOV A, #10H
REPETE: {...}
DEC A
JNZ REPETE
while(1);
} /* main*/
Leitura do Flip-Flop
Barramento de
D Q\ Terminal
Dados Interno
Escrita CK Q\
Leitura do Terminal
Acionamentos de LED
Uma das formas mais simples de sada em um sistema microcontrolado
o acionamento de um LED. Essa aplicao pode ser til para indicadores
visuais e para acionamentos de potncia atravs de opto-acopladores.
Como os Ports dos microcontroladores da famlia MCS51 so capazes
de fornecer uma corrente muito pequena, devido aos resistores de pull-up
internos (com exceo do Port 0), para acender um LED pode-se fazer uso dos
circuitos mostrados abaixo.
Acionamentos de Potncia AC
Para acionamentos de potncia AC torna-se imprescindvel o uso de
opto-acopladores para proteo do sistema, pois as tenses e correntes
envolvidas tendem a ser elevadas. A figura a seguir apresenta uma possvel
configurao de circuito para o acionamento de uma lmpada AC atravs do bit
P1.0 do 8031.
CLK
CS
SGL/
DIF
DI
START ODD/
BIT SIGN MSB FIRST LSB FIRST
DO
TRI-STATE
7 6 5 4 3 2 1 0 1 2 3 4 5 6 7
(MSB) (LSB) (MSB)
;**********************************************************
; Descrio dos terminais
;**********************************************************
DO EQU 90H ;DO = P1.0
DI EQU 91H ;DI = P1.1
CK EQU 92H ;CK = P1.2
CS EQU 93H ;CS = P1.3
;**********************************************************
; PULSE pulso de clock para o conversor A/D ADC0832
;**********************************************************
PULSE: SETB CK ;CLK em nivel alto
NOP
CLR CK ;CLK em nivel baixo
RET
;**********************************************************
; CONVAD leitura do conversor A/D ADC0832
; ENTRADA: A = endereco do mux
; SAIDA: A = valor da conversao
; DESTROI: B
;**********************************************************
CONVAD: CLR CK
CLR CS ;habilita o ADC0832
MOV B, #3 ;3 bits a enviar
LOOPA: RLC A
MOV DI, C ;envia bit para DI
CALL PULSE ;pulso de clock
DJNZ B, LOOPA
CALL PULSE
MOV B, #8 ;8 bits a receber
LOOP2: MOV C, DO ;recebe bit de DO
RLC A
CALL PULSE ;pulso de clock
DJNZ B, LOOP2
SETB CS ;desabilita o ADC0832
RET
;**********************************************************
; Descrio dos terminais
;**********************************************************
CMP EQU 0B3H ;P3.3 = saida do comparador
;**********************************************************
; CAD realiza uma conversao A/D por rampa escalonada
; ENTRADA: tenso analgica
; SAIDA: A
; DESTROI: R0
;**********************************************************
RAMPA: MOV R0, #0FFH ;tensao maxima para comparacao
REPETE: MOV P1, R0 ;atualiza a rede R2R
NOP ;aguarda estabilizacao
JNB CMP, FINAL ;verifica se igualou com entrada
DJNZ R0, REPETE ;diminui a tensao e repete
MOV A, R0 ;A contem o valor da conversao
RET
;**********************************************************
; ESQUEMA DE LIGACAO DO TECLADO
;**********************************************************
; P1.3 P1.2 P1.1 P1.0
; 1 2 3 4 P1.4
; 5 6 7 8 P1.5
; 9 0 A B P1.6
; C D E F P1.7
;**********************************************************
VCC
1 1
4 k7
R1 7
5
VIN + LM3 9 3 JA
7
P3 .3
6 -
U1 :B
R1 R2
P1 .7
2 2 0 .0 k 1 0 .0 k 2
R3 R4
P1 .6
2 0 .0 k 1 0 .0 k
R5 R6
P1 .5
2 0 .0 k 1 0 .0 k
R7 R8
P1 .4
2 0 .0 k 1 0 .0 k
3 R9 R1 0 3
P1 .3
2 0 .0 k 1 0 .0 k
R1 1 R1 2
P1 .2
2 0 .0 k 1 0 .0 k
R1 3 R1 4
P1 .1
2 0 .0 k 1 0 .0 k
R1 5 R1 6 Tit le
CONVERSOR A/ D ( R2 R)
P1 .0
4 2 0 .0 k 2 0 .0 k Size Nu m b er Rev 4
A4 1 .0
GND
Da t e 03/ 2002 Dr a wn b y HUGO
Filen a m e ADR2 R5 1 .S0 1 Sh eet 1 of 1
A B C D
A B C D
1 1
P1 .0
P1 .1
P1 .2
P1 .3
S1 S2 S3 S4
D1 D2 D3 D4
C1 C2 C1 C2 C1 C2 C1 C2
0 1 N4 1 4 8 1 1 N4 1 4 8 2 1 N4 1 4 8 3 VCC 1 N4 1 4 8
R1
P1 .4
2 10k 2
S5 S6 S7 S8
D5 D6 D7 D8
C1 C2 C1 C2 C1 C2 C1 C2
4 1 N4 1 4 8 5 1 N4 1 4 8 6 1 N4 1 4 8 7 VCC 1 N4 1 4 8
R2
P1 .5
10k
S9 S1 0 S1 1 S1 2
D9 D1 0 D1 1 D1 2
C1 C2 C1 C2 C1 C2 C1 C2
8 1 N4 1 4 8 9 1 N4 1 4 8 A 1 N4 1 4 8 B VCC 1 N4 1 4 8
R3
P1 .6
10k
S1 3 S1 4 S1 5 S1 6
3 D1 3 D1 4 D1 5 D1 6 3
C1 C2 C1 C2 C1 C2 C1 C2
C 1 N4 1 4 8 D 1 N4 1 4 8 E 1 N4 1 4 8 F VCC 1 N4 1 4 8
R4
P1 .7
10k
4 4
Tit le
TECLADO MATRICIAL
Size Nu m b er Rev
A3 1 .0
Exerccios
1) Determinado sensor fornece dois sinais analgicos A e B, que variam de 0 a
5V. Deseja-se utilizar o conversor A/D ADC0832 para realizar a aquisio
destes sinais por um microcontrolador 89C51, conforme o diagrama em
blocos mostrado a seguir. Implemente um programa em Assembly MCS51
capaz de gerar e ler os sinais necessrios ao funcionamento adequado do
conversor A/D, armazenando o valor da converso do canal CH0 no registro
R0 e o valor da converso do canal CH1 no registro R1.
CLK
A CH0
Amp.
CS
Interrupo Vetor
Interrupo externa 0 0003H
Temporizador/contador de eventos 0 000BH
Interrupo externa 1 0013H
Temporizador/contador de eventos 1 001BH
Interface serial 0023H
0000H RESET
0002H
0003H INT0\
000AH
000BH T/C0
0012H
0013H INT1\
001AH
001BH T/C1
0022H
0023H SERIAL
EA Enable All
Nvel lgico 0 - desabilita todas as interrupes, independentemente de
qualquer outro bit de controle.
Nvel lgico 1 - permite a habilitao particular de cada interrupo, se o estado
do seu respectivo bit de controle individual for igual a 1.
IE1, IE0
Sinalizam internamente as requisies das interrupes externas 1 e 0,
respectivamente. So setados quando ocorrem as respectivas interrupes e
so zerados por hardware assim que as mesmas so atendidas.
Exerccios
1) Determinado sistema de controle baseado no 80C31 necessita de duas
fontes de interrupo: a interrupo da interface serial e a interrupo
externa 0. Elabore um trecho de programa em Assembly que habilite essas
interrupes, determinando a interrupo da interface serial como mais
prioritria. Programe tambm a interrupo externa 0 para sensibilidade a
borda de descida.
ORG 0003H
EXT0: PUSH PSW
SETB RS0
MOV A, #20H
MOV R0, #40H
POP PSW
RETI
ORG 0013H
EXT1: PUSH ACC
MOV A, #20H
MOV R0, #10H
POP ACC
RETI
ORG 0100H
PROG: CLR RS0 ;o programa comea aqui!
MOV TCON, #00000101B
MOV IP, #00000100B
MOV IE, #10000001B
MOV R0, #50H ;instruo X
MOV A, #05H ;instruo Y
ADD A, R0 ;instruo Z
FINAL: JMP FINAL
c) Supondo que ocorrem bordas de descida nos sinais aplicados aos terminais
P3.2 (INT0) e P3.3 (INT1) simultaneamente durante a execuo da
instruo Z, qual ser o valor contido no acumulador ao final do programa?
GATE1; GATE0
Nvel lgico 0 a contagem do T/C ser habilitada se apenas o bit de controle
correspondente (TR1 ou TR0) no registro TCON estiver em nvel lgico 1.
Nvel lgico 1 a contagem do T/C ser habilitada se o bit de controle
correspondente (TR1 ou TR0) no registro TCON estiver em nvel lgico 1 e o
terminal de interrupo correspondente (INT1\ ou INT0\) tambm estiver em
nvel lgico 1.
Operao no Modo 0
OSC. 12
C/T0=0
TL0 TH0 Interrupo
TF0
(5 bits) (8 bits)
C/T0=1
Terminal T0
Controle
TR0
&
GATE0
1
Terminal INT0\
Operao no Modo 1
OSC. 12
C/T0=0
TH0 TL0 Interrupo
TF0
(8 bits) (8 bits)
C/T0=1
Terminal T0
Controle
TR0
&
GATE0
1
Terminal INT0\
Operao no Modo 2
OSC. 12
C/T0=0
TH0 Interrupo
TF0
(8 bits)
C/T0=1
Terminal T0
Controle
Recarga
TR0
&
GATE0
1
TL0
Terminal INT0\ (8 bits)
Operao no Modo 3
TH0 Interrupo
OSC. 12 TF1
(8 bits)
Controle
TR1
C/T0=0
TL0 Interrupo
TF0
(8 bits)
C/T0=1
Terminal T0
Controle
TR0
&
GATE0
1
Terminal INT0\
;**********************************************************
; Descricao dos terminais
;**********************************************************
PWM EQU 090H ;P1.0 = sinal PWM
CMP EQU 0B3H ;P3.3 = saida do comparador
;**********************************************************
; Declaracoes de constantes
;**********************************************************
PRESC EQU 00001000B ;prescaler do temporizador 0
;determina a frequencia do PWM
;**********************************************************
; Declaracoes de variaveis
;**********************************************************
TALTO EQU 020H ;tempo alto do sinal PWM
TBAIXO EQU 021H ;tempo baixo do sinal PWM
STACK EQU 021H ;topo da pilha
;**********************************************************
; Vetores das interrupcoes
;**********************************************************
ORG 0003H
EX0: RETI
ORG 000BH
TC0: JMP LARG ;geracao do sinal PWM
ORG 0013H
EX1: RETI
ORG 001BH
TC1: RETI
ORG 0023H
SER: RETI
ORG 002BH
TC2: RETI
;**********************************************************
; Programa principal
;**********************************************************
ORG 0100H
INICIO: MOV SP, #STACK ;muda o topo da pilha
;**********************************************************
; Rotinas de tratamento de interrupcao
;**********************************************************
;**********************************************************
; LARG - geracao do sinal PWM
;**********************************************************
LARG: JNB PWM, ALTO ;verifica estado do bit PWM
MOV TH0, TALTO ;se alto carrega TALTO
CLR PWM ;bit PWM = 0
RETI
;**********************************************************
; Subrotinas
;**********************************************************
;**********************************************************
; SETPWM - define a largura do sinal PWM
;**********************************************************
SETPWM: CLR C
MOV A, #0FFH
SUBB A, R0 ;obtem TBAIXO de TALTO
;**********************************************************
; Declaracoes de hardware
;**********************************************************
SEGB EQU 090H ;P1.0 = segmento b
SEGA EQU 091H ;P1.1 = segmento a
SEGF EQU 092H ;P1.2 = segmento f
SEGG EQU 093H ;P1.3 = segmento g
SEGE EQU 094H ;P1.4 = segmento e
SEGD EQU 095H ;P1.5 = segmento d
SEGC EQU 096H ;P1.6 = segmento c
PD EQU 097H ;P1.6 = ponto decimal
;**********************************************************
; Declaracoes de constantes (CLOCK = 11.0592 MHz)
;**********************************************************
NITC EQU 15 ;numero de ints para 1 seg
;NITC=INT(CLOCK/(12*65536))+1
TEMPO EQU 61440 ;tempo de 1/NITC segundos
;TEMPO = CLOCK/(12*NITC)
VARRE EQU 1200H ;tempo de varredura dos disp
VCC
1 1
VCC
BC3 2 8
R9
P3 .2
2 k7 VCC
Q4
BC3 2 8
R1 0
P3 .3
2 k7 VCC
Q3
BC3 2 8
R1 1
2 P3 .4 2
2 k7
Q2
BC3 2 8
R1 2
P3 .5
2 k7
Q1
3 3
DS1 - DS4
PD- 5 6 7
A B C D E F G P A B C D E F G P A B C D E F G P A B C D E F G P
R1 - R8
1 16
P1 .0
2 15
P1 .1
3 14
P1 .2
4 13 Tit le
P1 .3 MULTIPLEXACAO DE DISPLAYS DE 7 SEGMENTOS
5 12
P1 .4
6 11
4 P1 .5 4
7 10 Size Nu m b er Rev
P1 .6
8 9
P1 .7 1 .0
180R
A4
Da t e 03/ 2002 Dr a wn b y HUGO
Filen a m e DISMUL5 1 .S0 1 Sh eet 1 of 1
A B C D
;**********************************************************
; Declaracoes de variaveis
;**********************************************************
BUFF0 EQU 020H ;buffer do display 0
BUFF1 EQU 021H ;buffer do display 1
BUFF2 EQU 022H ;buffer do display 2
BUFF3 EQU 023H ;buffer do display 3
VARDS EQU 024H ;estado da varredura dos disp
MIN EQU 025H ;contagem dos minutos
SEG EQU 026H ;contagem dos segundos
FRAC EQU 027H ;contagem das frac de segundo
STACK EQU 028H ;topo da pilha
;**********************************************************
; Vetores das interrupcoes
;**********************************************************
ORG 0003H
EX0: RETI
ORG 000BH
TC0: JMP SCAND ;varredura dos displays
ORG 0013H
EX1: RETI
ORG 001BH
TC1: JMP COUNT ;contagem regressiva
ORG 0023H
SER: RETI
ORG 002BH
TC2: RETI
;**********************************************************
; Programa principal
;**********************************************************
ORG 0100H
INICIO: MOV SP, #STACK ;muda o topo da pilha
MOV PSW, #00000000B ;banco de registros 0
;**********************************************************
; Rotinas de tratamento de interrupcao
;**********************************************************
;**********************************************************
; Temporizador 0 - varredura dos displays multiplexados
;**********************************************************
SCAND: PUSH ACC
PUSH PSW
MOV PSW, #00001000B ;banco de registros 1
MOV A, VARDS
RL A ;passa para proximo disp
MOV VARDS, A
JB ACC.2, PROX0
SETB DS3 ;desabilita display 3
MOV P1, #0FFH
CLR DS0 ;habilita display 0
MOV P1, BUFF0 ;atualiza display 0
JMP FIMT0
DEC FRAC
MOV A, FRAC
CJNE A, #00H, FIMT1 ;conta NITC (1 segundo)
MOV FRAC, #NITC
MOV A, SEG
DEC A ;decrementa segundos
CALL DAASUB ;faz o ajuste decimal
MOV SEG, A
CJNE A, #99H, ATSEG ;se chegou a 99 ...
MOV SEG, #59H ;... corrige para 59
MOV A, MIN
CJNE A, #00H, MINUTO ;verifica zerou segundos
;**********************************************************
; Subrotinas
;**********************************************************
;**********************************************************
; DAASUB - ajuste decimal do acumulador apos subtracoes
;**********************************************************
DAASUB: PUSH PSW
PUSH A
ANL A, #0FH
CLR C
SUBB A, #0AH
POP A
POP PSW
RET
;**********************************************************
; DISPM - atualiza os displays de minutos
;**********************************************************
DISPM: MOV DPTR, #TAB7S ;aponta para a tabela
RET
;**********************************************************
; DISPS - atualiza os displays de segundos
;**********************************************************
DISPS: MOV DPTR, #TAB7S ;aponta para a tabela
RET
;**********************************************************
; Tabela de decodificao para os displays de 7 segmentos
;**********************************************************
; 0 1 2 3 4 5 6 7 8 9
; P1.0 = segmento b - 0 0 0 0 0 1 1 0 0 0
; P1.1 = segmento a - 0 1 0 0 1 0 0 0 0 0
; P1.2 = segmento f - 0 1 1 1 0 0 0 1 0 0
; P1.3 = segmento g - 1 1 0 0 0 0 0 1 0 0
; P1.4 = segmento e - 0 1 0 1 1 1 0 1 0 1
; P1.5 = segmento d - 0 1 0 0 1 0 0 1 0 0
; P1.6 = segmento c - 0 0 1 0 0 0 0 0 0 0
; P1.7 = ponto decimal - 1 1 1 1 1 1 1 1 1 1
;**********************************************************
; pcdegfab
TAB7S: DB 10001000B ;algarismo 0
DB 10111110B ;algarismo 1
DB 11000100B ;algarismo 2
DB 10010100B ;algarismo 3
DB 10110010B ;algarismo 4
DB 10010001B ;algarismo 5
DB 10000001B ;algarismo 6
DB 10111100B ;algarismo 7
DB 10000000B ;algarismo 8
DB 10010000B ;algarismo 9
Exerccios
1) Seguindo a idia de converso A/D por filtragem de sinal PWM apresentada
anteriormente, implemente um programa em Assembly da famlia MCS51
que utilize a subrotina SETPWM para realizar uma converso A/D por
rampa escalonada decrescente.
Data D0 D1 D2 D3 D4 D5 D6 D7
Clock
Start Stop
D0 D1 D2 D3 D4 D5 D6 D7
Bit Bit
TI Transmit interrupt
o bit de requisio de interrupo da transmisso de dados, sendo setado
por hardware aps a transmisso do oitavo bit de dados quando no Modo 0 ou
ao incio do stop bit nos Modos 1,2 e 3. Deve ser zerado por software durante a
execuo da rotina de atendimento para permitir novas interrupes.
RI Receive Interrupt
o bit de requisio de interrupo da recepo de dados, sendo setado por
hardware aps a recepo do oitavo bit de dados quando no Modo 0 ou a meio
tempo da recepo do stop bit nos Modos 1,2 e 3. Deve ser zerado por
software durante a execuo da rotina de atendimento para permitir novas
interrupes.
2 SMOD f clock
Taxa = .
32 12.(256 TH 1)
Taxa 300 bps 600 bps 1200 bps 2400 bps 4800 bps 9600 bps
TH1 160 208 232 244 250 253
Exerccios
1) Deseja-se programar a interface serial de um microcontrolador 80C31 com
clock de 7,3728MHz para operar com comunicao serial assncrona a
4800 bps. Escreva um programa em Assembly que inicialize a interface
serial e o temporizador responsvel pela taxa de transmisso e recepo de
modo a satisfazer esses requisitos. Uma vez programados os registros
especiais necessrios, envie o valor B2H pela interface serial.
Registro PCON Power Control: Esse registro possui bits de controle dos
modos de reduo de consumo no 80C51, bits sinalizadores (flags) de uso
geral no 80C51 e um bit de controle da taxa de transmisso e recepo da
interface serial.
bit 7 bit 0
http://www.atmel.com/ Atmel
http://developer.intel.com/design/ Intel
Vision C e Assembly)
http://www.keil.com/ Keil Software (
http://www.vaultbbs.com/sim8052/ Simulador
2. O CIRCUITO ELTRICO
Um diagrama em blocos apresentado na figura 2 e um diagrama
esquemtico apresentado na figura 3. A placa P51 consiste em uma rea com
fiao impressa (especificada nos diagramas em blocos e esquemtico) e uma rea
de prototipao. A rea com fiao impressa contm os componentes bsicos do
sistema: microcontrolador, demultiplexador do barramento, decodificador de
endereos, RAM, EPROM e conversor TTL/RS-232. Estes circuitos normalmente
so comuns a todas as aplicaes utilizando o 8031. Na rea de prototipao
implementada a parte do circuito que especfica para a aplicao em questo.
3. CONFIGURAO
Uma das caractersticas importantes da placa P51 a possibilidade de
configur-la para uma variedade de aplicaes e de componentes. Diversos tipos de
EPROM e RAM podem ser utilizados e o circuito decodificador de endereos pode
ser projetado de acordo com as necessidades da aplicao.
3.1 EPROM
As seguintes EPROMs podem ser utilizadas na placa P51. A tabela abaixo
tambm mostra como os pinos 1 e 27 so utilizados em cada caso.
3.2 RAM
As seguintes RAMs podem ser utilizadas na placa P51. A tabela abaixo
tambm mostra como os pinos 1 e 26 so utilizados em cada caso.
CSRAM\ o sinal de habilitao da RAM que pode ser aterrado (ligar J7 a J6)
ou gerado pela PAL (ligar J7 a J8). Observao: o tempo de acesso a partir de
CSRAM\ de 85ns na 62256-8 (a mais rpida) e de 150ns na 62256-15.
EA\ do 8031. Aterrar (ligar J10 a J11) para executar o programa da EPROM
externa (8031) e ligar em Vcc (ligar J10 a J9) para executar o programa da ROM
interna (8951).
5. CONCLUSO
A placa P51 aceita uma grande variedade de componentes, tanto de tipos
como de velocidades distintas. Blocos como o decodificador de endereos podem
ser eliminados (substitudo por conexes diretas) ou implementados com circuitos
programveis. Uma variedade de circuitos pode ser implementada na rea de
prototipao. Portanto, para cada projeto especfico necessrio um projeto
detalhado, incluindo diagrama em blocos, esquemtico, e diagrama de temporizao
(timing).
A placa P51 tem servido para uma variedade de implementaes. Um circuito
mnimo consiste apenas no 8031, circuito de reset (pode ser apenas um capacitor),
circuito do cristal, um 74LS373 e mais alguns componentes discretos (resistores,
capacitores e jumpers). Este circuito pode ser utilizado em conjunto com um
emulador de ROM conectado ao soquete da EPROM. Por outro lado, a placa P51 j
foi utilizada em circuitos com display de cristal lquido, teclado, relgio de tempo real,
interface serial e interface paralela. Esta variedade de aplicaes, aliada ao baixo
custo da placa, facilidade de configurao do sistema e dimenses reduzidas e
padronizadas (Eurocard) so alguns dos pontos positivos da placa. Sugestes para
uma verso melhorada so bem-vindas.
Capacitores:
C1, C2 22pF cermico
C4, C5. C6, C7, C8 10uF x 16V eletroltico
C9 100uF x 16V eletroltico
C10, C11, C12 100nF polister
Resistores:
R4 1k x1/8W
Diversos:
X1 cristal oscilador de 11,0592MHz
6 jumpers de configurao
1 soquete torneado de 40 pinos
2 soquetes torneados de 28 pinos
2 soquetes torneados de 20 pinos
1 soquete torneado de 16 pinos
Barra de pinos simples180o
Barra de pinos dupla 180o
Barra de pinos torneados
Extras:
1 capacitor de 10uF x 16V eletroltico (circuito de reset)
1 resistor de 8k2 x 1/8W (circuito de reset)
1 tact-switch (circuito de reset)
1 regulador de tenso 7805 (fonte de alimentao)
1 jack para eliminador de pilhas (fonte de alimentao)
1 eliminador de pilhas de 9V x 500mA (fonte de alimentao)
1 conector latch fmea de 10 pinos (cabo de comunicao)
1 conector DB-25 fmea com capa (cabo de comunicao)
2 metros de flat-cable de 10 vias (cabo de comunicao)
DISCLAIMER: This is free software. As far as warranty is concerned, you get exactly
what you pay for! I have tried to make this code as good as possible during the four
weeks I worked on it, but nobody is perfect and portions (the single step in particular)
were never well tested. USE AT YOUR OWN RISK. The assembly source is provided
in case there's something you don't like.
ADDITIONAL DISCLAIMER: This doc file has lots of tyopes and other errorss, and I
really don't care. PAULMON was written to be easy enough that this file ought to be
unnecessary, but people ask for it nonetheless, usually before they even try to use
the thing.
On-line Help:
By typing '?' at the main menu, a help screen summarizing the available
commands is printed. On-line help is also available regarding the single step run
feature. This help is accessed by typing '?' just after using the 'R' command. While in
the single step mode, a summary of commands is also available, again by typing '?'.
ORG locat
DB 0A5H,0E5H,0E0H,0A5H ;signature bytes
DB 35,255,0,0 ;id (35=prog, 253=startup, 254=command)
DB 0,0,0,0 ;prompt code vector
DB 0,0,0,0 ;reserved
DB 0,0,0,0 ;reserved
DB 0,0,0,0 ;reserved
DB 0,0,0,0 ;user defined
DB 255,255,255,255 ;length and checksum (255=unused)
DB "Program Name",0
ORG locat+64 ;executable code begins here
If the key is a letter, it must be uppercase. If you use a key which conflicts with
the built-in commands, your new command will be override by the built-in one... so be
careful.
When PAULMON2 runs your plug-in command, R6 & R7 will contain the value
of the memory pointer, which you can change if you like. When your command is
finished, it should terminate in a RET instruction. If the stack pointer is different from
what it what when PAULMON2 called your command, you will almost certainly crash
the machine. Apart from SP, R6, and R7, and the return value on the stack, you may
use whatever memory you need. If your command needs to store data to be used
next time it is run, 08-0F and 20-2F are areas which PAULMON2 (in it's default
configuration) will not use.
The "prompt code vector" is a feature where programs or commands in
memory have an opportunity to run and add some text to the prompt that
/* "main" program */
at locat+0x40 void program (void)
{
pmSetIntVect (&ext0, &exter0);
IT0=1;
EX0=1;
EA=1;
printf ("Hello world!\n");
while (1);
} /* end of "main" program */
The Code Starting Address must be set to the same value of locat
(Options menu Project option Linker dialog box).