Você está na página 1de 11

4/5/2010

Microprocessador de Propósito Geral

EEL7030 - Microprocessadores Sem RAM, ROM ou dispositivos de I/O

Barramento
CPU de Dados
Micropro
cessador
de RAM ROM Portas Timer Interface
propósito de I/O Serial
geral

Barramento de
Prof. Raimes Moraes Endereço

GpqCom – EEL
Vantagem: flexibilidade, sistema expansível ;
UFSC Desvantagem: custo, roteamento de placa e dimensões do circuito.

Microcontrolador
Microcontrolador
 CPU + Periféricos

 Periféricos:

- Portas de entrada e saída


CPU RAM ROM
- Interface Serial (CAN, SPI, USB, RF e etc)
- Memórias (ROM, RAM, Flash, XRAM, etc)
- Conversores AD e DA
I/O Port Timer Serial COM - Timers
Port - ...

Vantagem: menor custo, menor dimensão, rápido desenvolvimento;


 Família de Microcontrolador: CPU + diferentes periféricos
Desvantagem: baixa flexibilidade, não expansível;

Escolhendo um Microcontrolador 8051


 Características Básicas:
1. Considerar: consumo, velocidade, capacidade de
memória, número de portas de entrada e saída, timers,
encapsulamento, tamanho, interfaces de comunicação e  CPU de 8 bits;
demais periféricos necessários a aplicação;  endereça 64 Kb de memória de programa externa;
 endereça 64 Kb de memória de dados externa;
2. Custo e disponibilidade no mercado. Facilidade para
upgrade (grande família)  4 kbytes de memória ROM interna para programas;
 128 bytes de memória RAM interna para dados;
 4 portas de entrada e saída (8 pinos cada);
3. Disponibilidade de ferramentas de desenvolvimento:
 5 vetores de interrupção com 2 níveis de prioridade:

• assemblers, debuggers, compiladores, emuladores, 2 interrupções externas


simuladores, suporte técnico 2 temporizadores / contadores
1 interface serial

1
4/5/2010

8051 Pinos
Interrupções Externas
ROM para
do
memória de

8051
Controle de Entradas
Interrupções programa RAM Timer 1
do
4 kib 128 bytes Timer 0
contador

CPU

Controle de
Barramento
4 Portas de Porta
OSC
I/O Serial

P0 P2 P1 P3 TxD RxD
Endereço/Dados

Organização da Memória Alguns uC da família 8051 da Atmel


M E M Ó RIA DE PROGRAMA M E M Ó RIA DE D A DOS
Device Flash USB EEPROM (kiB) RAM F.max (MHz) I/O UART Timers ADC
FFFFh: (KiB) (Bytes) Pins
FFFFh:
AT89C5115 16 -- 2 512 40 20 1 2 Yes

AT89C5130A-M 16 Yes 1 1280 48 18/34 Yes Yes --

EXTERNAL AT89C5131A-L 32 Yes 1 1280 48 18/34 Yes Yes --

AT89C5131A-M 32 Yes 1 1280 48 18/34 Yes Yes --

AT89C5132 64 Yes -- 2304 20 44 Yes Yes Yes


EXTERNAL
AT89C51AC2 32 -- 2 1280 40 34 1 3 Yes
XXXXh: RAM
AT89C51AC3 64 -- 2 2304 60 32 1 3 Yes

AT89C51CC01 32 -- 2 1280 40 34 1 2 Yes


INTERNAL RAM
EA=0 EA=1
FFh: AT89C51CC02 16 -- 2 512 40 20 1 1 Yes
EXTERNAL INTERNAL ADD
SFR AT89C51CC03 64 -- 2 2304 40 34/37 1 2 Yes
REGISTERS
AT89C51ED2 64 -- 2 2048 60 32 1 3 --

0000h REGISTERS AT89C51IC2 32 -- -- 1280 60 34 1 3 --


