98
Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 • Organização: – Microcontroladores versus microprocessadores – Os microcontroladores da família 80C51 – Interface com o exterior – Modelo de programação – Processamento dos pedidos de interrupção – Modos de endereçamento e tipos de instruções – Exemplo: Simulação de um registo de deslocamento

Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Embed Size (px)

Citation preview

Page 1: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 1

A família 80C51• Organização:

– Microcontroladores versus microprocessadores– Os microcontroladores da família 80C51– Interface com o exterior– Modelo de programação– Processamento dos pedidos de interrupção– Modos de endereçamento e tipos de instruções– Exemplo: Simulação de um registo de deslocamento

Page 2: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 2

Microcontroladores (Cs) e microprocessadores (Ps)• Um microcontrolador é fundamentalmente um

componente que integra os três blocos principais na arquitectura de um computador: CPU, memória e E/S

• Entre Cs e Ps existem as seguintes diferenças:– Os Cs dispõem de E/S interna de vários tipos– Os Cs podem dispor de ROM / EPROM– Os Cs são sobretudo vocacionados para tarefas de

controlo, onde 8 bits são a solução mais comum

Page 3: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 3

Os Cs da família 80C51• A família 80C51 apresenta uma arquitectura interna

algo complexa, o que a poderia desaconselhar como veículo para a introdução a este domínio. Contudo:– Trata-se de componentes com grande uso na prática, para

os quais existe uma enorme variedade de aplicações de apoio ao projecto, comerciais ou do domínio público

– A complexidade não é tanto devida à arquitectura do CPU interno, mas mais pela necessidade de se multiplexarem muitos sinais em poucos pinos

Page 4: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 4

80C51: Arquitectura do núcleo de base

Controlo de

interrupções 4K

ROM 128

RAM

Temporizadores / Contadores

CPU

Oscilador 4 portas de

E/S paralela Porta série

TxD RxD P0 P2 P1 P3

Interrupções externas

Entradas dos contadores Endereços / dados

Interrupções internas

Sinais de controlo

(cristal exterior)

(2 T/C de 16 bits)

Page 5: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 5

Variantes dentro da família 80C51• As variantes principais que estão disponíveis nesta

família têm as seguintes características principais:Função VariantesRAM 64 bytes a 1.024 bytes(EP)ROM 0 a 32 KbytesTimers / counters 1 a 3 (16 bits)E/S paralela 2 a 7 portas (8 bits)Interfaces série RS-232C, I2C, CANInterrupções externas 1 a 10Frequência de relógio 32 KHz a 40 MHzEncapsulamento 24 a 80 pinos (DIP, LCC, QFP)

Page 6: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 6

Organização de memória• A família 80C51 distingue entre memória de programa

(MP) e memória de dados (MD):– A MP contém o programa a executar (instruções e

operandos), enquanto a MD serve apenas para dados– Uma vez que existe apenas um barramento de endereços e

um barramento de dados, a distinção entre MP e MD é feita através do sinal de leitura (MP: /PSEN, MD: /RD)

– Na MP efectuam-se apenas operações de leitura, sendo que na MD se efectuam operações de leitura e escrita

Page 7: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 7

Organização de memória (cont.)• Ainda a distinção MP / MD:

– A existência de dois tipos de memória obriga o 80C51 a ter internamente dois apontadores (PC, DP)

– A selecção do sinal de leitura apropriado (/PSEN ou /RD) é feita automaticamente pela instrução a executar

– MP e MD não são necessariamente ROM e RAM, podendo mesmo coexistir no mesmo componente de memória, e.g. uma NVRAM (de onde viria o sinal de leitura, neste caso?)

Page 8: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 8

Organização de memória (cont.)• Os recursos internos de MP e MD podem ser

complementados externamente:

(externa)

/EA=0(externa) 0000h

0FFFh

1000h

FFFFhh

/EA=1(interna)

(externa) FFFFh

(interna)

00h

FFh

/PSEN /WR/RD

Memória de programa (MP) Memória de dados (MD)

0000h

Page 9: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 9

Organização de memória (cont.)• O 80C51 inicializa a execução do programa a partir do

endereço 0 (zero), que poderá ser de MP interna ou externa, de acordo com o estado do pino /EA:– Quando /EA=0, o 80C51 começa a execução do programa

pela MP externa– Nos casos em que existe MP interna, forçar /EA=0 significa

que esta memória não deve ser considerada (no entanto, se existir MP interna, será normalmente por aí que se iniciará a execução do programa)

Page 10: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 10

Organização de memória (cont.)• Alguns aspectos importantes quanto à MD:

– Os 128 endereços superiores permitem de facto aceder a 256 posições, de acordo com o modo de endereçamento (conforme seja directo ou indirecto, como veremos adiante)

– Do total de 384 posições assim existentes, 128 correspondem aos registos de funções especiais (SFR, special function registers) (por exemplo, o DP ocupa dois destes 128 SFR)

(interna)

00h

FFh

Page 11: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 11

Interface com o exterior• Barramentos:

Porto 0 (ou barramento dedados e endereços — AD[0:7])

Porto 1

Porto 2 (ou barramento deendereços — A[8:15])

Porto 3 (ou os seguintes sinais:RxD, TxD, /INT0 e /INT1, T0 eT1, /WR e /RD)

XTAL1

XTAL2

RST

ALE-/PROG

VCC8

8

8

8/EA-VPP

/PSENVSS

+5 V

cristal

Page 12: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 12

Interface com o exterior (cont.)• Repare-se ainda que:

– O barramento de endereços é partilhado com os portos de E/S paralela 0 e 2

– O porto 0 é também partilhado com o barramento de dados

– AD[0..7]: A multiplexagem dados / endereços (oito bits menos significativos) é feita no domínio temporal (primeiro o endereço e depois os dados)

P0 / AD[0:7]

P1

P2 / A[8:15]

P3 / …

XTAL1

XTAL2

VCC8

8

8

8

+5 V

cristal

Page 13: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 13

Interface com o exterior (cont.)• Atendendo à multiplexagem temporal em AD[0..7], o

