• Nenhum resultado encontrado

EEL Microprocessadores

N/A
N/A
Protected

Academic year: 2021

Share "EEL Microprocessadores"

Copied!
11
0
0

Texto

(1)

EEL7030 - Microprocessadores

Prof. Raimes Moraes

GpqCom – EEL

UFSC

Microprocessador de Propósito Geral

CPU Micropro cessador de propósito geral

RAM ROM Portas

de I/O Timer InterfaceSerial

Barramento de Dados

Barramento de Endereço

Sem RAM, ROM ou dispositivos de I/O

Vantagem: flexibilidade, sistema expansível ;

Desvantagem: custo, roteamento de placa e dimensões do circuito.

Microcontrolador

Vantagem: menor custo, menor dimensão, rápido desenvolvimento; Desvantagem: baixa flexibilidade, não expansível;

RAM ROM

I/O Port Timer Serial COM Port CPU

 CPU + Periféricos

Microcontrolador

 Periféricos:

- Portas de entrada e saída

- Interface Serial (CAN, SPI, USB, RF e etc)

- Memórias (ROM, RAM, Flash, XRAM, etc)

- Conversores AD e DA

- Timers

- ...

 Família de Microcontrolador: CPU + diferentes periféricos

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

demais periféricos necessários a aplicação;

2. Custo e disponibilidade no mercado. Facilidade para

upgrade (grande família)

3. Disponibilidade de ferramentas de desenvolvimento:

assemblers, debuggers, compiladores, emuladores,

simuladores, suporte técnico

Escolhendo um Microcontrolador

8051

 Características Básicas:

 CPU de 8 bits;

 endereça 64 Kb de memória de programa externa;

 endereça 64 Kb de memória de dados externa;

 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);

 5 vetores de interrupção com 2 níveis de prioridade:

2 interrupções externas

2 temporizadores / contadores

1 interface serial

(2)

8051

CPU RAM 128 bytes ROM para memória de programa 4 kib 4 Portas de I/O Timer 0 Porta Serial OSC Controle de Interrupções Interrupções Externas Timer 1 Controle de Barramento TxD RxD P0 P2 P1 P3 Endereço/Dados Entradas do contador

Pinos

do

8051

Organização da Memória

EA=0 EXTERNAL 0000h EA=1 INTERNAL PSEN EXTERNAL FFFFh: XXXXh: XXXXh: = 2000h (8052) 1000h (8051) 4000h 8000h EXTERNAL 0000h: FFFFh: INTERNAL RAM 00h: FFh: SFR REGISTERS REGISTERS ADD RAM M E M Ó RIA DE PROGRAMA M E M Ó RIA DE D A DOS

RESET

ADD REGISTERS just in devices with 256 bytes of RAM

Alguns uC da família 8051 da Atmel

Device Flash

(KiB) USB EEPROM (kiB) (Bytes)RAM F.max (MHz) PinsI/O UART Timers ADC AT89C5115 16 -- 2 512 40 20 1 2 Yes AT89C5130A-M 16 Yes 1 1280 48 18/34 Yes Yes --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 AT89C51AC2 32 -- 2 1280 40 34 1 3 Yes AT89C51AC3 64 -- 2 2304 60 32 1 3 Yes AT89C51CC01 32 -- 2 1280 40 34 1 2 Yes AT89C51CC02 16 -- 2 512 40 20 1 1 Yes AT89C51CC03 64 -- 2 2304 40 34/37 1 2 Yes AT89C51ED2 64 -- 2 2048 60 32 1 3 --AT89C51IC2 32 -- -- 1280 60 34 1 3 --AT89C51ID2 64 -- 2 2048 60 32 1 3 --AT89C51RB2 16 -- -- 1280 60 32 1 3 --AT89C51RC 32 -- -- 512 33 32 1 3 --AT89C51RC2 32 -- -- 1280 60 32 1 3

--Conexão do 8051 com Memória de Programa

Externa

date

ADDR

OE

INSTR

EPROM

80C51BH

P1

P3

P2

P0

PSEN

Latch

ALE

G

EA

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

(3)

date ADDR OE INSTR EPROM 80C51BH P1 P3 P2 P0 PSEN Latch ALE G EA 74HC373

Exemplo de Leitura da Memória

de Programa Externa

date ADDR OE INSTR EPROM 80C51BH P1 P3 P2 P0 PSEN Latch ALE G EA 74HC373 ADDR RD DATA RAM ADDR DECODER CE WR CE RD WR Interface do 8051 Com Memória de Programa e Dados Externas

