capítulo 5

13
Prentice Hall Microcontroladores 8051 1 Capítulo 5 Capítulo 5 Sub-rotinas e Estruturação da Sub-rotinas e Estruturação da Linguagem de Programação Linguagem de Programação “Assembly” aplicadas a família de “Assembly” aplicadas a família de microcontroladores MCS-51 da microcontroladores MCS-51 da Intel Intel

Upload: candy

Post on 07-Jan-2016

28 views

Category:

Documents


1 download

DESCRIPTION

Capítulo 5 Sub-rotinas e Estruturação da Linguagem de Programação “Assembly” aplicadas a família de microcontroladores MCS-51 da Intel. Capítulo 5. Definição de sub-rotina Programa Principal : instrução 1 : instrução N - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Capítulo 5

Prentice Hall Microcontroladores 80511

Capítulo 5Capítulo 5

Sub-rotinas e Estruturação da Sub-rotinas e Estruturação da Linguagem de Programação Linguagem de Programação

“Assembly” aplicadas a família de “Assembly” aplicadas a família de microcontroladores MCS-51 da microcontroladores MCS-51 da

IntelIntel

Page 2: Capítulo 5

Prentice Hall Microcontroladores 8051 2

Capítulo 5Capítulo 5

Definição de sub-rotina

Programa Principal: instrução 1 : instrução N rotina que calcula uma expressão matemática(tamanho de 60 bytes, por exemplo) instrução N+1 : instrução M rotina que calcula uma expressão matemática(tamanho de 60 bytes, por exemplo) instrução M+1 : instrução O rotina que calcula uma expressão matemática(tamanho de 60 bytes, por exemplo) etc… END

Page 3: Capítulo 5

Prentice Hall Microcontroladores 8051 3

Capítulo 5 Capítulo 5

Sub-rotina: End1: sub-rotina que calcula uma expressão matemática (tamanho de 60 bytes, por exemplo) RETPrograma Principal:ProgP: instrução 1 : instrução N Chamada a sub-rotina que calcula uma expressão matemática (ACALL end1/LCALL end1 – 2 ou 3 bytes) instrução N+1 : instrução M Chamada a sub-rotina que calcula uma expressão matemática (ACALL end1/LCALL end1 – 2 ou 3 bytes) instrução M+1 : instrução O Chamada a sub-rotina que calcula uma expressão matemática (ACALL end1/LCALL end1 – 2 ou 3 bytes) etc… END

Page 4: Capítulo 5

Prentice Hall Microcontroladores 8051 4

Capítulo 5Capítulo 5Área de memória de programa 1 ; Área de Memória de Programa das "Sub-rotinas"; Sub-rotina 1:endereço inicial da sub-rotina 1: instrução 1

: instrução N RET; Sub-rotina M:endereço inicial da sub-rotina M: instrução 1 : instrução N RETÁrea de memória de programa 2 ; Área de Memória de Programa do “Programa Principal”endereço inicial do programa principal: instrução 1 : ;chamada a "sub-rotina 1" ACALL/LCALL endereço inicial da sub-rotina 1 ;chamada a "sub-rotina 2" ACALL/LCALL endereço inicial da sub-rotina 2 : ;chamada a "sub-rotina M" ACALL/LCALL endereço inicial da sub-rotina M ; instrução K END

Page 5: Capítulo 5

Prentice Hall Microcontroladores 8051 5

Capítulo 5Capítulo 5

Vantagens da utilização de sub-rotinas: Princípio de funcionamento de uma sub-rotina: Mas, como uma sub-rotina fisicamente é executada pelo microprocessador ?

Pilha (LIFO – Last-In, First-Out)

RAMEndereço Conteúdo07h ((SP)) (SP) = 07h08h:Cresce Decresce:7Fh

Figura 4: Representação esquemática da pilha (LIFO) após um sinal de reset.

Page 6: Capítulo 5

Prentice Hall Microcontroladores 8051 6

Capítulo 5Capítulo 5

Instrução Bytes Ciclos Codificação Operação

PUSH direct 2 2 1100 0000 direct address (PC) (PC) + 2(SP) (SP) + 1((SP)) (direct)

POP direct 2 2 1101 0000 direct address (PC) (PC) + 2 (direct) ((SP))(SP) (SP)-1

Tabela 1: Descrição das instruções PUSH direct e POP direct.

Page 7: Capítulo 5

Prentice Hall Microcontroladores 8051 7

Capítulo 5Capítulo 5

Instrução Bytes Ciclos Codificação Operação

ACALL addr11 2 2 a10 a9 a8 1 0001 a7............a0 (PC) (PC)+2 (SP) (SP)+1 ((SP)) (PC7-0) (SP) - (SP)+1 ((SP)) (PC15-8) (PC10-0) addr11

LCALL addr16 3 2 0001 0010 a15....a8 a7 ..........a0 (PC) (PC)+3 (SP) (SP)+1 ((SP)) - (PC7-0) (SP) (SP)+1 ((SP)) (PC15-8) (PC15-0) addr16

