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--; 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; contador=.......

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

www.u8051.com.br

8. Na pgina 47, o referencial terico ilustra um bug de programao relacionado ao comando if. Por que este programa 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; while(1){ if(tempo) tempo--; else { P0_1=~P0_1; //inverte o nvel tempo=50000; //lgico de P0.1 } } } //PISCA_1.C
//desliga todos pinos de P0

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.

www.u8051.com.br

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

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?

www.u8051.com.br

15. Qual das estruturas if, if-else ou if-else-if mais eficiente? Justifique. 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.

www.u8051.com.br

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.
Cole aqui o cdigo fonte do seu programa.

Você também pode gostar