00h: 0000h:
RESET AT89C51ID2 64 -- 2 2048 60 32 1 3 --
ADD REGISTERS just in devices with 256 bytes of RAM AT89C51RB2 16 -- -- 1280 60 32 1 3 --
XXXXh: = 1000h (8051)
PSEN 2000h (8052) AT89C51RC 32 -- -- 512 33 32 1 3 --
4000h
8000h AT89C51RC2 32 -- -- 1280 60 32 1 3 --

Conexão do 8051 com Memória de Programa


Externa P0 date INSTR Interface do
P1
EPROM
8051
74HC373
Com
80C51BH Latch Memória de
ALE G Programa Externa
ADDR
P0 date INSTR P2
P1 P3
74HC373 EPROM
PSEN OE
EA
80C51BH Latch
ALE G
ADDR
P2
P3

PSEN OE
EA

2
4/5/2010

P0 date INSTR
P1
74HC373 EPROM
80C51BH Latch
P0 date INSTR
P1
P3
ALE
P2
G
ADDR Exemplo de Leitura da Memória 74HC373 EPROM
EA
PSEN OE
de Programa Externa 80C51BH
EA Latch
ALE G ADDR
P2
P3
PSEN OE
CE

Interface do
RD WR
8051
DATA
Com
Memória de RAM
ADDR
Programa e DECODER
Dados
ADDR
Externas
CE
WR
RD

Registradores PSW - Program Status Word - Bit Addressable


7 6 5 4 3 2 1 0
CY AC F0 RS1 RS0 OV F1 P D0H

CY PSW.7 Carry flag


AC PSW.6 Auxiliary carry flag
F0 PSW.5 Definido pelo usuário
RS1 PSW.4 Bit 1 do seletor de Register Bank
RS0 PSW.3 Bit 0 do seletor de Register Bank
OV PSW.2 Overflow flag
F1 PSW.1 Definido pelo usuário
P PSW.0 Flag de paridade. 1 = impar,

MOV A, Rn Organização da Memória


Mnemônicos MOV A, direct M E M Ó RIA DE PROGRAMA M E M Ó RIA DE D A DOS

FFFFh:
MOV A,@Ri FFFFh:

MOV A,#data
EXTERNAL
MOV DPTR,#data16

EXTERNAL
Rn - registrador R0 a R7 do banco correntemente selecionado. XXXXh: RAM

direct - endereçamento direto, ou seja, direct é o endereço de uma posição de


memória RAM interna. INTERNAL RAM
EA=0 EA=1
FFh:
EXTERNAL INTERNAL ADD MOVX
SFR
@Ri - endereçamento indireto a uma posição de memória RAM interna Ri=R0 ou REGISTERS @DPTR,A
R1
0000h REGISTERS
#data - endereçamento imediato, onde data é uma constante de 8 bits incluída no 00h: 0000h:
RESET
corpo da instrução.
ADD REGISTERS just in devices with 256 bytes of RAM
XXXXh: = 1000h (8051)
#data16 - endereçamento imediato, onde data é uma constante de 16 bits incluida no PSEN 2000h (8052)
4000h
corpo da instrução. 8000h

3
4/5/2010

Organização da RAM Interna

RAM INTERNA
FFh:
8052
SFR
MEMÓRIA

REGISTERS
00h:

Organização da RAM Interna Low 128 bytes of Internal RAM


7Fh Organização da RAM
Interna
30h
2Fh
Bit-Addressable
Space

20h
11 1Fh
18h 4 Banks of
10 17h
10h 8 registers
01 0Fh R0 - R7
08h
00 07h Reset Value of
00h Stack Pointer

Acessible by Direct and Indirect Adressing

END. CÓDIGO
Special Function Registers SUBROTINA
Exemplo 000A CALL 2028H
000D MOV A,B
1 Salva atual PC (000Dh) na pilha. (O
PC é atualizado ao obter o código
da instrução CALL da memória);
PILHA END. DADO
2 Sobrescreve PC com endereço da
subrotina; (PC = 2028H)