Registradores

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,

PSW - Program Status Word - Bit Addressable

CY AC F0 RS1 RS0 OV F1 P 0 7 6 5 4 3 2 1 D0H MOV A, Rn MOV A, direct MOV A,@Ri MOV A,#data MOV DPTR,#data16 Rn - registrador R0 a R7 do banco correntemente selecionado.

direct - endereçamento direto, ou seja, direct é o endereço de uma posição de memória RAM interna.

@Ri - endereçamento indireto a uma posição de memória RAM interna Ri=R0 ou R1

#data - endereçamento imediato, onde data é uma constante de 8 bits incluída no corpo da instrução.

#data16 - endereçamento imediato, onde data é uma constante de 16 bits incluida no

corpo da instrução.

Mnemônicos

Organização da Memória

EA=0 EXTERNAL 0000h EA=1 INTERNAL PSEN EXTERNAL FFFFh: XXXXh: XXXXh: = 2000h (8052) 1000h (8051) 4000h 8000h EXTERNAL 0000h: FFFFh: INTERNAL RAM 00h: FFh: SFR REGISTERS REGISTERS ADD RAM M E M Ó RIA DE PROGRAMA M E M Ó RIA DE D A DOS

RESET

ADD REGISTERS just in devices with 256 bytes of RAM MOVX @DPTR,A

(4)

RAM INTERNA

00h:

FFh:

SFR

REGISTERS

MEMÓRIA

8052

Organização da RAM Interna

Organização da RAM Interna

Organização da RAM

Interna

20h 2Fh 30h 7Fh 18h 1Fh 17h 10h 0Fh 08h

00h 07h Reset Value ofStack Pointer 4 Banks of 8 registers R0 - R7 11 10 01 00 Bit-Addressable Space

Acessible by Direct and Indirect Adressing Low 128 bytes of Internal RAM

Special Function Registers

SUBROTINA

Exemplo

PILHA END. DADO

SP 07H SP+1 08H 0DH [PC LSB] SP+1 09H 00H [PC MSB]

1 Salva atual PC (000Dh) na pilha. (O PC é atualizado ao obter o código da instrução CALL da memória); 2 Sobrescreve PC com endereço da

subrotina; (PC = 2028H) 3 Executa subrotina;

4 Retorna à instrução que se segue ao CALL no programa principal (instrução RET).

5 OBS: O SP é inicializado com o valor 07 quando o microprocessador é energizado/resetado END. CÓDIGO 000A CALL 2028H 000D MOV A,B

(5)

Mnemônicos para SUBROTINA

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).

ACALL: Especifica endereço de 11 bits. A instrução possui 2 bytes (opcode + 11 bits de endereço). Endereço de destino distante em até 2k (2^11).

Mnemônicos para Desvio

LJMP: Especifica endereço de 16 bits. A instrução possui 3 bytes (opcode + 16 bits de endereço).

AJMP: Especifica endereço de 11 bits. A instrução possui 3 bytes (opcode + 116 bits de endereço).

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ônico

Descrição

JZ <rel addr>

Salta se A = 0

JNZ <rel addr>

Salta se A != 0

JC <rel addr>

Salta se C = 1

JNC <rel addr>

Salta se C != 1

JB <bit>, <rel addr>

Salta se bit = 1

JNB <bit>,<rel addr>

Salta se bit != 1

JBC <bit>, <rel addr>

Salta se bit =1, limpa bit

Mnemônicos para Desvio

Mnemônico

Descrição

CJNE A, direct, <rel addr> Compara A e memória. Salta se não igual

CJNE A, #data <rel addr> Compara A e dado. Salta se não igual

CJNE Rn, #data <rel addr> Compara Rn e dado. Salta se não igual

CJNE @Rn, #data <rel addr> Compara Rn e memória. Salta se não igual

DJNZ Rn, <rel addr> Decrementa Rn e salta se não zero

DJNZ direct, <rel addr> Decrementa memória e salta se não zero

Mnemônicos para Desvio

ORG 0000H

MOV R1,#3

MOV R3,#4

INC @R1

MOV A,@R1

MOV DPTR,#MENS

MOVC A,@A+DPTR

MOV DPTR,#20H

MOVX @DPTR,A

SJMP $

MENS:

DB '124567890ABCDE'

END

EA ES ET1 EX1 EX0

External interrupt 0 enable Timer 0 interrupt enable ET0

Serial interface interrupt enable

sable all interrupts