80C51 proporciona o sinal de controlo (ALE) para uma latch externa que memoriza a metade menos significativa do endereço:

AD[0:7]

A[0:7]

D[0:7]

A[8:15]

Porto 0

Porto 2

Porto 3/WR/RD

Registo

80C51 Memória

A[8:15]

ALE

8

88

Page 14: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 14

Interface com o exterior (cont.)• Barramento de controlo:

– RST (reset)– /EA-VPP– /PSEN– ALE - /PROG– /INT0 e /INT1 (entradas

de interrupção)– T0 e T1

– /WR – /RD– XTAL1 e XTAL2 (pinos

do oscilador interno)

Page 15: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 15

Configuração de pinosP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST

P3.0 - RxDP3.1 - TxD

P3.2 - /INT0P3.3 - /INT1

P3.4 - T0P3.5 - T1

P3.6 - /WRP3.7 - /RD

XTAL2XTAL1

0 V

123456789

1011121314151617181920

4039383736353433323130292827262524232221

+5 VP0.0 - AD0P0.1 - AD1P0.2 - AD2P0.3 - AD3P0.4 - AD4P0.5 - AD5P0.6 - AD6P0.7 - AD7/EA - VPPALE - /PROG/PSENP2.7 - A15P2.6 - A14P2.5 - A13P2.4 - A12P2.3 - A11P2.2 - A10P2.1 - A9P2.0 - A8

Page 16: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 16

Diagramas temporais• Leitura da MP externa:

ALE

Porto 0

140 ns (mín.)

/PSEN 80 ns(máx.)

A0:A7 Instrução A0:A7

Porto 2 A8:A15 A8:A15 397 ns (máx.)

Page 17: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 17

Diagramas temporais (cont.)• Leitura da MD externa:

ALE

Porto 0

440 ns (mín.)/PSEN

A0:A7 (Riou DPL)

Instr.A0:A7 (PCL)

Porto 2 P2.0:P2.7 ou A8:A15 (do DPH) A8:A15 (PCH)

152 ns (máx.)/RD

Dados

648 ns (máx.)

Page 18: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 18

Diagramas temporais (cont.)• Escrita na MD externa:

ALE

Porto 0

440 ns (mín.)/PSEN

A0:A7 (Riou DPL)

Instr.A0:A7 (PCL)

Porto 2 P2.0:P2.7 ou A8:A15 (do DPH) A8:A15 do PCH

70 ns (mín.)/WR

Dados

AD[0:7]

A[0:7]

D[0:7]

A[8:15]

Porto 0

Porto 2

Porto 3/WR/RD

Registo

80C51 Memória

A[8:15]

ALE

8

88

Page 19: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 19

Modelo de programação• Diagrama de

blocos da arquitectura de base:

RAM EPROM

Acum.

SFR

Controlo

Reg. B

PSWIR

P0 latch P2 latch

Stack pointer

P0 drivers

Prog. counter

Data pointer

P3 latchP1 latch

P2 drivers

P1 drivers P3 drivers

ALU

8 8

8 8

Page 20: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 20

A RAM (MD) interna revisitada

Acessível porendereçamentodirecto eindirecto (RAM)

Acessível porendereçamentoindirecto (RAM)

Acessível porendereçamentodirecto (SFRs)

FFH

80H7FH

0

(128 bytessuperiores)

(128 bytesinferiores)

Registos defunçõesespeciais(SFRs)

18H 10H 08H 0

20H

7FH

2FH

1FH 17H 0FH 07H

Espaço endereçável ao bit (endereços de bit entre 0 e 7F)

Quatro bancos de oito registos cada (registos R0 a R7)

Valor inicial (após reset) do apontador para a stack (SP)

11 10 01 00

Bits de selecção do banco na palavra de estado (PSW) 30H

Page 21: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 21

Os registos de funções especiais (SFR)

(conjuntos de oito bytes)F8H FFHF0H B F7HE8H EFHE0H ACC E7HD8H DFHD0H PSW D7HC8H CFHC0H C7HB8H IP BFHB0H P3 B7HA8H IE AFHA0H P2 A7H98H SCON SBUF 9FH90H P1 97H88H TCON TMOD TL0 TL1 TH0 TH1 8FH80H P0 SP DPL DPH PCON 87H

Page 22: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 22

Pedidos de interrupção• A arquitectura do núcleo de base do 80C51 suporta

cinco fontes de interrupção:– Duas interrupções externas (pinos /INT0 e /INT1)– Duas interrupções provenientes dos timers– Uma interrupção proveniente do porto série

• Cada uma destas fontes pode ser habilitada ou inibida e a cada uma pode ser atribuída alta ou baixa prioridade (em ambos os casos, individualmente)

Page 23: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 23

Pedidos de interrupção (cont.)• Sobre a prioridade das interrupções:

– O atendimento a uma interrupção de baixa prioridade pode ser interrompido por uma interrupção de alta prioridade, mas não vice-versa (e se forem interrupções da mesma prioridade?)

– No que respeita a pedidos simultâneos, será atendido primeiro o que tiver mais alta prioridade; se forem iguais, será realizada uma sequência de pooling para determinar qual será atendido primeiro

Page 24: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 24

Pedidos de interrupção (cont.)• O atendimento a um pedido de interrupção começa

com o armazenamento do valor actual do PC na stack, a que se segue uma chamada à respectiva rotina de atendimento:

Fonte de interrupção Endereço de atendimentoPino exterior External Interrupt 0 (/INT0) 0003HOverflow no timer 0 (TF0) 000BHPino exterior External Interrupt 1 (/INT1) 0013HOverflow no timer 1 (TF1) 001BHConcluiu-se uma recepção ou transmissão série (RI , TI ) 0023H

Page 25: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 25

Modos de endereçamento• Será adoptada nesta apresentação a mesma

classificação e organização que são seguidas na folha de características do componente (Philips)

• Por cada modo de endereçamento, apresenta-se uma explicação sumária e alguns exemplos ilustrativos da sua utilização

Page 26: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 26

Endereçamento directo• O operando é especificado através de um endereço