SP 07H
3 Executa subrotina;

4 Retorna à instrução que se segue


ao CALL no programa principal SP+1 08H 0DH
(instrução RET). [PC LSB]
5 OBS: O SP é inicializado com o 00H
valor 07 quando o SP+1 09H [PC MSB]
microprocessador é
energizado/resetado

4
4/5/2010

Mnemônicos para SUBROTINA Mnemônicos para Desvio


LCALL: Especifica endereço de 16 bits. A instrução possui 3 bytes (opcode +
16 bits de endereço). Endereço de destino em qualquer lugar da memória (64
kiB).
Mnemônico Descrição
ACALL: Especifica endereço de 11 bits. A instrução possui 2 bytes (opcode + JZ <rel addr>
11 bits de endereço). Endereço de destino distante em até 2k (2^11). Salta se A = 0
JNZ <rel addr> Salta se A != 0
Mnemônicos para Desvio JC <rel addr> Salta se C = 1
JNC <rel addr> Salta se C != 1
LJMP: Especifica endereço de 16 bits. A instrução possui 3 bytes (opcode + 16
bits de endereço).
JB <bit>, <rel addr> Salta se bit = 1
JNB <bit>,<rel addr> Salta se bit != 1
AJMP: Especifica endereço de 11 bits. A instrução possui 3 bytes (opcode +
116 bits de endereço). JBC <bit>, <rel addr> Salta se bit =1, limpa bit

SJMP: Especifica off-set (-128 to +127) a ser somado ao PC para acessar a


próxima instrução. A instrução possui 2 bytes (opcode + offset).

Mnemônicos para Desvio ORG 0000H

MOV R1,#3
Mnemônico Descrição MOV R3,#4
CJNE A, direct, <rel addr> Compara A e memória. Salta se INC @R1
não igual MOV A,@R1
CJNE A, #data <rel addr> Compara A e dado. Salta se não MOV DPTR,#MENS
igual
MOVC A,@A+DPTR
CJNE Rn, #data <rel addr> Compara Rn e dado. Salta se não
igual MOV DPTR,#20H
CJNE @Rn, #data <rel addr> Compara Rn e memória. Salta se MOVX @DPTR,A
não igual SJMP $
DJNZ Rn, <rel addr> Decrementa Rn e salta se não
zero MENS: DB '124567890ABCDE'
DJNZ direct, <rel addr> Decrementa memória e salta se
não zero END

Fontes de Interrupção Fontes de Interrupção

IE - Interrupt Enable Register - Bit Addressable


7 6 5 4 3 2 1 0
EA ES ET1 EX1 ET0 EX0 A8H

sable all interrupts


External interrupt 0 enable
Serial interface interrupt enable Timer 0 interrupt enable
External interrupt 1 enable
Timer 1 interrupt enable
IE - Interrupt Enable Register - Bit Addressable
7 6 5 4 3 2 1 0
EA ES ET1 EX1 ET0 EX0 A8H
MOV IE,#10000101B; habilita INT0 E INT1
sable all interrupts
External interrupt 0 enable
Serial interface interrupt enable Timer 0 interrupt enable
External interrupt 1 enable
Timer 1 interrupt enable

5
4/5/2010

Temporizadores / Contadores
Interrupções Externas Registradores

TCON
MSB LSB
As interrupcões externas INT0 e INT1 podem ser ativadas
por nível ou borda. TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 88H

Depende dos bits IT0 e IT1 do registrador TCON. ITx - Interrupt control bit. 1 => borda de descida
0 => nível lógico baixo

Os flags que identificam ocorrência destas interrupcões


externas são os flags IE0 e IE1 de TCON.
IEx - External Interrupt flag.
Setado pelo hardware quando interrupção detectada.
Apagada pelo software qdo salta para o tratador int.

Temporizadores / Contadores
Registradores
Interrupções

TCON
MSB LSB
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 88H

IP - Interrupt Priority Register - Bit


