Вы находитесь на странице: 1из 16

CAPTULO 5 DESVIOS CONDICIONAIS E NO CONDIONAIS,

ESTRUTURAS DE LAO E REPETIO


A linguagem de programao Assembly para 8051, assim como outras,
oferece instrues que possibilitam a criao desvios ou saltos ao longo da
programao. Tais desvios podem ocorrer de forma condicional ou no
condicional conforme desejado na estrutura do programa.
Este captulo, sero estudadas as principais instrues de desvio bem
como sua a aplicao na criao de estruturas de lao e repetio ao longo de
programas em Assembly.

5.1 Desvios no condicionais


Desvios no condicionais, so aqueles que ocorrem ao longo da
programao e independem de qualquer condio direta para acontecer. Os
desvios no condicionais so obtidos a partir da seguintes instrues bem
como suas variantes expressas na tabela da pgina 27:
JMP (salta para) A instruo JMP realiza um salto para um label (rtulo
especfico) definido ao longo da programao. Tais labels podem ser
constitudos por qualquer palavra seguida por dois pontos.

Exemplo: JMP label

Figura 15 Rotina que efetua contagem infinita do contedo do acumulador.


O comando JMP pode apresentar trs variaes, de acordo com o
nmero de linhas que o distancia do label do ponto onde o comando se
encontra.
SJMP - O endereo destino pode varrer uma largura de -128 a +127
bytes na Memria de Programas;
LJMP - O endereo destino passa a ser uma constante de 16bits que
pode ser qualquer localidade dos 64Kbytes da Memria de Programas;
AJMP - O endereo destino passa a ser uma constante de 11bits. A
instruo consiste em 2 bytes: 3bits do endereo localizam-se no
opcode enquanto os outros 8bits localizam-se no prximo byte. Os
11bits assim formados simplesmente substituem os 11bits menos
significativos do contador de programas.

CALL e RET (RETI) - O comando CALL possibilita chamar uma sub-rotina


ao longo da programao. Esta sub-rotina tem o seu final marcada pelo
comando RET, ou seja, quando encontrado este ltimo comando o contador de
programa far com que a execuo retorne a partir do ponto onde a sub-rotina
for chamada.

Exemplo: CALL subrotina(label)

Figura 16 Rotina do exemplo anterior, agora com uma sub-rotina que gera
uma pausa de aproximadamente um segundo entre as contagens.
Semelhantemente instruo JMP, a instruo CALL, tambm pode
apresentar-se de duas formas: LCALL e ACALL.
LCALL - utiliza o endereo destino em 16bits que pode ser
qualquer localidade dos 64Kbytes da Memria de Programas;

ACALL - utiliza formatos em 11bits o que significa que o


endereo destino deve estar no mesmo bloco de 2Kbytes
seguintes a instruo.

O comando RETI tem funo semelhante ao RET, porm seu uso


restrito s rotinas de interrupes.

5.2 Desvios condicionais


Os desvios condicionais, ao contrrio dos no condicionais, s ocorrem
mediante a satisfao de determinada condio. A tabela da pgina 27 tambm
ilustra as instrues utilizadas bem como suas variantes e sintaxe.

DJNZ Decrementa o contedo de um registrador ou posio de memria,


saltando para o label especificado enquanto o contedo deste registrador ou
posio de memria no for igual a zero. Quando este chegar a zero, a
execuo segue na prxima linha aps o comando DJNZ.
Exemplo: DJNZ xx , label

Como exemplo de utilizao, pode-se observar a rotina de tempo da figura 15:

A instruo DJNZ no oferece opo para utilizao do acumulador, j


que para esta finalidade utiliza-se, da mesma maneira, a instruo JZ e JNZ
(tabela da pg 27).
CJNE Compara o valor de uma posio de memria ou registrador, inclusive
acumulador, com um valor numrico. Enquanto estes forem diferentes, salta
para label indicado. Quando forem iguais segue execuo na prxima linha
aps o prprio CJNE.
Exemplo: CJNE xx , #nn, label

Figura 17 Exemplo de rotina, utilizando a instruo CJNE. Pode-se observar


que todas as vezes em que o valor do acumulador atingir valor 09h, o mesmo
ter seu contedo zerado.

OBS: IMPORTANTE RESSALTAR QUE AS ROTINAS DE TEMPO (DELAY)


UTILIZADAS NO SIMULADOR FORAM CALCULADAS ESPECIFICAMENTE
PARA A GERAO DE ATRASOS NA BASE DE TEMPO DO MESMO. PARA
IMPLEMENTAES EM MEIO FISICO, DEVE-SE CALCULAR O NMERO
DE CICLOS NECESSRIOS AO TEMPO DESEJADO CONFORME
MATERIAL TERICO DO CAPTULO 1.

Universidade Santa Ceclia - UNISANTA


Engenharia da Computao

Data:

Disciplina: Arquitetura de Computadores


Professor Cludio Fernandes

Nome

RA

1. Elaborar rotina que faa com que o acumulador efetue a contagem de