de oito bits que se encontra na posição de MP seguinte à que contém o código da instrução (só pode ser usado com as posições internas de RAM e com os SFR):

Mnemónica Operação Flags Código #Byte #Mmov r0,5fh (r0) (5fh) nenhuma A8 5F 2 2mov a,p1 (a) (90h) nenhuma E5 90 2 1

Page 27: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 27

Endereçamento indirecto• É usado um registo para especificar o endereço do

operando (tanto pode ser usado com as posições de RAM internas como externas):

Mnemónica Operação Flags Código #Byte #Mmov a,@r1 (a) ((r1)) nenhuma E7 1 1movx a,@r1 (a) ((r1)) nenhuma E3 1 2movx @dptr,a ((dptr)) (a) nenhuma F0 1 2

Page 28: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 28

Endereçamento ao registo• O próprio código da instrução contém um campo com

três bits que identifica qual dos registos R0 a R7 deve ser usado (dentro do banco seleccionado):

Mnemónica Operação Flags Código #Byte #Mmov a,r1 (a) (r1) nenhuma E9 1 1inc r5 (r5) (r5)+1 nenhuma 0D 1 1

Page 29: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 29

Endereçamento específico dos registos• No caso das instruções que são específicas de certos

registos (por exemplo, do acumulador):

Mnemónica Operação Flags Código #Byte #Mcpl a (a) /(a) nenhuma F4 1 1inc dptr (dptr) (dptr)+1 nenhuma A3 1 2

Page 30: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 30

Endereçamento imediato• O valor do operando está contido na posição de MP

seguinte à que contém o código da instrução:Mnemónica Operação Flags Código #Byte #Mcjne r5,#2ah,marca (pc) (pc)+3

se (r5)2ah(pc) (pc)+rel

se(r5)<2ah(c) 1senão(c) 0

BD 2AF1

3 2

mov a,#76h (a) #76h nenhuma 74 76 2 1

Page 31: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 31

Endereçamento indexado• É usado para a leitura de valores armazenados na

MP, servindo como apontador um registo de 16 bits (DP ou PC):

Mnemónica Operação Flags Código #Byte #Mmovc a,@a+dptr (a) ((a)+(dptr)) nenhuma 93 1 2movc a,@a+pc (pc) (pc)+1

(a) ((a)+(pc))nenhuma 83 1 2

jmp @a+dptr (pc) (a)+(dptr) nenhuma 73 1 2

Page 32: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 32

Ainda os modos de endereçamento• Apesar de a folha de características do 80C51 não o

referir explicitamente, este componente suporta também um modo de endereçamento a que é habitualmente dada a designação de endereçamento relativo (e.g. jb P1.2,marca)

• Neste modo, e em vez do endereço de destino, o operando consiste na diferença (offset) entre esse endereço e o endereço actual

Page 33: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 33

Ainda os modos de endereçamento (cont.)• O offset é apresentado

como um byte em complemento para dois, o que permite saltos de até 127 bytes para a frente ou 128 bytes para trás:

Decimal Complemento para dois-128 10000000 (hexadecimal 80)-127 10000001 (hexadecimal 81)-126 10000010 (hexadecimal 82)... ...-2 11111110 (hexadecimal FE)-1 11111111 (hexadecimal FF)0 00000000 (hexadecimal 00)1 00000001 (hexadecimal 01)2 00000010 (hexadecimal 02)... ...

126 01111110 (hexadecimal 7E)127 01111111 (hexadecimal 7F)

Page 34: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 34

Ainda os modos de endereçamento (cont.)• Esta solução permite poupar um byte na

especificação do endereço, sendo o valor do offset calculado pela aplicação que gera o código objecto

• Exemplo:0110000000000101

Código instr.

(60h, código de jz marca)(05h, valor do offset)

Código instr. endereço para onde sepretende saltar

0006000700080009000A000B000C000D

Endereços no exemploconsiderado:

endereço da instrução seguinte(deverá ser incrementado 5vezes para chegar ao endereçoda marca)

marca:

Page 35: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 35

Tipos de instruções• O importante não é conhecer todas as instruções

(nem isso seria possível), mas sim conhecer bem as características dos seus cinco grupos principais:– Instruções aritméticas (arithmetical)– Instruções lógicas (logical)– Transferência de dados (data transfer)– Instruções Booleanas (Boolean)– Instruções de salto (jump)

Page 36: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 36

Instruções aritméticasMnemónica Operação Modos endereçamento Tempo de

dir. ind. reg. im. execução(s)

add a,<byte> (a) = (a)+<byte> 1addc a,<byte> (a) = (a)+<byte>+(c) 1subb a,<byte> (a) = (a)-<byte>-(c) 1inc a (a) = (a)+1 (específico do ACC) 1inc <byte> <byte> = <byte>+1 1inc dptr (dptr) = (dptr)+1 (específico do DP) 2dec a (a) = (a)-1 (específico do ACC) 1dec <byte> <byte> = <byte>-1 1mul ab (b) b.a[15:8], (a) b.a[7:0] (específico do ACC e B) 4div ab (a)=Int[a/b], (b)=Mod[a/b] (específico do ACC e B) 4da a Ajuste para decimal (específico do ACC) 1

Page 37: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 37

Instruções aritméticas (cont.)• Exemplos:

Mnemónica Operação Flags Código #Byte #Maddc a,#3bh (a) (a)+(c)+#3bh c, ac, ov 34 3B 2 1mul ab b b.a[15:8],

a b.a[7:0]c=0, ov A4 1 4

Page 38: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 38

Instruções lógicasMnemónica Operação Modos endereçamento Tempo de dir. ind. reg. im. execução (s) anl a,<byte> (a) = (a) <byte> 1 anl <byte>,a <byte> = <byte> (a) 1 anl <byte>,#data <byte> = <byte> #data 2 orl a,<byte> (a) = (a) <byte> 1 orl <byte>,a <byte> = <byte> (a) 1 orl <byte>,#data <byte> = <byte> #data 2 xrl a,<byte> (a) = (a)<byte> 1 xrl <byte>,a <byte> = <byte>(a) 1 xrl <byte>,#data <byte> = <byte>#data 2 clr a (a) = 0 (específico do ACC) 1 cpl a (a) = /(a) (específico do ACC) 1 rl a Rotaciona (a) à

