Fluxograma e programação em

Propaganda
Capítulo 4
Fluxograma e programação em
“Assembly” aplicados a família
de microntroladores MCS-51 da
Intel
Prentice Hall
Microcontroladores 8051
1
Capítulo 4
 Estratégias de elaboração de programas
 Fluxogramas
 Programas Simples:
Nome do programa
Definição das condições iniciais
Processamento
Figura 5: Representação típica de um
fluxograma de uma rotina de um programa
simples.
Definição da saída do resultado
Fim do programa
Prentice Hall
Microcontroladores 8051
2
Capítulo 4
Nome do programa
Definição das condições iniciais
Processamento
Figura 6: Representação típica de
um fluxograma de uma rotina de
um programa com loop.
sim: a condição foi satisfeira
Bloco de tomada
de decisão (?).
Teste de uma
variável. não: a condição não foi satisfeita
Se o teste for falso: processamento de
certas informações (toma-se decisão)
Controle do
loop
Definição da saída do resultado
Fim do programa
Prentice Hall
Microcontroladores 8051
3
Capítulo 4
Exemplo de um programa simples:
Endereço
RAM Interna
Conteúdo
45h
XXh
+
5Ah
YYh
6Dh
SOMA
(A)  (45h)
(R0)  (5Ah)
(A)  (A) + (R0)
(6Dh)  (A)
FIM
Prentice Hall
Programa Fonte
MOV A,45h
MOV R0,5Ah
ADD A,R0
MOV 6Dh,A
Figura 8: Programa de adição usando a instrução
ADD A,Rn.
Microcontroladores 8051
4
Capítulo 4
SOMA
(A)  (45h)
(A)  (A) + (5Ah)
(6Dh)  (A)
Programa Fonte
MOV A,45h
ADD A,5Ah
MOV 6Dh,A
FIM
Figura 9: Programa de adição usando a instrução
ADD A,direct.
SOMA
Programa Fonte
(A)  (45h)
(R0)  #5Ah
(A)  (A) + ((R0))
(6Dh)  (A)
MOV A,45h
MOV R0,#5Ah
ADD A,@R0
MOV 6Dh,A
FIM
Prentice Hall
Figura 10: Programa de adição usando a instrução ADD
A,@Ri.
Microcontroladores 8051
5
Capítulo 4
Exemplo de programa com loop:
endereço inicial
endereço final
Endereço
RAM Interna
Conteúdo
60h
:
:
7Ah
7Bh
XXh
:
:
YYh
qte de ns < 38h
1Bh elementos
a serem
analisados
Figura 11: Desenho em forma de rascunho para ajudar no entendimento do que está sendo solicitado.
Prentice Hall
Microcontroladores 8051
6
Capítulo 4
Num < 38h
(R0)#60h
(R1)#1Bh
(7BH)#00h
Figura 12: Fluxograma que
calcula a quantidade de
números menores que 38h
de um buffer de memória.
(C)#0b
(A)((R0))
(A)(A)-(C)-#38h
S
(C)=0 ?
[(A)#38h ?]
N
(7Bh)(7Bh)+1
(R0)(R0)+1
(R1)(R1)-1
(R1)0 ?
S
N
Prentice Hall
Microcontroladores 8051
FIM
7
Capítulo 4
; Inicio do programa que calcula a qte de elementos < #38h
MOV R0,#60h
;Endereço inicial do buffer de memória
MOV R1,#1Bh
;Quantidades de elementos do buffer de memória
MOV 7Bh,#00
;Zera o contador que armazena a qte de num < #38h
ADR2: CLR C
;Limpa o conteúdo do carry-bit
MOV A,@R0
;Armazena no (A) um elemento do buffer
SUBB A,#38h
;Subtrai o (A) da constante #38h e define o flag (C)
JNC
ADR1
;Se (C)=0 (A>=#38h) => (PC)=ADR1 [não soma um no (7Ah)]
INC
7Bh
;Se (C)=1 (A<#38h), soma um no (7Bh)
ADR1: INC
R0
;Aponta para a próxima posição de memória a ser analisada
DJNZ R1,ADR2
;Se a qte de elementos a serem analisadas é  0, então salta para ADR2
END
;Termina o programa se (R1)=0.
Prentice Hall
Microcontroladores 8051
8
Download