FFh a 00h com intervalo de aproximadamente 1segundo e ao trmino da
contagem finalize a execuo (end).
2. Elabore rotina semelhante a da questo anterior que efetue a mesma
contagem de forma crescente (00h a 0Fh).
3. Elaborar rotina que efetue a contagem crescente do contedo de
acumulador at 0Fh. Quando este valor for atingido, realizar a contagem
decrescente at 00h e em seguida reiniciar todo o processo
(infinitamente). Utilizar entre as contagens o intervalo de
aproximadamente 1 segundo.
4. Elaborar rotina que efetue em R0 uma contagem crescente at 0Fh em
intervalos de aproximadamente 1 segundo, em seguida carregue R2
com o valor AAh e por fim faa uma operao OU exclusivo entre R0 e o
endereo apontado por R2.

CAPTULO 6 MANIPULAO DE SINAIS NOS PORTS DE ENTRADA


E SADA DO 8051.

Como j fora visto no primeiro captulo, o 8051 possui quatro ports de


entrada e sada. Por meio destes ports, pode-se trocar informaes e sinais
com o meio externo, atravs de dispositivos diversos que podem compreender
desde leds e botoeiras a sensores ou atuadores industriais.
Este captulo descrever a utilizao de comandos de leitura e escrita
nos ports do 8051, utilizando como ferramenta, o software MCU 8051 IDE.

6.1 Acionamento de leds


Os quatro ports de entrada e sada do 8051, so internamente,
associados a quatro registradores denominados P0, P1, P2 e P3
respectivamente . Portanto, quando se atribui um valor numrico a estes
registradores, atribui-se tambm o mesmo valor binrio aos respectivos ports.

Figura 18 Exemplo de acionamento de oito leds ligados aos pinos do Port 0.

Como exemplo do que fora descrito, pode-se desenvolver uma rotina,


que faa com que oito leds ligados ao port 0 do 8051 pisquem
simultaneamente, em intervalos de aproximadamente um segundo (no
simulador).

Inicialmente, seleciona-se o painel de leds na aba Virtual HW :

Em seguida, configure o port e os pinos associados a cada led:

Pode-se tambm selecionar configurao, para que o painel esteja sempre


visvel:

Vale ressaltar que, de acordo com a simbologia expressa no prprio


painel, os leds sero acionados por nvel lgico zero. Para a simulao, o
boto existente no canto superior esquerdo do painel tambm deve estar
habilitando o para funcionamento (posio ON).
Por fim, basta digitar executar (conforme descrito em captulos
anteriores) a rotina abaixo:

Se todos os passos forem respeitados, ao se executar a simulao, os


leds devem piscar conforme proposio.

6.2 Leitura de chaves


O 8051 tambm permite a leitura de sinais presentes em seus ports. Tal
leitura, pode ocorrer em relao a todo port, utilizando para tal o comando
CJNE, por exemplo. Ou em apenas um ou mais bits, individualmente, para isso
utiliza-se as instrues JB e JNB.

JB
Verifica o contedo de um bit e salta para label indicado se este for um.
Caso contrrio, segue na prxima linha;
Exemplo:

JB P3.0, INICIO

Verifica o sinal no pino (bit) 0 do port 3, se o contedo for 1 salta para


INICIO, se no, segue para a prxima linha.

JNB
Verifica o contedo de um bit e salta para label indicado se este for
zero. Caso contrrio, segue na prxima linha;
Exemplo:

JNB P3.0, INICIO

Verifica o sinal no pino (bit) 0 do port 3, se o contedo for 0 salta para


INICIO, se no, segue para a prxima linha.
Assim como fora feito para o acionamento de leds, ser descrito a seguir
a utilizao de botes, ligados aos ports do 8051 no software simulador .

Inicialmente, deve-se selecionar o Simple Keypad. E, para este


componente, adotar os mesmos procedimentos respeitados para o painel de
leds (configuraes).

10

Configurar duas chaves para os pinos P2.7 e P2.0 respectivamente,


pode-se observar pela simbologia que, quando as chaves forem acionadas,
nvel lgico zero ser estabelecido nos pinos (bits) dos ports. Para a
simulao, o painel de leds tambm dever permanecer configurado conforme
o subitem anterior (todos no port P0). Antes de propor a rotina de acionamento
dos leds por meio de chaves, vale lembrar que nos bits de cada registrador
(inclusive ports de E/S) pode-se forar nvel lgico zero ou um atravs dos
comandos CLR ou SETB respectivamente.

11

Em seguida, deve-se executar a rotina abaixo, afim de verificar o


comportamento dos leds mediante o acionamento das chaves.

12

Universidade Santa Ceclia - UNISANTA


Engenharia da Computao

Data:

Disciplina: Arquitetura de Computadores


Professor Cludio Fernandes

Nome

RA

1. Elaborar rotina, que efetue uma contagem crescente em sistema binrio,


mediante a pulsos em uma chave ligada ao pino 7 do port 3. A
visualizao dos valores binrios deve ocorrer atravs de oito leds,
ligados aos pinos do port 0.