esquerda (específico do ACC) 1

rlc a Rotaciona (a) à esquerda através do c

(específico do ACC) 1

rr a Rotaciona (a) à direita (específico do ACC) 1 rrc a Rotaciona (a) à direita

através do c (específico do ACC) 1

swap a (a[3:0]) (a[7:4]) (específico do ACC) 1

Page 39: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 39

Instruções lógicas (cont.)• Exemplos:

Mnemónica Operação Flags Código #Byte #Morl 4eh,#3bh (4eh) (4eh) #3bh nenhuma 43 4E 3B 3 2clr a (a) 0 nenhuma E4 1 1

Page 40: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 40

Instruções de transferência de dados• Estas instruções sub-dividem-se em três grupos

principais:– Transferência de dados na MD interna– Transferência de dados na MD externa– Leitura de tabelas armazenadas na MP

• Cada um destes tipos será agora considerado individualmente

Page 41: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 41

Transferência de dados: MD interna

Mnemónica Operação Modos endereçamento Tempo dedir. ind. reg. im. execução (s)

mov a,<fonte> (a) = <fonte> 1mov <dest>,a <destino> = (a) 1mov <dest>,<fonte> <destino> = <fonte> 2mov dptr,#data16 (dptr) = #data16 2push <fonte> inc (sp);

mov ((sp)),<fonte> 2

pop <destino> mov <destino>,((sp));dec (sp)

2

xch a,<byte> (a) <byte> 1xchd a,@ri (a[3:0]) ((ri[3:0])) 1

Page 42: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 42

Transferência de dados: MD interna (cont.)• Exemplos:

Mnemónica Operação Flags Código #Byte #Mmov 7fh,3bh (7fh) (3bh) nenhuma 85 3B 7F 3 2mov dptr,#3b07h dptr[15:8] #3bh

dptr[7:0] #07hnenhuma 90 3B 07 3 2

xch a,r7 (a) (r7) nenhuma CF 1 1

Page 43: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 43

Transferência de dados: MD externa

Bits de endereço Mnemónica Operação Tempo deexecução (s)

8 bits movx a,@ri (i=0 ou 1) Carrega (a) com ((ri)) 28 bits movx @ri,a (i=0 ou 1) Carrega ((ri)) com (a) 216 bits movx a,@dptr Carrega (a) com ((dptr)) 216 bits movx @dptr,a Carrega ((dptr)) com (a) 2

Mnemónica Operação Flags Código #Byte #Mmovx a,@r1 (a) ((r1)) nenhuma E3 1 2movx @dptr,a ((dptr)) (a) nenhuma F0 1 2

Page 44: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 44

Transferência de dados: Leitura de tabelas na MP

Mnemónica Operação Tempo deexecução (s)

movc a,@a+dptr Carrega (a) com o conteúdo da MPem ((a)+(dptr))

2

movc a,@a+pc Carrega (a) com o conteúdo da MPem ((a)+(pc))

2

Mnemónica Operação Flags Código #Byte #Mmovc a,@a+dptr (a) ((a)+(dptr)) nenhuma 93 1 2movc a,@a+pc (pc) (pc)+1;

(a) ((a)+(pc))nenhuma 83 1 2

Page 45: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 45

Instruções BooleanasMnemónica Operação Tempo de

execução (s)anl c,<bit> (c) = (c) <bit> 2anl c,/<bit> (c) = (c) /<bit> 2orl c,<bit> (c) = (c) <bit> 2orl c,/<bit> (c) = (c) /<bit> 2mov c,<bit> (c) = <bit> 1mov <bit>,c <bit> = (c) 2clr c (c) = 0 1clr <bit> <bit> = 0 1setb c (c) = 1 1setb <bit> <bit> = 1 1cpl c (c) = /(c) 1cpl <bit> <bit> = /<bit> 1jc marca Salta para marca se (c)=1 2jnc marca Salta para marca se (c)=0 2jb <bit>,marca Salta para marca se <bit>=1 2jnb <bit>,marca Salta para marca se <bit>=0 2jbc <bit>,marca Se <bit>=1 então [salta para marca; <bit> 0] 2

Page 46: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 46

Instruções Booleanas (cont.)• Exemplos:

Mnemónica Operação Flags Código #Byte #Morl c,/acc.4 (c) (c) /acc.4 c A0 E4 2 2clr p2.7 (p2.7) 0 nenhuma C2 A7 2 1jb p1.2,marca (pc) (pc)+3;

se (p1.2)=1 então(pc) (pc)+rel

nenhuma 20 92 D3 3 2

Page 47: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 47

Instruções de salto• Estas instruções sub-dividem-se em dois grupos

principais:– Salto não condicional– Salto condicional

• Cada um destes tipos será agora considerado individualmente

Page 48: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 48

Instruções de salto não condicional

Mnemónica Operação Tempo deexecução (s)

jmp marca Salta para marca (ljmp, sjmp) 2jmp @a+dptr Salta para ((a)+(dptr)) 2call marca Chama a subrotina em marca (lcall, acall) 2ret Retorna da subrotina 2reti Retorna da interrupção 2nop Nenhuma operação (para além de (pc) (pc)+1) 1

Page 49: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 49

Instruções de salto não condicional (cont.)• Exemplos:

Mnemónica Operação Flags Código #Byte #Mljmp marca (pc) marca nenhuma 02 80 00 3 2lcall marca (pc) (pc)+3;

(sp) (sp)+1;((sp)) (pc[7:0]);(sp) (sp)+1;((sp)) (pc[15:8])(pc) marca

nenhuma 12 80 00 3 2

reti (pc[15:8]) ((sp));(sp) (sp)-1;(pc[7:0]) ((sp));(sp) (sp)-1;

nenhuma 32 1 2

Page 50: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 50

Instruções de salto condicional