7 Addressable
6 5 4 3 2 1 0
MOV A,TCON PS PT1 PX1 PT0 PX0 B8H
ORL A,#00000101B; habilita INTs por borda
MOV TCON,A External interrupt 0 priority
Timer 0 interrupt priority
Serial interface
External interrupt 1 priority
interrupt priority bit Timer 1 interrupt priority

Interrupções

IP - Interrupt Priority Register - Bit


7 Addressable
6 5 4 3 2 1 0 Faça um programa que aceite int0 (acionada por
PS PT1 PX1 PT0 PX0 B8H borda). Qdo a int0 for solicitada, escrever na
porta P1, caractere por caractere, a cadeia de 16
External interrupt 0 priority
Serial interface
Timer 0 interrupt priority caracteres: ‘Microcontrolador’.
External interrupt 1 priority
interrupt priority bit Timer 1 interrupt priority

MOV IP,#00000100B; prioridade INT1 superior às demais

6
4/5/2010

Temporizadores / Contadores
Modos 0 e 1

reset equ 00h OSC /12


volta: cjne @r0,#1,volta
ltint0 equ 03h ; local tratador
mov state,#0h
state equ 20h C/T=0
mov a,r1
overflow
movc a,@a+dptr Tx PIN
org reset ;PC=0 depois de reset TLx THx
mov p1,a (5 bits) TFx
jmp inicio C/T=1 (8 bits)
inc r1 (8 bits) INTERRUPT
cjne r1,#16,volta TRx
CONTROL
org ltint0
jmp $
jmp handler
handler: mov state,#1h GATE
reti
inicio:
mov ie,#10000001b ; habilita int
mov tcon,#00000001b ; borda
tabela: db 'Microcontrolador'
TMOD
INTx PIN

mov state,#0h ;inicialização


end MSB LSB
mov r0,# state
mov dptr,#tabela GATE C/T M1 M0 GATE C/T M1 M0 89H
mov r1,#0

TIMER 1 TIMER 0

reset equ 0h
Programação dos Timers ltmr0
state
equ 0bh ; local tratador
equ 20h

volta: cjne @r0,#1,volta


org reset ;PC=0 depois de reset
1) Habilitar interrupções dos timers (EA, ETx)
jmp inicio mov th0,#0ffh
2) Especificar o modo de funcionamento dos timers (TMOD) mov tl0,#09ch
org ltmr0
jmp handler mov state,#0h
3) Especificar intervalo de contagem (THx e TLx)
mov a,r1
inicio: movc a,@a+dptr
4) Disparar contador (setb TRx)
mov ie,#10000010b ; habilita mov p1,a
mov tmod,#01h ; modo 1 inc r1
5) Não esquecer tratadores para os timers nos seus devidos endereços.
cjne r1,#16,volta
mov th0,#0ffh jmp $
OBS: É possível testar, freqüentemente, se houve encerramento da contagem sem
mov tl0,#09ch
necessidade de habilitar interrupções (polling dos flags TFx) em programas mais
dedicados. handler : mov state,#1h
mov state,#0h ;inicialização reti
mov r0,# state
mov dptr,#tabela
Exemplo: Faça um programa que escreva na porta P1, a cadeia de 16 mov r1,#0 tabela: db 'Microcontrolador'
caracteres: ‘Microcontrolador’ à taxa de 10 kiB/s ( (1/10000) = 100 us)
end
setb tr0

Temporizadores / Contadores
Modos 2
OSC /12

C/T=0
Tx PIN
TLx overflow
(8 bits) TFx
C/T=1
INTERRUPT
CONTROL
TRx

GATE

THx
(8 bits)
INTx PIN

MSB TMOD LSB


GATE C/T M1 M0 GATE C/T M1 M0 89H

TIMER 1 TIMER 0

7
4/5/2010

Temporizadores / Contadores Transmissão Serial