Tabela 2: Descrição das instruções ACALL addr11 e LCALL addr16.

Page 8: Capítulo 5

Prentice Hall Microcontroladores 8051 8

Capítulo 5Capítulo 5

Instrução Bytes Ciclos Codificação Operação

RET 1 2 0010 0010 (PC15-8) ((SP))(SP) (SP)-1(PC7-0) ((SP))(SP) (SP)-1

RETI 1 2 0011 0010 (PC15-8) ((SP))(SP) (SP)-1(PC7-0) ((SP))(SP) (SP)-1

Tabela 3: Descrição das instruções RET e RETI.

Page 9: Capítulo 5

Prentice Hall Microcontroladores 8051 9

Capítulo 5Capítulo 5Estruturação da

Linguagem Assembly

Descrição e Definição das Sub-rotinas

Início do programa: Inicialização das variáveis e programação do hardware

Loop do programa principal:- processamento/instruções de chamadas a sub-rotinas;- instrução de "jumper" incondicional para o início do Loop do programa principal (gerenciamento e controle de 24 horas por dia).

Page 10: Capítulo 5

Prentice Hall Microcontroladores 8051 10

Capítulo 5Capítulo 5Estruturação da Linguagem “Assembly”: ;Sub-rotinas - Primeira Parte:

addr1: Subrotina 1 RET : addrN: Subrotina N RET

; Inicialização das variáveis do programa e do “hardware” - Segunda Parte que pertence ao ; programa principal:

endereçodoIniciodoprogramaprincipal: instruções 1 : instrução N

; "Loop" do Programa Principal - Terceira Parte que pertence ao programa principal: loop: instrução 1 : instrução N call adr1 ; chama a subrotina 1 : : call adrN ; chama a subrotina N : : sjmp loop ; “Fim do looping do programa END ; principal”

Page 11: Capítulo 5

Prentice Hall Microcontroladores 8051 11

Capítulo 5Capítulo 5 Metodologia sistemática de implementação de projeto de programa; Para um projeto completo constituído de muitas funções ou tarefas, a solução é facilmente implementada através da divisão do projeto completo em pequenos módulos (simples sub-rotinas) que são responsáveis por tarefas específicas e bem definidas; Tempo de implementação é extremamente reduzido, pois somente é necessário definir as diferentes tarefas (sub-rotinas) que o projeto deve executar e essas tarefas devem ser chamadas no loop do programa principal de forma organizada e seqüencial; Alta confiabilidade na implementação das sub-rotinas; Tempo de desenvolvimento reduzido; Tempo de simulação reduzido; Tempo de emulação reduzido; Tempo de manutenção reduzido; Projeto modular; Flexibilidade na implementação de novas características ao produto final através da inserção e retiradas dos módulos que compõem o projeto do programa; Inserção dos módulos já implementados em bibliotecas de sub-rotinas. Na implementação de novos projetos as mesmas podem ser utilizadas imediatamente; Fácil manutenção pois quando ocorrer um problema, o mesmo pode ser diretamente analisado na sua respectiva sub-rotina.

Page 12: Capítulo 5

Prentice Hall Microcontroladores 8051 12

Capítulo 5Capítulo 5SUB1: Qte de Nums = FFh

(R0)#60h(R1)#05h(65h)#00h

(C)#0b(A)((R0))

(A)(A)-(C)-#0FFh

(A)0 ?[(A) #0FFh ?]

(65h)(65h)+1

(R1)(R1)-1(R1)0 ?

N

S

S

RET

N

(R0)(R0)+1

Programa Principal

(PSW) #00h(SP) #70h

Chama sub-rotina SUB1

Fim

Page 13: Capítulo 5

Prentice Hall Microcontroladores 8051 13

Capítulo 5Capítulo 5

DEFSEG EXEMPLO, ABSOLUTESEG EXEMPLOORG 0100h; Sub-rotina que calcula a qte de num=0FFh

SUB1: MOV R0,#60h ; Endereço inicial do bufferMOV R1,#05h ; Quantidades de elementos do bufferMOV 65h,#00 ; Zera contador de num=0FFh

ADR2: CLR C ; Zera o (C): não influenciar a op. de sub.MOV A,@R0 ; Carrega (A) com o cont. do buffer de mem.SUBB A,#0FFh ; Subtrai o (A) da const. 0FFhJNZ ADR1 ; Se (A)0 (A #0FFh) (PC)=ADR1 [não soma um no (65h)]INC 65h ; Se (A)=0 (A = #0FFh), soma um no (65h)

ADR1: INC R0 ; Aponta p/ a próx. pos. mem. a ser analisadaDJNZ R1,ADR2 ; Existem mais dados a serem analisados ? Se sim, salta para ADR2RET ; Se não, finaliza a sub-rotina se (R1)=0 e retorna.

; Início do programa principalPROGP:MOV PSW,#00h ; Faz (PSW) #00h.

MOV SP,#70h ; Define (SP)=70h (início da Pilha)ACALL SUB1 ; Chama a sub-rotina SUB1.END ; Fim do programa principal