Mnemónica Operação Modos endereçamento Tempo dedir. ind. reg. im. exec. (s)

jz marca Salta para marca se(a)=0

(específico do ACC) 1

jnz marca Salta para marca se(a)0

(específico do ACC) 1

djnz<byte>,marca Decrementa <byte> esalta para marca se<byte>0

2

cjne a,<byte>,marca Salta para marca se(a)<byte>

2

cjne <byte>,#data,marca Salta para marca se<byte>#data

2

Page 51: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 51

Instruções de salto condicional (cont.)• Exemplos:

Mnemónica Operação Flags Código #Byte #Mjz marca (pc) (pc)+2;

se (a)=0 então(pc) (pc)+rel

nenhuma 60 CA 2 2

djnz 5fh,marca (pc) (pc)+3;(5fh) (5fh)-1;se (5fh)0 então(pc) (pc)+rel

nenhuma D5 5F C7 3 2

cjne @r1,#22h,marca (pc) (pc)+3;se ((r1))#22h então(pc) (pc)+relse ((r1))<#22hentão (c) 1;senão (c) 0

se((r1))<#22h(c) 1senão(c) 0

B7 22 C4 3 2

Page 52: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 52

Exemplo de aplicação• Para consolidar os conhecimentos adquiridos,

consideraremos agora o caso de pretendermos simular o funcionamento de um registo de deslocamento, como o que se apresenta a seguir:

IN

CLK

OUT[0] OUT[1] OUT[2] OUT[3]

OUT[4] OUT[5] OUT[6] OUT[7]

D

CLK

QD

CLK

Q D

CLK

Q D

CLK

Q

D

CLK

QD

CLK

Q D

CLK

QD

CLK

Q

Page 53: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 53

Exemplo de aplicação (cont.)• Os pressupostos são os seguintes:

– O sinal de relógio é activo à transição ascendente

– No estado inicial, todas as saídas deverão estar a 0

IN

OUT[0]OUT[1]OUT[2]OUT[3]OUT[4]OUT[5]OUT[6]OUT[7]CLK

– A relação entre as entradas (IN e CLK) e as saídas (OUT[0..7]) deverá ser tão próxima quanto possível da que teria lugar através da implementação em hardware

Page 54: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 54

Sequência de passos• A sequência de passos até à solução é a seguinte:

– Efectuar a atribuição entre os sinais exteriores e os pinos de E/S paralela do microcontrolador

– Reflectir sobre a sequência de operações que implementem a funcionalidade pretendida

– Codificar esta sequência em assembly– Obter o código objecto, simular o seu funcionamento

(verificação de projecto) e implementar na prática

Page 55: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 55

Atribuição de recursos• A simplicidade do exemplo considerado dispensa-nos

o uso de recursos externos a um 87C51, pelo que poderemos especificar a seguinte atribuição:– Linhas de saída OUT[0..7] do registo de deslocamento

estarão ligadas ao porto 1 (respectivamente P1[0..7])– Linhas de entrada ligadas ao porto 0 (CLK em P0.0 e IN

em P0.1)

Page 56: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 56

Sequência de operações a realizar• A sequência de operações a realizar pode

especificar-se como se segue:– Aguardar pela subida no sinal de relógio (CLK)– Após a subida em CLK, deslocar o conteúdo de OUT[0..7]

uma posição, no sentido de OUT[0] para OUT[7] (para a esquerda, considerando que OUT[7] está à esquerda)

– Se a entrada IN estiver em 1, colocar OUT[0] em 1; caso contrário, colocar OUT[0] em 0

Page 57: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 57

Codificação em assembly0003 00000004 0000 E4 inicio clr a0005 0001 F5 90 mov p1,a ; coloca OUT[0..7] em 00006 0003 30 80 FD marca1 jnb p0.0,marca1 ; espera que CLK suba0007 0006 A2 81 mov c,p0.1 ; coloca IN no Carry0008 0008 33 rlc a ; realiza o deslocamento0009 0009 F5 90 mov p1,a ; actualiza as saidas0010 000B 20 80 FD marca2 jb p0.0,marca2 ; espera que o CLK desca0011 000E 80 F3 sjmp marca10012 00100013 0010 .end

tasm: Number of errors = 0

(analisar com pormenor; para que serve a linha 10?)

Page 58: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 58

Verificação de projecto• É necessário esperar pela descida do relógio (linha

10), para evitar que uma única subida em CLK provoque múltiplas operações de deslocamento (dependendo da relação entre CLK e o relógio do 87C51):

CLK

OUT[0]

Intervalo correspondente à execução das linhas0006 a 0009, após o que tem lugar aactualização das saídas P1[0..7]

Page 59: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 59

Verificação de projecto (cont.)• Considerando CLK a 1 KHz e o relógio do 87C51 a

12 MHz, quantas operações de deslocamento ocorreriam se não tivéssemos aquele cuidado?

inicio clr a 1 s (1 ciclo máquina @ 12 MHz)mov p1,a 1 s (1 ciclo máquina @ 12 MHz)

marca1 jnb p0.0,marca1 2 s (2 ciclo máquina @ 12 MHz)mov c,p0.1 1 s (1 ciclo máquina @ 12 MHz)rlc a 1 s (1 ciclo máquina @ 12 MHz)mov p1,a 1 s (1 ciclo máquina @ 12 MHz)

marca2 jb p0.0,marca2 2 s (2 ciclo máquina @ 12 MHz)sjmp marca1 2 s (2 ciclos máquina @ 12 MHz)

CLK

OUT[0]

Page 60: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 60

Verificação de projecto (cont.)• É ainda também importante atentarmos na diferença

CLK (P0.0)

OUT[0] (P1.0)

IN (P0.1) 2 s

t1 – Momento em que é efectuada a leitura de CLK (jnb p0.0) t2 – Momento em que é efectuada a leitura de IN (mov c,p0.1)

entre o tempo de propagação de um circuito com FF-D e a simulação via 87C51:

• Poderão daqui advir problemas (funciona-mento incorrecto)?

Page 61: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 61

Expansão da funcionalidade• Suportar uma entrada Habilita (em P0.2):