INT1 PIN Modos 3
No modo 3,
GATE 0 se modo 3 para Timer 1 cessa contagem
TH1
timer 1 CONTROL
(o mesmo que TR1=0).
C/T=1
TL1
Se fora do modo 3, pode
T1 PIN
ser usado pela serial
C/T=0

TR1 CONTROL
TH0 overflow
TF1
(8 bits)
OSC /12 INTERRUPT

C/T=0
T0 PIN
TL0 overflow
(8 bits) TF0
C/T=1
INTERRUPT
CONTROL
TR0
GATE

No modo 3,
Timer 0 implementa dois contadores de 8 bits.
INT0 PIN TR1 e TF1 são redirecionados para o Timer 0 (TH0)

Transmissão Serial Níveis Lógicos EIA RS-232C


(Electronics Industries Association)
EIA RS-232C: padrão industrial para a comunicação serial de dados binários
entre um DTE (terminal de dados) e um DCE (comunicador de dados). •Tamanho máximo do cabo: 15 metros
•Velocidade de transmissão: 1Mbits/s

Foi largamente utilizado em PCs, estando ainda presente em muitos


equipamentos.

Pin
DB25 DB9 Signal Name Direction
1 CD Chassis Ground -
2 2 TD Transmit Data DTE  DCE
3 3 RD Receive Data DTE  DCE
4 7 RTS Request To Send DTE  DCE
5 8 CTS Clear To Send DTE  DCE
6 6 DSR Data Set Ready DTE  DCE
7 5 SG Signal Ground -
8 1 DCD Data Carrier Detect DTE  DCE
20 4 DTR Data Terminal Ready DTE  DCE
22 9 RI Ring Indicator DTE  DCE
DTE
Conector Macho

8
4/5/2010

Conexões
Ideal
Handshaking
• Troca de sinais para estabelecer comunicação
condicional

• Processo
– Transmissor ativa RTS
Mínimo – Receptor detecta CTS por interrupção ou
polling
– Receptor ativa RTS
– Transmissor aguarda CTS
– Transmissor envia dados

SCON - Serial Port Control Register - Bit Addressable


7 6 5 4 3 2 1 0 Modos de Programação
SM0 SM1 SM2 REN TB8 RB8 TI RI 98H

Mode Select Received interrupt


00 mode 0 Set by hardware when reception finish
01 mode 1 except if SM2 =1
SM0 SM1 MODO TIPO BITS TAXA
10 mode 2 Cleared by software
11 mode 3
Transmited interrupt
Enable multiprocessor cleared by software
comunication in modes 2 and 3 Mode 2 and 3 is de 9 bits. 0 0 0 SÍNCRONO - HD 8 Fclock/12
In mode 1 if SM2=1 RI flag will
Mode 1 is the stop bit if SM2=0
be set if a valid stop bit is received
In mode 0 RB8 is not used
In mode 0 SM2 should be 0 0 1 1 ASSÍNCRONO – FD 10 Variável
Enable signal reception In mode 2 and 3 is the 9 bit
that will be tranmitted

1 0 2 ASSÍNCRONO - FD 11 Fclock/32
ou /64

1 1 3 ASSÍNCRONO - FD 11 Variável

Full Duplex • SM2: Habilita comunicação serial com múltiplos


processadores nos modos 2 e 3.
Full duplex (FD): dados são (ou podem ser) transmitidos e
recebidos simultaneamente por ambos os dispositivos
conectados, requerendo para tal, conexões adequadas • Nestes modos, se SM2 for colocado em 1, Rl
não será setado a menos que o nono bit
recebido (RB8) seja 0.

• Desta forma, é possível que um dispotivo acesse


vários 8051 em um mesmo barramento e peça para
um deles modificar SM2 para que estabeleça
comunicação apenas com o mesmo para TB8=1.

9
4/5/2010

Programação Baud Rate PCON - Power Control Register