IE - Interrupt Enable Register - Bit Addressable 0

7 6 5 4 3 2 1

External interrupt 1 enable Timer 1 interrupt enable

A8H

Fontes de Interrupção

EA ES ET1 EX1 EX0

External interrupt 0 enable Timer 0 interrupt enable ET0

Serial interface interrupt enable

sable all interrupts

IE - Interrupt Enable Register - Bit Addressable 0

7 6 5 4 3 2 1

External interrupt 1 enable Timer 1 interrupt enable

A8H

Fontes de Interrupção

(6)

As interrupcões externas INT0 e INT1 podem ser ativadas

por nível ou borda.

Depende dos bits IT0 e IT1 do registrador TCON.

Os flags que identificam ocorrência destas interrupcões

externas são os flags IE0 e IE1 de TCON.

Interrupções Externas

Temporizadores / Contadores

Registradores

LSB

MSB

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

88H

TCON

IEx - External Interrupt flag.

Setado pelo hardware quando interrupção detectada.

Apagada pelo software qdo salta para o tratador int.

ITx - Interrupt control bit. 1 => borda de descida

0 => nível lógico baixo

Temporizadores / Contadores

Registradores

LSB

MSB

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

88H

TCON

MOV A,TCON

ORL A,#00000101B; habilita INTs por borda

MOV TCON,A

Interrupções

PS PT1 PX1 PX0

External interrupt 0 priority Timer 0 interrupt priority PT0

Serial interface

IP - Interrupt Priority Register - Bit

Addressable

0

7 6 5 4 3 2 1

External interrupt 1 priority Timer 1 interrupt priority

B8H

interrupt priority bit

Interrupções

PS PT1 PX1 PX0

External interrupt 0 priority Timer 0 interrupt priority PT0

Serial interface

IP - Interrupt Priority Register - Bit

Addressable

0

7 6 5 4 3 2 1

External interrupt 1 priority Timer 1 interrupt priority

B8H

interrupt priority bit

MOV IP,#00000100B;

prioridade INT1 superior às demais

Faça um programa que aceite int0 (acionada por

borda). Qdo a int0 for solicitada, escrever na

porta P1, caractere por caractere, a cadeia de 16

caracteres: ‘Microcontrolador’.

(7)

reset equ 00h

ltint0 equ 03h ; local tratador state equ 20h

org reset ;PC=0 depois de reset jmp inicio

org ltint0 jmp handler inicio:

mov ie,#10000001b ; habilita int mov tcon,#00000001b ; borda mov state,#0h ;inicialização mov r0,# state

mov dptr,#tabela mov r1,#0

volta: cjne @r0,#1,volta mov state,#0h mov a,r1 movc a,@a+dptr mov p1,a inc r1 cjne r1,#16,volta jmp $

handler: mov state,#1h reti tabela: db 'Microcontrolador' end

Temporizadores / Contadores

Modos 0 e 1

GATE INTx PIN TRx OSC /12 C/T=0 C/T=1 CONTROL TLx (5 bits) THx (8 bits) TFx INTERRUPT (8 bits) Tx PIN overflow

GATE C/T

M1 M0

GATE C/T

M1 M0

TIMER 1

TIMER 0

LSB

MSB

89H

TMOD

Programação dos Timers

1) Habilitar interrupções dos timers (EA, ETx)

2) Especificar o modo de funcionamento dos timers (TMOD) 3) Especificar intervalo de contagem (THx e TLx) 4) Disparar contador (setb TRx)

5) Não esquecer tratadores para os timers nos seus devidos endereços.

OBS: É possível testar, freqüentemente, se houve encerramento da contagem sem necessidade de habilitar interrupções (polling dos flags TFx) em programas mais dedicados.

Exemplo: Faça um programa que escreva na porta P1, a cadeia de 16 caracteres: ‘Microcontrolador’ à taxa de 10 kiB/s ( (1/10000) = 100 us)

reset equ 0h

ltmr0 equ 0bh ; local tratador state equ 20h

org reset ;PC=0 depois de reset jmp inicio

org ltmr0 jmp handler inicio:

mov ie,#10000010b ; habilita mov tmod,#01h ; modo 1 mov th0,#0ffh

mov tl0,#09ch mov state,#0h ;inicialização mov r0,# state

mov dptr,#tabela mov r1,#0 setb tr0

volta: cjne @r0,#1,volta mov th0,#0ffh mov tl0,#09ch mov state,#0h mov a,r1 movc a,@a+dptr mov p1,a inc r1 cjne r1,#16,volta jmp $