.org 0#include def8752.asm

inicio clr amov p1,a ; coloca OUT[0..7] em 0

marca1 jnb p0.0,marca1 ; espera que CLK subamov c,p0.1 ; coloca IN no Carryjnb p0.2,marca2 ; Habilita activo?rlc a ; realiza o deslocamentomov p1,a ; actualiza as saidas

marca2 jb p0.0,marca2 ; espera que o CLK descasjmp marca1

.end “.org...”? “#include...”?

Page 62: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 62

Expansão da funcionalidade (cont.)• Suportar entradas de Habilita (P0.2) e Sentido (P0.3):

.org 0#include def8752.asm

inicio clr amov p1,a ; coloca OUT[0..7] em 0

marca1 jnb p0.0,marca1 ; espera que CLK subamov c,p0.1 ; coloca IN no Carryjnb p0.2,marca2 ; Habilita activo?jnb p0.3,dir ; Sentido para a direita?

esq rlc a ; deslocamento para a esquerdasjmp actual

dir rrc a ; deslocamento para a direitaactual mov p1,a ; actualiza as saidasmarca2 jb p0.0,marca2 ; espera que o CLK desca

sjmp marca1

.end

Page 63: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 63

Avaliação do resultado• Comparando as duas alternativas (FF-D e 87C51)

para a implementação do exemplo considerado, que conclusões podemos tirar relativamente a:– Tempo de desenvolvimento?– Flexibilidade da implementação?– Rapidez de funcionamento?

• Como é que a resposta às questões anteriores é afectada pela complexidade do caso em estudo?

Page 64: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 64

As interrupções revisitadas

IT0/INT0

IE0

IT1/INT1

IE1

0

1

0

1

TF0

TF1

TIRI

Fontes deinterrupção

IE0 e IE1 são flags de interrupção que pertencem ao registo TCON (SFR com endereço 88H)

Page 65: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 65

Gestão das interrupções• O código executado pelo microcontrolador pode

activar / desactivar (set / cleared) todas as flags de interrupção

• Cada fonte de interrupção pode ser habilitada / inibida individualmente (registo IE nos SFR)

• A cada fonte de interrupção pode ser atribuída uma prioridade alta ou baixa (registo IP nos SFR)

Page 66: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 66

Interrupções externas• /INT0 e /INT1 podem ser activos ao nível ou à

transição, de acordo com o conteúdo do registo TCON (SFR com endereço 88H)

• Se as interrupções forem activas à transição, as flags que as geram são limpas pelo hardware quando a respectiva rotina é executada (caso contrário, terá que ser o código do utilizador a fazê-lo)

IT0/INT0

IE0

IT1/INT1

IE1

0

1

0

1

TF0

TF1

TIRI

Page 67: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 67

Interrupções dos T/C• As interrupções pedidas pelos temporizadores /

contadores são geradas por TF0 e TF1, activadas por “rollover” nos registos dos respectivos T/C (excepto T/C 0 em modo 3, como veremos adiante)

• Quando é gerada uma interrupção proveniente dos T/C, a flag que a gerou é limpa pelo hardware quando a respectiva rotina é executada

IT0/INT0

IE0

IT1/INT1

IE1

0

1

0

1

TF0

TF1

TIRI

Page 68: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 68

Interrupções da comunicação série• Os pedidos de interrupção do periférico de

comunicação série resultam do OR entre as flags RI (recepção) e TI (transmissão)

• Nenhuma destas flags é limpa pelo hardware quando a respectiva rotina é executada (o código da rotina tem primeiro que identificar a causa da interrupção e depois limpar a flag)

IT0/INT0

IE0

IT1/INT1

IE1

0

1

0

1

TF0

TF1

TIRI

Page 69: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 69

O registo IE (end. SFR A8H) – endereçável ao bit• Este registo permite-nos habilitar / inibir cada fonte de

interrupção:

– EA inibe todas as interrupções se estiver em 0; se estiver em 1, estarão habilitadas as que tiverem o seu IE.x em 1

– ES: periférico série; ET1 e ET0: dos T/C; EX1 e EX0: externas (pinos /INT1 e /INT0)

ET1 EX1 ET0 EX0EA - - ES

IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0

Page 70: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 70

O registo IP (end. SFR B8H) – endereçável ao bit• Este registo permite-nos atribuir a cada fonte de

interrupção uma prioridade alta ou baixa:

– Uma fonte de interrupção terá alta prioridade quando o seu bit IP.x estiver em 1 baixa quando estiver em 0

– PS: periférico série; PT1 e PT0: dos T/C; PX1 e PX0: externas (pinos /INT1 e /INT0)

PT1 PX1 PT0 PX0- - - PS

IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0

Page 71: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 71

O registo TCON (end. SFR 88H) – endereçável ao bit• Para além de controlar os T/C, este registo também

se relaciona com as interrupções externas:

– IEx: O hardware activa (set) esta flag à transição descendente em /INTx e limpa-a (cleared) quando a respectiva rotina de atendimento é executada

– ITx: Se estiver em 1 a interrupção em /INTx é activa à transição descendente; caso contrário, é activa ao nível 0.

IT1 IE0 IT0

TC.7 TC.6 TC.5 TC.4 TC.3 TC.2 TC.1 TC.0

IE1TR0TF0TR1TF1

Page 72: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 72

Atendimento das interrupções• Ao atender uma interrupção, o hardware do 80C51

determina a execução de uma instrução LCALL para a respectiva rotina de atendimento:– Endereços de atendimento: IE0 - 0003H; TF0 - 000BH;

IE1 - 0013H; TF1 - 001BH; RI ou TI - 0023H– A flag associada à interrupção é limpa pelo hardware nuns

casos, mas noutros terá que o ser pelo código– LCALL força o PC na stack, mas quaisquer outros registos

(e.g. ACC, PSW, ...) terão que ser guardados pelo código

Page 73: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 73

Retorno das interrupções• A execução da rotina de atendimento continua até

que seja encontrada uma instrução RETI (return from interrupt):– RETI informa o processador que terminou o atendimento à

