prática laboratorial com o 80c51

53
Introdução ao Projecto com Sistemas Digitais e Microcontroladores Prática laboratorial com o 80C51 - 1 Prática laboratorial com o 80C51 • Organização: – Requisitos e modelo funcional de um sistema mínimo – Da especificação à prática de projecto – Comunicação com o PC – Um gerador de formas de onda

Upload: edan-bullock

Post on 30-Dec-2015

30 views

Category:

Documents


1 download

DESCRIPTION

Prática laboratorial com o 80C51. Organização: Requisitos e modelo funcional de um sistema mínimo Da especificação à prática de projecto Comunicação com o PC Um gerador de formas de onda. Requisitos de um sistema mínimo. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 1

Prática laboratorial com o 80C51• Organização:

– Requisitos e modelo funcional de um sistema mínimo– Da especificação à prática de projecto– Comunicação com o PC– Um gerador de formas de onda

Page 2: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 2

Requisitos de um sistema mínimo• Considerando que o sistema mínimo pretendido tem

por objectivo principal dar apoio à prática laboratorial, os requisitos de partida foram os seguintes:– Simplicidade, para permitir uma compreensão em

pormenor de todos os aspectos– Disponibilidade de entradas e de saídas, para permitir

alguma variedade nos trabalhos práticos a realizar– Empregar componentes acessíveis e com baixo custo

Page 3: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 3

Modelo funcional

• Carga do programa a executar: via RS 232C, a partir de um PC onde é gerado o código objecto

• Entrada / Saída:– Analógica, entre -5 V e +5 V, a que correspondem a

escrita de 00 e FFH, respectivamente, no conversor D/A (relação linear entre os códigos escritos no D/A e o valor da saída)

– Quatro entradas digitais e quatro saídas digitais

Page 4: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 4

Modelo funcional (cont.)

• A memória externa resume-se a uma NVRAM (MP – para o código recebido via RS 232C – e MD), estando o “monitor residente” na MP interna do C

• Alocação de endereços:/PSEN /RD /WR A15 Acesso seleccionado

0 1 1 1 Memória externa (leitura: código de instrução)

1 0 1 1 Memória externa (leitura: dados)

1 1 0 1 Memória externa (escrita)

1 1 0 0 Saída analógica

(ender. 90H, linhas P1.0 a P1.3) Saídas digitais (porto 1)

(ender. 90H, linhas P1.4 a P1.7) Entradas digitais (porto 1)

Page 5: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 5

Modelo funcional (cont.)

• Repare-se que o modelo funcional descrito nos permite desde já a escrita de código:

(qual o efeito deste segmento de código?)

.org 8000h

inicio mov dptr,#0 ; DP com endereco D/Aclr a ; carrega ACC com 0

ciclo movx @dptr,a ; envia ACC para D/Ainc a ; proximo valorsjmp ciclo

Page 6: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 6

Da especificação à prática de projecto• A passagem à prática de projecto faz-se através do

seguinte conjunto de passos:– Definição do diagrama de blocos da solução global– Realização do bloco descodificador do sistema– Criação do diagrama esquemático– Realização da carta de circuito impresso

Page 7: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 7

Diagrama de blocos

87C51Conversão de nível

Portosérie

P1

AD[0:7]

D[0:7]

A[0:7]

A[8:15]

A[15]/PSEN

/RD/WR

Descodificador

NVRAMRegisto

Entrada / saída digital(4 entradas e 4 saídas)

/mem_rd /mem_cs

da_cs

Bloco do conversor D/A

Saídaanalógica

Comunicaçãovia RS-232C ALE

AmpOps

Registo econv. D/A

Page 8: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 8

Descodificador do sistema

• Sinais gerados pelo descodificador:– Para a NVRAM: /mem_rd e /mem_cs– Para a escrita no conversor D/A: da_cs

• Especificação “tipo-PALASM”:

(seria desejável a sua implementação como uma PAL?)

(/mem_rd) = (/psen)*(/rd) ; activo se /psen ou /rd estiverem em 0

