Você está na página 1de 6

www.u8051.com.

br
CAPTULO

Estruturas de Controle e Repetio


Leia os captulos 5 e 6 do livro 8051 Teoria e responda:
1. Qual o valor final da varivel contagem?
int contagem=0;
contagem++;
contagem=........ (preencher com o valor final da varivel
contagem)

2. Qual o valor final da varivel contagem?


int contagem=999;
contagem--;
contagem=........

3. Qual o valor final do pino P0_0 ?


A=0;
if(A==0) P0_0=0;
if(A==1) P0_0=1;
Resposta:
a.( ) P0_0=0;
b.( ) P0_0=1;

www.u8051.com.br

4. Qual o nvel lgico do Pino P2_0 ao final deste trecho de


programa?
A=1;
B=0;
if((A==1)|(B==1)) P2_0=1;
else P2_0=0;
Resposta:
a.( ) P2_0=1; (o comando if executado).
b.( ) P2_0=0; (o comando else executado).

5. Qual o valor final da varivel contador para cada caso?


Descreva, tambm, o funcionamento de cada teste if. (Dica:
8051 Teoria pgina 42-43)
bit x=0;
bit y=1;
int contador=0;
if(x & y)contador++;

contador=.......

if(x | y)contador=contador+5; contador=.......


if(x & !y)contador--;

contador=.......

6. Qual o valor final da varivel x?


bit x=0;
if(x) x=~x;
if(!x)x=~x;
Resposta:

a.( ) x=0;

b.( ) x=1;

7. Qual a diferena entre os operadores = e ==?


8. Na pgina 47, o referencial terico ilustra um bug de
programao relacionado ao comando if. Por que este programa

www.u8051.com.br

considerado errado, tendo em vista que no existe erro


durante a compilao? Corrija o bug deste programa.
9. Supondo que cada instruo do programa (em negrito) a seguir
consuma 10 microssegundos para ser executada, o que faz esse
programa? Qual seria o melhor tipo para a varivel tempo (ex.:
bit, char, int, long, signed, unsigned)?

#include<AT89X52.H>
Tipo_da_varivel tempo=50000;
void main(){
P0=0;

//desliga todos pinos de P0

while(1){
if(tempo) tempo--;
else {
P0_1=~P0_1; //inverte o nvel
tempo=50000; //lgico de P0.1
}
}
}
//PISCA_1.C

O desenvolvimento desta atividade est disponvel em


videoaula no CD-ROM de estudos, ou acessando o seguinte
canal
do
YouTube:
http://www.youtube.com/user/cmg3k1#p/u/0/rwzaj0OJMN0

10. Abra o JFE Editor e desenvolva as seguintes atividades:

Crie um novo arquivo e salve-o como PISCA_1.C


imediatamente;
Digite o programa PISCA_1.C e compile-o;
Em
seguida
grave
o
programa
PISCA_1.HEX
no
microcontrolador para observar o funcionamento.
Se voc no dispe do CD-ROM de estudos, poder assistir a
videoaula para aprender gravar o KIT, acessando o seguinte
canal do YouTube: http://www.youtube.com/user/cmg3k1#p/u

www.u8051.com.br

O modelo de pisca-pisca do programa acima emprega um dos


mais eficientes mtodos de programao: A programao
multitarefa, a qual possibilita ao 8051 executar comandos
pseudo-paralelos. Note que o LED pisca num intervalo de tempo
sem que haja uma pausa no processamento tipicamente
causada pelo comando delay_ms que utilizamos normalmente.
Futuramente estudaremos mais detalhadamente esta tcnica

11. Observe a linha em negrito do programa PISCA_1.C e


responda. Ela faz uso da linguagem C resumida, largamente
utilizada por programadores profissionais.
Existem pelo menos mais duas formas de reescrever a instruo
if (tempo) tempo--; sem afetar a lgica do programa.
Mencione pelo menos uma delas.
12. Reescreva o programa abaixo empregando a estrutura switch:
(Ver pg. 48 do referencial terico)
if(contagem==0)
if(contagem==1)
if(contagem==2)
if(contagem==3)
if(contagem==4)
if(contagem==5)

P2=63;
P2=6;
P2=91;
P2=79;
P2=102;
P2=109;

Cole aqui o cdigo fonte do seu programa.

13. O que significa


inicializada?

afirmao

toda

varivel

deve

ser

14. Qual o valor final da varivel J para o programa do captulo


6.3?
15. Qual das estruturas if, if-else ou if-else-if mais eficiente?
Justifique.

www.u8051.com.br

16. Descreva a finalidade de todas as conexes do esquema do


Livro 8051 Teoria pgina 51, figura 6.1.- circuito pisca LED.
Importante:
Lembre-se
de
salvar
o
desenvolvimento
das
suas
atividades
periodicamente e evite a perda do seu trabalho!

17. Por que no captulo 6.6.3 (pgina 54), o livro cita que o teste
while(a) sempre verdadeiro? O que precisa acontecer para
que o comando while(a) seja finalizado?
18. Para que serve a estrutura de repetio while(1)?
19. Utilize o comando while para criar um seqencial de LEDs,
iniciando em P0_0 at P0_7 com repetio infinita.
Veja como o funcionamento de um seqencial de LEDs:
Liga LED P0_0
Aguarda 2 segundos
Liga LED P0_1
Aguarda 2 segundos
Liga LED P0_2
Aguarda 2 segundos
Continua a seqncia at P0_7
Repete a seqncia.
Copie e Cole aqui o cdigo fonte do seu programa.

20. No captulo 6.2.2 (pgina 50) temos o comando for. Utilize o


programa de exemplo daquele captulo para explicar como
funciona este comando.
21. Execute no KIT, os programas das pginas 50 e 51 para
comprovar o funcionamento do comando for.
Obs.: Faa as alteraes necessrias para
que o funcionamento do programa possa ser
visualizado nos LEDs do KIT.
Cole aqui o cdigo fonte do seu programa.

22. Experimente modificar o nmero de repeties do comando for


e tambm adicione o LED de P0_1 para piscar juntamente com
P0_0.

www.u8051.com.br
Cole aqui o cdigo fonte do seu programa.

Você também pode gostar