interrupção e extrai da stack o endereço de retorno– RET (retorno de subrotina) faria algo semelhante, mas

manter-se-ia a indicação de estar em curso o atendimento a uma interrupção (qual o problema?)

Page 74: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 74

Exemplo (KEIL): Interrupções via /INT0; código para ilustrar o atendimento de interrupções; externas em /INT0, activas à transição

cseg at 0salta:

jmp inicio; uma vez que 0003H tem que conter o código de atendimento; a /INT0, em 0000 cabe apenas uma instrução de salto

cseg at 0003hintext0:

inc r1reti

; o atendimento a /INT0 apenas incrementa o R1, pelo que o ; seu conteúdo nos diz quantas interrupções foram atendidas

cseg at 0010hinicio:

mov r1,#0; inicializa R1 com 0

mov tcon,#01mov ie,#81h

; programa o funcionamento das interrupções via /INT0ciclo: mov a,p0

add a,p1mov p2,ajmp ciclo

; está sempre a colocar em P2 o valor de P1+P0

end

Page 75: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 75

Int. via /INT0: Visualização no dScope

Page 76: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 76

Os temporizadores / contadores (T/C) do 80C51• Existem dois T/C com 16 bits, podendo cada um

funcionar como temporizador (T) ou contador (C):– Como temporizador o registo é incrementado por cada

ciclo máquina (12 ciclos de relógio)– Como contador o registo é incrementado à descida do

sinal no pino (T0 ou T1) – sendo T0 / T1 amostrados uma vez em cada ciclo máquina, a detecção de descida leva 24 ciclos de relógio (primeira amostra 1, segunda 0)

Page 77: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 77

Controlo de funcionamento dos T/C• O controlo de cada T/C é feito através dos registos

TMOD e TCON (dois dos SFR):– O estado (activo / parado) é controlado através do registo

TCON– A definição da função pretendida (temporizador ou

contador) é feita pelo bit C-/T em TMOD– Para cada T/C (seja como temporizador ou como

contador) existem quatro modos de funcionamento, definidos pelos pares de bits (M1,M0) em TMOD

Page 78: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 78

T/C: Modos 0 e 1(iguais nos dois T/C) TMOD:

TCON:

– Este modo é compatível com o temporizador do 8048 (8 bits com pré-divisão por 32)

– No modo temporizador, e com Gate em 1, podemos medir a largura do impulso em /INTx

– O modo 1 é igual ao 0, mas agora em 16 bits

Page 79: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 79

T/C: Modo 2(igual nos dois T/C) TMOD:

TCON:

– A contagem é em 8 bits (TL1)– Quando se excede o limite da contagem (“overflow”) é

pedida uma interrupção e TL1 é automaticamente recarregado com o conteúdo de TH1 (que se mantém)

Page 80: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 80

T/C: Modo 3(diferente para cada T/C)

TMOD:TCON:

Page 81: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 81

T/C: Modo 3 (cont.)• Comentários ao modo 3:

– Neste modo, o T/C 1 está parado (como quando TR1=0)– TL0 e TH0 funcionam de modo independente (em 8 bits)– TH0 funciona como temporizador, controlado por TR1 e

pedindo interrupções via TF1 (repare-se que TR1 e TF1 pertenciam ao T/C 1, nos outros modos de funcionamento)

– Nota: O T/C 1 pode ainda ser usado (retirando-o do modo 3), mas sem poder controlar TF1

Page 82: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 82

O registo TCON (end. SFR 88H) – endereçável ao bit• Os bits TFx e TRx estão associados aos T/C:

– TFx: Pede as interrupções do T/C x (set por hardware quando ocorre overflow; limpa por hardware quando se salta para a rotina de atendimento)

– TRx: controlo de estado (activo / parado) do T/C x (controlado por software para activar / parar o T/C x)

IT1 IE0 IT0

TC.7 TC.6 TC.5 TC.4 TC.3 TC.2 TC.1 TC.0

IE1TR0TF0TR1TF1

Page 83: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 83

O registo TMOD (end. SFR 89H) – endereçável ao bit• Existem quatro bits por cada T/C:

– Gate: Em conjunto com TRx, controla o estado (activo / parado) do C/T (ver esquemas que descrevem os modos de funcionamento)

– C-/T: Define a função (0: temporizador; 1: contador)– M1,M0: Definem o modo de funcionamento (0 a 3)

C-/T M1 M0

TM.7 TM.6 TM.5 TM.4 TM.3 TM.2 TM.1 TM.0

M0M1C-/TGate Gate

Page 84: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 84

Exemplo (KEIL): Funcionamento do T/C 1; exemplo para ilustrar o funcionamento dos T/C com interrupções; T/C 1 funciona como contador de 8 bits com auto-reload ; deve complementar-se P1.0 quando forem contados três impulsos exteriores

cseg at 0 inicio:

mov tmod,#60H ; contador, modo 2 (quando TR1=1 e T1 desce)mov ie,#88H ; permite interrupções do T/C 1 mov tl1,#0fdh ; para contar apenas três vezes mov th1,#0fdh ; para recarregar o TL1setb tr1 ; permite início da contagemjmp $ ; apenas para ficar aqui parado

cseg at 001bh

tc1int: ; complementa o bit P1.0cpl p1.0reti

end

Page 85: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 85

T/C 1: Visualização no dScope

Page 86: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 86

A porta de comunicação série no 80C51• Pode transmitir e receber em simultâneo (é do tipo “full

duplex”)• Os registos de recepção e transmissão são ambos

acedidos através do SBUF (SFR c/ end. 99H):– A escrita no SBUF carrega o registo de transmissão– A leitura do SBUF acede ao registo de recepção

(fisicamente diferente)• A porta série tem quatro modos de funcionamento

Page 87: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 87

Porta série: Modos de funcionamento 0 e 1• Modo 0 - Transmissão em 8 bits (LSB primeiro), com

taxa de transmissão (baud rate) de 1/12 da frequência de relógio. Os dados entram e saem via RxD, estando o relógio de transmissão em TxD.