(/mem_cs) = /(a15) ; activo se a15 estiver em 1

(da_cs) = /(a15)*/(/wr) ; activo se a15 e /wr estiverem em 0

Page 9: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 9

Diagrama esquemático

• (apresentado na transparência seguinte) Reparar em particular nos seguintes aspectos:– Filtragem nas entradas digitais– Forma como está implementada a comunicação RS 232C– Implementação do bloco descodificador– Tratamento da saída do conversor D/A– Ligação das entradas digitais não usadas

Page 10: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 10

Page 11: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 11

Carta de circuito impresso

Page 12: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 12

Comunicação com o PC

• Libertar-nos do ciclo “programar EPROM / experimentar / corrigir / apagar EPROM / repetir”

• Os programas a executar são escritos em assembly no PC, onde é produzido o código objecto, que é por sua vez transferido via RS 232C para o sistema

• A transferência do código objecto pode por exemplo ser efectuada através da aplicação HyperTerminal (acessórios do Windows 95)

Page 13: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 13

O monitor residente e a comunicação com o PC• Permite transferir o código objecto para execução na

NVRAM (cujo sinal de /OE resulta do AND entre os sinais /PSEN e /RD do 87C51)

• O código objecto deve estar em formato Intel Hex e o porto série do PC configurado para 9600 bps, 8 bits, sem paridade e com um stop bit

• São apenas necessárias as ligações (RxD-TxD), (TxD-RxD) e (Gnd-Gnd)

Page 14: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 14

O monitor residente: Protocolo de transferência• Ao ser reinicializado, o 87C51 envia “=“ para o PC• O PC pode então enviar:

– O código de “Escape” (1BH), se pretender reinicializar o sistema (que nesse caso responderá com “=“)

– O código do programa a executar• No final da transferência, o 87C51 envia “:” para o

PC, a que se segue uma indicação do tipo de erro, se algum tiver ocorrido

Page 15: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 15

Protocolo de transferência: Tipos de erros• Códigos de erro (em hexadecimal):

– 01: Caracteres não hexadecimais– 02: Erro de formatação– 04: Código de verificação incorrecto– 08: Não foram recebidos dados– 10: Excedeu-se a capacidade de memória– 20: Erro na verificação dos dados em memória

Page 16: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 16

Protocolo de transferência: Execução do programa• Após a recepção correcta, o 87C51 envia ao PC um

checksum que resulta da soma de todos os bytes de dados que foram recebidos, truncada para 16 bits

• O PC poderá então dar a ordem para execução do código, enviando a seguinte sequência de caracteres: “/<endereço>” (e.g. “/8000” para começar em 8000H)

• Se o endereço for aceite, o 87C51 enviará um “@” ao PC e iniciará a execução do programa como indicado

Page 17: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 17

Uso da aplicação HyperTerminal

Page 18: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 18

Uso da aplicação HyperTerminal (cont.)

Page 19: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 19

Uso da aplicação HyperTerminal (cont.)

Page 20: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 20

Geração do código objecto