2. Em uma indstria de raes, decidiu-se automatizar o processo


produtivo, que at ento era realizado manualmente. Desenvolva uma
rotina para microcontrolador, que ligue simultaneamente trs motores
trituradores A, B e C interligados aos pinos P2.0, P2.1 e P2.2
respectivamente. O motor A deve ser desligado to logo o sensor de
nvel alto seja atuado (chave ligada a P0.1 fechada) , B e C devem ser
desligados juntos, aps 5 segundos do desligamento de A. To logo os
trs motores estejam desligados, um misturador, ligado a P2.7 deve ser
ligados por 40 segundos e em seguida desligado. A mistura deve
repousar por 1 minuto e em seguida, uma bomba ligada a P2.6 dever
ser ligada at o esvaziamento do tanque onde ocorreu a mistura (sensor
de nvel baixo ligado a P0.0 aberto). Implemente e simule a rotina
proposta, por meio das chaves e leds disponveis no simulador MCU
8051 IDE.

13

Universidade Santa Ceclia - UNISANTA


Engenharia da Computao

Data:

Disciplina: Arquitetura de Computadores


Professor Cludio Fernandes

Nome

RA

1. Em uma linha de montagem, temos quatro sensores A (P1.0), B (P1.0),


C (P1.0) e D (P1.0) que fazem a inspeo de um produto para depois
ativar o sistema de pintura (P3.7). Esses sensores so ativados de forma
sequencial: B, C, A e D e o produto no pintado se os sensores no
forem ativados na sequencia acima. Depois de liberado o sistema de
pintura, acende-se um indicador luminoso (P3.1). Faa um programa que
simule esta linha de montagem atravs de chaves e leds.

2. Criar rotina que faa com que um semforo funcione conforme


programao de tempos assim definida:
Vermelho 1 e verde 2 por 10 segundos
Vermelho 1 e amarelo 2 por 2 segundos
Verde 1 e vermelho 2 por 8 segundos
Amarelo 1 e vermelho 2 por 2 segundos
Volta ao primeiro estgio

14

3. Elaborar controle para uma fechadura eletrnica, utilizando chaves ligadas


as entradas de P0.3, P0.2, P0.1 e P0.0 do simulador. Sempre que a
sequncia correta for inserida (1010) os leds de P1.0 P1.3 devero piscar
5 vezes (intervalos de 1 segundo) permanecendo acesos em seguida,
momento em que a fechadura (P1.7) ser destravada. Enquanto a mesma
estiver destravada, se todos as chaves forem posicionados em 1 (1111),
esta dever retornar condio inicial (travada).
4. Projete um sistema de controle atravs de um 8051 para uma empresa que
possui em sua linha de produo, uma etapa de envase de latas de tintas
automotivas. O programa deve cumprir os seguintes requisitos:

Requisitos para o projeto:


a- O sistema deve possuir um boto retentivo de liga;
b- Ao ligarmos o sistema (boto Liga acionado) V1 deve ser aberto at
LS ser alcanado (nvel superior do tanque);
c- Aps LS acionado, o motor M1 deve ser ligado at a lata de tinta
presente na esteira acionar LP (detector de lata presente), quando o
motor deve ser desligado;
d- Nesse momento, deve ser aberta a vlvula V2 por 5 segundos em
seguida a V2 fechada e ligado novamente M1 at uma nova lata
chegar a LP;
e- O sistema deve ser desligado ao serem contadas 3 latas envasadas.
Todos os sensores devero ser ativos em nvel baixo.
Deve ser obrigatoriamente utilizado uma instruo CJNE para a contagem das
latas.

15

Definies para o projeto:


Pino P3.0: Entrada- Sensor nvel baixo LI.
Pino P3.1: Entrada- Sensor nvel alto do tanque LS.
Pino P3.2: Boto de Liga do processo.
Pino P3.3: Entrada- Sensor lata presente
Pino P.0: Motor M1 que controla a esteira.
Pino P2.1: Vlvula V1.
Pino P2.2: Vlvula V2.

16

BIBLIOGRAFIA

COUTO, M. M. M. , XM852 Microcontroladores MCS-52. Minas Gerais: Exsto T. Ltda., 2009.

WIKIPEDIA, Assembly, Disponvel em:<http://pt.wikipedia.org/wiki/Assembly>. Acesso em


21/09/2013.

EPUSP, Programao de Microcontroladores I, Disponvel em:<


http://www.pcs.usp.br/~labdig/pdffiles_2011/microI.pdf>. Acesso em 21/09/2013.

LOPES, A., Microprocessadores Vs Microcontroladores, Disponvel em:<


http://microduvida.blogspot.com.br/p/microprocessadores-vs.html>. Acesso em 10/09/2013.

Microgenios, C. T, Curso online de microcontroladores - Linguagem C, Disponvel em:<


http://www.microgenios.com.br/website/>. Acesso em 18/05/2012

17

Вам также может понравиться