• Modo 1 - Transmissão em 10 bits: Start bit (0), bits de dados (LSB primeiro) e um Stop bit (1), com baud rate variável. Envio por TxD e recepção por RxD.

Page 88: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 88

Porta série: Modos de funcionamento 2 e 3• Modo 2 - Transmissão em 11 bits: Start bit (0), bits

de dados (LSB primeiro), um nono bit programável (e.g. o bit de paridade no registo PSW) e um Stop bit (1). O baud rate pode ser 1/32 ou 1/64 da frequência do relógio. Envio por TxD e recepção por RxD.

• Modo 3 - Como no modo 2, mas agora com baud rate variável.

Page 89: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 89

Taxas de transmissão (baud rate)• No modo 0, o baud rate é fixo e igual a 1/12 da

frequência de relógio• No modo 2, o baud rate depende do bit SMOD no

registo PCON (SFR c/ end. 87H), sendo dado por (2SMOD / 64) x (frequência) (1/64 ou 1/32, portanto)

• Nos modos 1 e 3, o baud rate é variável e determinado pelo T/C 1 (e também depende do bit SMOD)

Page 90: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 90

Uso do T/C 1 para determinar o baud rate• Nos modos 1 e 3 o baud rate é determinado pela

seguinte expressão: (2SMOD / 32) x (ritmo de overflow do T/C 1)

– As interrupções através deste T/C devem estar inibidas– O T/C 1 pode funcionar como temporizador ou como

contador, em qualquer modo de funcionamento, excepto o modo 3 (recorde-se que neste modo o T/C 1 está parado)

Page 91: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 91

Geração do baud rate via T/C 1: Forma habitual • No caso mais comum, o T/C é usado no seu modo 2

(como temporizador com auto-reload)• O baud rate da porta série, nos seus modos 1 e 3, é

então dado por (2SMOD / 32) x (frequência / (12 x (256-(TH1))))

– (TH1): Conteúdo do T/C 1, oito bits mais significativos– Para uma frequência de 11,0592 MHz, quais os valores de

SMOD e (TH1), para resultar um baud rate de 19.200 bps?

(modo 2 do T/C 1)

(modos 1 e 3 da porta série)

Page 92: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 92

O registo SCON (end. SFR 98H) – endereçável ao bit• Bits SM0, SM1 e SM2:

– SM0 e SM1: Definem o modo de funcionamento (0 a 3).– SM2: Habilita a capacidade de comunicação em sistemas

do tipo multiprocessador, nos modos 2 e 3. Neste caso, o nono bit em 1 dá origem a um pedido de interrupção, para indicar que chegou um endereço de nó.

RB8 TI RI

SC.7 SC.6 SC.5 SC.4 SC.3 SC.2 SC.1 SC.0

TB8RENSM2SM1SM0

Page 93: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 93

SCON (end. SFR 98H) – endereçável ao bit (2)• Bits REN, TB8 e RB8:

– REN: Controlado por software para permitir (1) ou inibir (0) a recepção.

– TB8: Nono bit a transmitir nos modos 2 e 3 (controlado por software).

– RB8: Nos modos 2 e 3, é o nono bit recebido. No modo 1, se SM2=0, é o stop bit recebido. No modo 0, não é usado.

RB8 TI RI

SC.7 SC.6 SC.5 SC.4 SC.3 SC.2 SC.1 SC.0

TB8RENSM2SM1SM0

Page 94: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 94

SCON (end. SFR 98H) – endereçável ao bit (3)• Bits TI e RI:

– TI: Flag de interrupção por envio. Activada por hardware no final do oitavo bit em modo 0, ou no início do Stop bit nos restantes modos. Deve ser limpa por software.

– RI: Flag de interrupção por recepção. Activada por hardware no final do oitavo bit em modo 0, ou a meio do Stop bit nos restantes modos. Deve ser limpa por software.

RB8 TI RI

SC.7 SC.6 SC.5 SC.4 SC.3 SC.2 SC.1 SC.0

TB8RENSM2SM1SM0

Page 95: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 95

Exemplo (KEIL): Escreve em P1 o byte recebido

; segmento de código para ilustrar a recepção série no 80C51; cada byte recebido é escrito na porta 1

cseg at 0salta:

jmp iniciocseg at 0023h

int_psr:clr ri

; limpa a flag que indica interrupção por recepçãomov p1,sbuf

; copia para a porta 1 o byte que acabou de chegarreticseg at 0030h

inicio:mov scon,#70h

; porta série em modo 1 (SM0,SM1)=(0,1), recepção habilitada (REN=1) ; activa RI quando lê o Stop bit (SM2=1)

mov tmod,#20h; T/C 1 como temporizador (C/T=0) em modo 2 (M1,M0)=(1,0)

mov tl1,#0fdhmov th1,#0fdh

; com SMOD em 0 por omissão, resulta um baud rate de 9.600 bpsmov ie,#90h

; habilita apenas as interrupções da porta sériesetb tr1

; activa o funcionamento do T/C 1jmp $

end

Page 96: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 96

Porta série: Visualização no dScope

Page 97: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 97

Outro exemplo: Recepção de uma tabela de valores• Requisitos (assuma-se a frequência de 11,0592 MHz):

– Baud rate de 19.200 bps (gerados pelo T/C 1), palavras de 10 bits (start bit, dados, stop bit)

– Armazena os bytes recebidos em MD interna, a começar em 30H

– Termina quando receber a sequência ASCII “FIM”: 46H-49H-4DH

– Quando terminar, reinicializa apontador para a tabela e salta para 2000H

Page 98: Introdução ao Projecto com Sistemas Digitais e Microcontroladores A família 80C51 - 1 A família 80C51 Organização: –Microcontroladores versus microprocessadores

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresA família 80C51 - 98

Conclusão• Objectivo principal do capítulo: Apresentar a

arquitectura em que se baseia a família de microcontroladores 80C51

• Pistas para a continuação do estudo:– Evolução da arquitectura 80C51 (e.g. arquitectura XA)– Outros microcontroladores (e.g. Motorola 68HCXX e

Microchip PIC)