• A geração do código objecto é feita por um cross-assembler, que lê um ficheiro com o código fonte (escrito em assembly) e produz o ficheiro com o código objecto (por exemplo, à instrução assembly mov 2,#5AH corresponde o código objecto 74, 5A)

• O TASM é um cross-assembler do tipo shareware que ilustra bem as funções associadas a uma aplicação deste tipo

Page 21: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 21

Fluxo de dados no TASM

• O TASM é um table-driven cross assembler:

TASM

.TAB

.ASM

.LST.OBJ

Ficheiro de entradaem assembly (ASCI I )

Correspondênciaentre mnemónicas e

código objecto (ASCI I )

Ficheiro com o código objecto(Intel Hex, binário, etc.)

Instruções emassembly e códigoobjecto (ASCI I)

Page 22: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 22

Formato Intel Hex (ASCII)

• :LLAAAATTDD...CC (conteúdo de cada linha)– “:” representa o início da sequência– “LL” indica o número de bytes de dados presentes– “AAAA” representa o endereço de 16 bits que deve ser

usado para iniciar o armazenamento do código objecto– “TT” representa o tipo de sequência (00: Dados; 01: Fim)– “DD...” são os bytes de dados– “CC” é um código de verificação (checksum)

Page 23: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 23

Geração de uma onda em dente de serra• Retomando o gerador de dente de serra, e invocando

o TASM (tasm -51 serra.asm), obtemos:0003 8000 .org 8000h0004 80000005 8000 90 00 00 inicio mov dptr,#00006 8003 E4 clr a0007 8004 F0 ciclo movx @dptr,a0008 8005 04 inc a0009 8006 80 FC sjmp ciclo0010 80080011 8008 .end0012 8008

tasm: Number of errors = 0

Page 24: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 24

Geração de uma onda em dente de serra (cont.)

0003 80000004 80000005 8000 90 00 000006 8003 E40007 8004 F00008 8005 040009 8006 80 FC0010 80080011 80080012 8008

Page 25: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 25

Geração de uma onda em dente de serra (cont.)• A forma de onda gerada produz o efeito esperado:

(considerado que o relógio do 87C51 é de 11,0592 MHz, qual seria o valor esperado para a frequência da onda em dente de serra?)

Page 26: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 26

Um gerador de formas de onda• A consideração de um exemplo mais complexo irá

permitir-nos:– Consolidar os conhecimento adquiridos acerca do

microcontrolador 80C51– Discutir as questões relacionadas com a metodologia de

desenvolvimento de aplicações– Ilustrar algumas questões associadas com o projecto de

circuitos mistos (analógicos e digitais)

Page 27: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 27

Caracterização funcional

• Pretende-se a seguinte funcionalidade:– Forma de onda seleccionável (triangular, dente de serra

ascendente e dente de serra descendente)– Deve estar prevista a possibilidade de se acrescentarem

posteriormente mais formas de onda– Frequência ajustável– Valores máximo e mínimo ajustáveis de forma

independente dentro da excursão máxima possível

Page 28: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 28

Interface com o utilizador

• Pretende-se um interface com 3 teclas e 4 leds:Forma

de Onda FrequênciaValor

MáximoValor

Mínimo

Função + -

(teclas)

– A tecla “Função” desloca de forma circular a função seleccionada (o led aceso)

– As teclas “+” e “-” permitem incrementar / decrementar o parâmetro associado à função seleccionada (se for a forma de onda, significa passar à seguinte / anterior)

Page 29: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 29

Condições iniciais

• Após a (re)inicialização, o gerador de formas de onda pretendido deve passar ao seguinte modo:– A função activa deve ser a de selecção de forma de onda

(aceso o led da esquerda)– A forma de onda na saída deve ser a triangular– A frequência deve estar no meio da escala– O valor máximo deve ser de +2,5 V – O valor mínimo deve ser de -2,5 V

Page 30: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 30

Exemplo de uso

• Serra ascendente, mantendo a frequência inicial e com limites de +5 V e 0 (após ligar a alimentação):– Carregar em “+” até aparecer a serra ascendente– Carregar em “Função” duas vezes, para seleccionar o

ajuste do valor máximo (aceso o led “Valor máximo”)– Carregar em “+” até que o valor máximo seja de +5 V– Carregar em “Função” uma vez (passa ao valor mínimo)– Carregar em “+” até que o valor mínimo seja de 0 V

Formade Onda Frequência

ValorMáximo

ValorMínimo

Função + -

(teclas)

Page 31: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 31

Atribuição de recursos

• Analisando os recursos disponíveis no nosso sistema mínimo, podemos fazer a seguinte atribuição:– (saídas digitais e respectivos leds) P1.0: Forma de onda;

P1.1: Frequência; P1.2: Valor máximo; P1.3: Valor mínimo– (entradas digitais e respectivas teclas) P1.4: Tecla

Função; P1.5: Tecla +; P1.6: Tecla -– Havendo apenas uma saída analógica, a atribuição deste

recurso está feita por natureza

Page 32: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 32

Atribuição de recursos (cont.)• Resulta deste

modo a seguinte disposição:

AlimentaçãoSaída analógica

87C51

NVRAM

PortasE

PortasNÃO

Registo

Registo

Conv.D/A

AmpOpscristal

Teclas

Valor Mínimo

leds

Valor Máximo

Frequência

Formade onda

“Função”

“+” “-“

Page 33: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 33

Organização das rotinas a desenvolver• Modelo de

organização:

Inicialização

Formade onda

triangular

Formade ondaem serra

ascendente

Formade ondaem serra

descendente

Atraso

Gestão

Atraso

Gestão

Atraso

Gestão

Page 34: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 34

Organização da subrotina de gestão do sistema

Teclapremida?

Leiturado

teclado

Tecla“Função”?

Tecla“+”?

Acçõesda

tecla “+”

Retorna Acçõesda

tecla “-”

Retorna

Acçõesda tecla“Função”

Retorna

S

Retorna

N

S

N

NS

Inicialização

Formade onda

triangular

Formade ondaem serra

ascendente

Formade ondaem serra

descendente

Atraso

Gestão

Atraso

Gestão

Atraso

Gestão

Page 35: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 35

Exemplo de funcionamento

• Inicialização e passagem à forma de onda seguinte:

Page 36: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 36

Gerador de formas de onda: Implementação alternativa • Nesta implementação alternativa, introduziremos as

seguintes diferenças:– Pretende-se o menor número possível de componentes– Controlo remoto (via RS-232C, em vez de ser através de

um painel frontal)– Usaremos as interrupções do T/C 0 para determinar o

ritmo de actualização da saída do conversor D/A (e por conseguinte a frequência das formas de onda geradas)

Page 37: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 37

Diagrama esquemático

<Doc> 1.0

JMF - gerador programável de formas de onda (Nov. 2001)

A

1 1Tuesday, November 20, 2001

Title

Size Document Number Rev

Date: Sheet of

+5V

-12V

+5V

+12V

-12V

+5V

-12V

+5V

+5V

MAX232

13

8

11

10

1

3

4

52

6

12

9

14

7

R1IN

R2IN

T1IN T2IN

C+

C1-

C2+

C2-V+

V-

R1OUT

R2OU

T

T1OUT

T2OU

T

AT89C51

9

18 19

2930

31

12345678

2122232425262728

1011121314151617

3938373635343332

RST

XTAL

2

XTAL

1

PSENALE/PROG

EA/VPP

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

P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXDP3.2/INTOP3.3/INT1P3.4/TOP3.5/T1P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

DAC08

4

16

14

15121110

98765

13 3

1

2

IOUT

COM

P

VREF+

VREF-LSB/B0B1B2B3B4B5B6MSB/B7

V+ V-

VLC

/IOUT

cabo RS232C

TxDRxD

GND

123

saída analógica

1

2

botão de reset

100nF

2K5

+

-

1/2 TL082

3

21

+

-

1/2 TL082

5

67

84

100nF

100nF

10K

100nF

100nF

100nF100nF

2K5

4K7

11,0592MHz

33 pF33pF10K

1uF

0K1

1N4148

10K+

+

+ +

+

Page 38: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 38

Código do novo gerador de formas de onda• Uma vez que o controlo de funcionamento tem agora

lugar via RS-232C e a actualização da saída do conversor D/A é cadenciada pelo T/C 0, temos as seguintes rotinas para escrever:– Inicialização do sistema– Atendimento das interrupções da porta série– Atendimento das interrupções do T/C 0

Page 39: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 39

Rotina de inicialização do sistemaInicialização de parâmetros:

- Valor máximo: 75%- Valor mínimo: 25%- Forma de onda: triangular- Declive inicial: ascendente

Inicialização do microcontrolador:- Periférico série: modo 1, recepção habilitada- T/C 0 e T/C 1: T/C 0 – modo 2, ints habilitadas, TH0 a

meio da escala; T/C 1 – modo 2, ints inibidas, TH1 para

9.600 bps- Interrupções: Habilita PS e T/C 0, com prioridade mais elevada para a PS- Activa dos dois T/CEspera pelos pedidos de interrupção

Page 40: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 40

Interrupções da porta série (chegou um carácter)

Carácter “+”?

Acção “Forma de onda”?

Acção “Frequência”?

Acção “Valor máximo”?

Acção “Valor mínimo”?

Carácter “-”?

Acção “Forma de onda”?

Acção “Frequência”?

Acção “Valor máximo”?

Acção “Valor mínimo”?

Guarda código ASCII em R6

Dec. código da forma de onda

Dec. valor de TH0

Dec. valor máximo

Dec. valor mínimo

Inc. código da forma de onda

Inc. valor de TH0

Inc. valor máximo

Inc. valor mínimo

RETIRETI RETIRETI RETI

RETI RETIRETI RETI

RETI

0023H

Limpa RI

N

N

N

N

NN

N

N

N

N

S

S S S S

S S S S

S

Page 41: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 41

Interrupções do T/C 0 (actualiza a saída do D/A)

Forma de onda triangular?

RETI

000BH

Se não atingiu o máximo, incrementa; caso contrário, passa para descendente e decrementa

N

S

Forma de onda serra ascendente?

Forma de onda serra descendente?

Declive ascendente?

N N

Se não atingiu o mínimo, decrementa; caso contrário, passa para ascendente e incrementa

S

N

Se não atingiu o máximo, incrementa; caso contrário, passa para o valor mínimo

Se não atingiu o mínimo, decrementa; caso contrário, passa para o valor máximo

S S

RETI

RETI RETI

Aplica nível DC a meio da escalaRETI

Page 42: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 42

Configuração do HyperTerminal

Page 43: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 43

Controlo de uma plataforma móvel• Pretende-se neste caso implementar um interpretador

para a linguagem (pseudo-) LOGO que foi descrita no capítulo 6 do livro recomendado– No cap. 6 é apresentado um microprocessador dedicado

para implementar esta linguagem, mas agora queremos usar um AT89C51

– A escrita do código LOGO deve ser feita no PC e o respectivo código objecto enviado via RS232C

Page 44: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 44

+ Bateria -

AT89C51

+ ...

Detecção de obstáculos

Sinalização de problemas

(roda giratória)

motor motor

RS232C

(roda) (roda)

A plataforma móvel

Page 45: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 45

O accionamento com motores passo-a-passo

0

1

0

1

1

0

0

1

1

0

1

0

0

1

1

0

A

B

C

D

P2.7 … P2.0

0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0

Tabela em memória para o movimento para a frente:

Formas de onda nas quatro fases (movimento para a frente):

Page 46: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 46

Controlo do movimento

; opcode das instruções LOGO:front equ 66h ; fback equ 62h ; bleft equ 6Ch ; lright equ 72h ; rsetout0 equ 20h ; espaçosetout1 equ 21h ; !setout2 equ 22h ; "setout3 equ 23h ; #rstout0 equ 30h ; 0rstout1 equ 31h ; 1rstout2 equ 32h ; 2rstout3 equ 33h ; 3jpin0 equ 70h ; pjpin1 equ 71h ; qjpin2 equ 72h ; rjpin3 equ 73h ; sjp equ 6Ah ; jhalt1 equ 68h ; hhalt2 equ 68h ; h

• As instruções existentes dividem-se por quatro grupos principais:– Movimento– Actuação das saídas– Salto– Paragem

Page 47: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 47

Rotinas existentes

• Existem quatro rotinas principais:– Inicialização do sistema – inicio.a51– Interpretador que executa o código LOGO – interpr.a51– Atendimento das interrupções pedidas pela porta série –

int_ps.a51– Atendimento das interrupções pedidas pelo T/C 0 –

int_tc0.a51 (neste caso o atendimento não é automático, sendo monitorizado o valor da flag TF0 e executada a rotina de atendimento através de uma instrução CALL)

Page 48: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 48

Rotina inicio.a51 (inicialização do sistema)• Após a inicialização dos registos, dos contadores, da

porta e do sistema de interrupções, limita-se a esperar que cheguem caracteres via RS232C

; Uso dos registos:; > R0- apontador para a tabela LOGO na recepção RS232C (armazenar); > R1- apontador para a tabela LOGO no execução (para ler a instrução); > R2- não é usado nesta implementação; > R3- Unidades de deslocamento (UD) requeridas para o movimento; > R4- factor multiplicativo (factm) entre cada UD e o número de passos; > R5- não é usado nesta implementação; > R6- usado na leitura das tabelas de passo (contém o offset); > R7- usado na leitura das tabelas de passo (contém o índice)

Page 49: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 49

Rotina interpr.a51 (interpretador LOGO)• O código LOGO (designado por “tabela LOGO”) está

armazenado entre 30H (ENDINI) e 7FH (ENDFIN)• A execução deve ser suspensa se for atingido o

endereço final• Qualquer código ilegal deve ser tratado como NOP

(“no operation”)

Page 50: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 50

Rotina int_ps.a51 (atendimento int. porta série)• Recebe o código LOGO e a ordem para o executar• HALT ocupa dois bytes que só surgem neste caso

(serve também para marcar o fim da recepção)• À chegada de HALT, deve acontecer o seguinte:

– Reinicializa R0 (apontador para a tab. LOGO na recepção) e R1 (apontador para a tab. LOGO na execução)

– Inicia a interpretação (execução) do código LOGO recebido• Se atingir o ENDFIN deixa de incrementar R0

Page 51: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 51

Rotina int_tc0.a51 (atendimento int. T/C 0)• Esta rotina é executada em resultado de uma

instrução CALL, quando se detecta que TF0 = 1• O T/C 0 é que permite cadenciar a sequência de

passos (os motores são controlados pela porta 2)• As combinações de passo estão armazenadas nas

“tabelas de passo” (existe uma tabela para cada tipo de movimento: frente, trás, esquerda, direita)

• Ao terminar o movimento o T/C 0 é desactivado

Page 52: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 52

KEIL: Resultado produzidoL51 LINKER/LOCATOR V3.62 06/12/01 22:52:02 PAGE 1

(...)INPUT MODULES INCLUDED: C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\INICIO.OBJ (INICIO) C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\INT_TC0.OBJ (INT_TC0) C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\INT_PS.OBJ (INT_PS) C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\INTERPR.OBJ (INTERPR)

LINK MAP OF MODULE: C:\JMF\PUBLIC~1\MP\DIVERSOS\LOGO\LOGO (INICIO)

TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0"

* * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE 0003H 0008H *** GAP *** CODE 000BH 0003H ABSOLUTE 000EH 0015H *** GAP *** CODE 0023H 0024H ABSOLUTE 0047H 0009H *** GAP *** CODE 0050H 0024H ABSOLUTE 0074H 008CH *** GAP *** CODE 0100H 0021H ABSOLUTE 0121H 001FH *** GAP *** CODE 0140H 0115H ABSOLUTE

******************************************************************************>> * RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0184H BYTE (18%) *>> ******************************************************************************>> LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)

(JMP INICIO)(JMP INT_TC0)INT_PS.A51INT_TC0.A51INICIO.A51INTERPR.A51

Page 53: Prática laboratorial com o 80C51

Introdução ao Projecto com Sistemas Digitais e MicrocontroladoresPrática laboratorial com o 80C51 - 53

Conclusão

• Objectivo principal do capítulo: Proporcionar os recursos mínimos que facilitem a passagem à prática laboratorial com o 87C51

• Pistas para a continuação do estudo:– Aprofundar o conceito de monitor residente– Sistemas de desenvolvimento