handler : mov state,#1h reti tabela: db 'Microcontrolador' end

Temporizadores / Contadores

Modos 2

GATE INTx PIN TRx OSC /12 C/T=0 C/T=1 CONTROL TLx THx (8 bits) TFx INTERRUPT (8 bits) Tx PIN overflow

GATE C/T

M1 M0

GATE C/T

M1 M0

TIMER 1

TIMER 0

LSB

MSB

89H

TMOD

(8)

Temporizadores / Contadores

Modos 3

GATE INT0 PIN TR0 OSC /12 C/T=0 C/T=1 CONTROL TL0 TF0 INTERRUPT (8 bits) T0 PIN overflow TH0 (8 bits) TF1 INTERRUPT overflow CONTROL TR1 INT1 PIN GATE C/T=0 C/T=1 CONTROL TL1 T1 PIN 0 se modo 3 para timer 1 TH1 No modo 3,

Timer 0 implementa dois contadores de 8 bits. TR1 e TF1 são redirecionados para o Timer 0 (TH0)

No modo 3,

Timer 1 cessa contagem (o mesmo que TR1=0). Se fora do modo 3, pode ser usado pela serial

Transmissão Serial

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).

Transmissão Serial

Foi largamente utilizado em PCs, estando ainda presente em muitos equipamentos.

Níveis Lógicos EIA RS-232C

(Electronics Industries Association)

•Tamanho máximo do cabo: 15 metros •Velocidade de transmissão: 1Mbits/s

DB25

1

2

3

4

5

6

7

8

20

22

Signal Name

CD

Chassis Ground

TD

Transmit Data

RD

Receive Data

RTS

Request To Send

CTS

Clear To Send

DSR Data Set Ready

SG

Signal Ground

DCD Data Carrier Detect

DTR Data Terminal Ready

RI

Ring Indicator

Direction

-DTE  DCE

DTE  DCE

DTE  DCE

DTE  DCE

DTE  DCE

-DTE  DCE

DTE  DCE

DTE  DCE

DB9

2

3

7

8

6

5

1

4

9

Pin

DTE Conector Macho

(9)

Conexões

Ideal

Mínimo

Handshaking

• Troca de sinais para estabelecer comunicação

condicional

• Processo

– Transmissor ativa RTS

– Receptor detecta CTS por interrupção ou

polling

– Receptor ativa RTS

– Transmissor aguarda CTS

– Transmissor envia dados

SM0 SM1 SM2 REN TB8 RB8 RI

Received interrupt Set by hardware when reception finish except if SM2 =1

Transmited interrupt Mode 2 and 3 is de 9bits. Mode 1 is the stop bit if SM2=0 In mode 2 and 3 is the 9 bit TI

Enable signal reception

Enable multiprocessor

00 mode 0 Mode Select

SCON - Serial Port Control Register - Bit Addressable 0

7 6 5 4 3 2 1

cleared by software

In mode 0 RB8 is not used that will be tranmitted

comunication in modes 2 and 3 In mode 1 if SM2=1 RI flag will be set if a valid stop bit is received In mode 0 SM2 should be 0 01 mode 1 10 mode 2 11 mode 3 98H Cleared by software

SM0 SM1 MODO TIPO BITS TAXA

0 0 0 SÍNCRONO - HD 8 Fclock/12 0 1 1 ASSÍNCRONO – FD 10 Variável 1 0 2 ASSÍNCRONO - FD 11 Fclock/32 ou /64 1 1 3 ASSÍNCRONO - FD 11 Variável

Modos de Programação

Full duplex (FD): dados são (ou podem ser) transmitidos e

recebidos simultaneamente por ambos os dispositivos

conectados, requerendo para tal, conexões adequadas

Full Duplex

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

processadores nos modos 2 e 3.

• 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.

(10)

--- Timer 1 ---

Baud Rate Fosc SMOD C/T Mode Reload Value Mode 0 Max: 1 MHz 12 MHz X X X X Mode 2 Max: 375K 12 MHz 1 X X X Modes 1, 3: 62.5K 12 MHz 1 0 2 FFH 19.2K 11.059 MHz 1 0 2 FDH 9.6K 11.059 MHz 0 0 2 FDH 4.8K 11.059 MHz 0 0 2 FAH 2.4K 11.059 MHz 0 0 2 F4H 1.2K 11.059 MHz 0 0 2 E8H 137.5K 11.986 MHz 0 0 2 1DH 110K 6 MHz 0 0 2 72H 110K 12 MHz 0 0 1 FEEBH Modo 2 => BR= [ ( 2^SMOD ) / 64 ] x f osc