7 6 5 4 3 2 1 0
Modo 2 => BR= [ ( 2^SMOD ) / 64 ] x f osc
SMOD GF1 GF2 PD IDL 87H
Modo 1 e 3 => Timer 1 em modo de auto carregamento (auto-load /TMOD = 20H). Idle mode bit. Setting this bit activate idle mode
Neste caso, a baud rate é dada por: Power Down bit. Setting this bit activate power down
General purpose flag bit
General purpose flag bit
BR= [ ( 2^SMOD ) / 32 ] x { f osc / [ 12 x (256 - TH1) ] }

------------- Timer 1 ----------- xtal2 xtal1


Baud Rate Fosc SMOD C/T Mode Reload Value
Mode 0 Max: 1 MHz 12 MHz X X X X CLOCK. INTERRUPT
OSC.
GEN. SERIAL PORT
Mode 2 Max: 375K 12 MHz 1 X X X TIMER BLOCKS
Modes 1, 3: 62.5K 12 MHz 1 0 2 FFH
19.2K 11.059 MHz 1 0 2 FDH CPU
9.6K 11.059 MHz 0 0 2 FDH IDL
4.8K 11.059 MHz 0 0 2 FAH PD
2.4K 11.059 MHz 0 0 2 F4H
1.2K 11.059 MHz 0 0 2 E8H Para sair de Idle: por uma interrupção que esteja habilitada ou por Reset.
137.5K 11.986 MHz 0 0 2 1DH Por interrupção: vai para o tratador e após RETI , continua de onde parou. Por
110K 6 MHz 0 0 2 72H Reset: continua de onde parou.
110K 12 MHz 0 0 1 FEEBH Para sair de Power Down - Somente por Reset (não altera RAM).

Organização Pinos da Porta P1 Escrevendo “1” em Pino P1.X

Read latch Vcc Read latch Vcc


TB2 TB2
Load(L1) Load(L1) 2. output pin is
1. write a 1 to the pin Vcc
D Q P1.X D Q
1 P1.X
Internal CPU Internal CPU
bus P1.X pin bus P1.X pin
0 output 1
Write to latch Clk Q M1 Write to latch Clk Q M1

TB1 TB1
Read pin ⌦P0.x Read pin

8051 8051

Escrevendo “0” em Pino P1.X Lendo “1” em Pino P1.X

Read latch Read latch Vcc 2. MOV A,P1


Vcc
TB2 TB2 external pin=High
2. output pin is 1. write a 1 to the pin MOV Load(L1)
Load(L1) P1,#0FFH
1. write a 0 to the pin ground
0 1 1 P1.X pin
Internal CPU D Q P1.X Internal CPU bus D Q
bus P1.X pin P1.X

1 output 0 0 M1
Write to latch Clk Q M1 Write to latch Clk Q

TB1 TB1

Read pin Read pin


3. Read pin=1 Read latch=0
Write to latch=1
8051 IC
8051 IC

10
4/5/2010

Lendo “0” em Pino P1.X Lendo do Latch de Porta


Algumas instruções fazem a leitura do Pino (TB1) e outros da saída do Latch
Read latch Vcc 2. MOV A,P1 (TB2)
TB2
1. write a 1 to the pin Load(L1) external pin=Low
Instruções que leêm do latch (“lê-modifica-escreve”). Exemplos:
MOV P1,#0FFH
1 0
Internal CPU bus D Q P1.X pin
ANL AND lógico ex. ANL P1,A
P1.X ORL OR lógico ex. ORL P2,A
0 M1 XRL XOR lógico ex. XRL P3,A
Write to latch Clk Q
CPL complementa bit ex. CPL P3.0
INC incremento ex. INC P2
DEC decrementa ex. DEC P2
TB1 DJNZ decrementa e salta se não zero ex. DJNZ P3,LABEL
Read pin MOV PX.Y,C move bit de carry para bit Y da Port X
3. Read pin=1 Read latch=0 CLR PX.Y limpa bit Y da Port X
Write to latch=1
8051 SET PX.Y seta bit Y da Port X

Port 0

11