Modo 1 e 3 => Timer 1 em modo de auto carregamento (auto-load /TMOD = 20H). Neste caso, a baud rate é dada por:

BR= [ ( 2^SMOD ) / 32 ] x { f osc / [ 12 x (256 - TH1) ] }

Programação Baud Rate

OSC. CLOCK.GEN.

PD IDL INTERRUPT SERIAL PORT TIMER BLOCKS CPU xtal2 xtal1 GF1 GF2 IDL

Idle mode bit. Setting this bit activate idle mode

Power Down bit. Setting this bit activate power down PD

PCON - Power Control Register

0 7 6 5 4 3 2 1

General purpose flag bit SMOD

General purpose flag bit

87H

Para sair de Idle: por uma interrupção que esteja habilitada ou por Reset. Por interrupção: vai para o tratador e após RETI , continua de onde parou. Por Reset: continua de onde parou.

Para sair de Power Down - Somente por Reset (não altera RAM).

Organização Pinos da Porta P1

8051

D Q Clk Q Vcc Load(L1) Read latch Read pin Write to latch Internal CPU bus M1 P1.X pin P1.X TB1 TB2

P0.x

Escrevendo “1” em Pino P1.X

D Q Clk Q Vcc Load(L1) Read latch Read pin Write to latch Internal CPU bus M1 P1.X pin P1.X

8051

2. output pin is Vcc 1. write a 1 to the pin

1 0 output 1 TB1 TB2 D Q Clk Q Vcc Load(L1) Read latch Read pin Write to latch Internal CPU bus M1 P1.X pin P1.X

8051 IC

2. output pin is ground 1. write a 0 to the pin

0 1 output 0 TB1 TB2

Escrevendo “0” em Pino P1.X

D Q Clk Q Vcc Load(L1) Read latch Read pin Write to latch Internal CPU bus

M1 P1.X pin P1.X 8051 IC 2. MOV A,P1 external pin=High 1. write a 1 to the pin MOV

P1,#0FFH

1

0

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

1

TB1 TB2

(11)

D Q Clk Q Vcc Load(L1) Read latch Read pin Write to latch Internal CPU bus

M1 P1.X pin P1.X 8051 2. MOV A,P1 external pin=Low 1. write a 1 to the pin

MOV P1,#0FFH

1

0

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

0

TB1 TB2

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 (TB2)

Instruções que leêm do latch (“lê-modifica-escreve”). Exemplos:

ANL AND lógico ex. ANL P1,A

ORL OR lógico ex. ORL P2,A

XRL XOR lógico ex. XRL P3,A

CPL complementa bit ex. CPL P3.0

INC incremento ex. INC P2

DEC decrementa ex. DEC P2

DJNZ decrementa e salta se não zero ex. DJNZ P3,LABEL MOV PX.Y,C move bit de carry para bit Y da Port X

CLR PX.Y limpa bit Y da Port X SET PX.Y seta bit Y da Port X

Referências

Documentos relacionados

Figure 1 - 1a: Chest radiography in posteroanterior projection (PA) - shows deviation of structures from the mediastinum to the left hemithorax; 1b: Thorax tomography -

Nos termos do art. Contrariamente ao que se verifica no processo de insolvência, o devedor, no PER, não fica desapossado dos poderes de administração e

A actividade científica dos professores do Departamento de Matemática, essen- cialmente desenvolvida no âmbito do Centro de Matemática da Universidade de Coimbra, tem

Para construirmos uma fórmula de quadratura Gaussiana para este caso, devemos utilizar os zeros desses polinômios como nós e calcular os pesos através dos polinômios de

O esquadro E1 a ser verificado e o esquadro E2 apoiam-se sobre um desempeno com um bloco padrão de comprimento e1 conhecido, entre os mesmos. Em certa altura L mede-se por intermédio

Antigamente, nas cerimónias de casamento, os noivos turcos tinham de prometer que iriam disponibilizar sempre café às suas noivas – caso contrário, isso poderia ser motivo

O trabalho de Ziul já teve destaque na mídia nacional diversas vezes, a exemplo da revista ‘Guitar Player’ brasileira (junho de 2010), a revista virtual GuitarLoad (janeiro de 2011),

curvas preta, vermelha, verde e azul representam valores estimados de concentração de mercúrio no peixe para um fluxo de entrada de mercúrio pelo alimento (Cd) correspondente a