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

UNIVERSIDADE FEDERAL RURAL DO SEMI-RIDO

DEPARTAMENTO DE CINCIAS AMBIENTAIS E TECNOLGICAS


CURSO DE ENGENHARIA DE ENERGIA
DISCIPLINA: MICROPROCESSADORES E
MICROCONTROLADORES

DANIEL ANTONIO DE OLIVEIRA FILHO

RELATORIO LISTA DE EXERCCIOS :


Unidade 2

MOSSOR-RN
2017
EXERCCIO 1: Em uma caixa dgua temos dois sensores que verificam o valor mximo e
mnimo (chaves P1_4 e P1_5). Quando o nvel de gua fica abaixo do valor mnimo, acionada
uma bomba (P1_0) que comea a encher a caixa. Quando o nvel da gua chega ao valor mximo,
esta bomba desligada. Faa um programa que simule este comportamento. Caso o sensor de nvel
baixo estiver 0 e o de nvel alto estiver 1, pisque todos os LEDS para indicar que houve falha no
sistema.

Linha 1

#include<8051.h>, inclui a biblioteca do microcontrolador 8051 ao programa

Linha 2

Define a porta P1_4 como o sensor de baixo nvel, definido como sensormin no programa;
Linha 3

Define a porta P1_5 como o sensor de alto nvel, definido como sensormax no programa;

Linha 4

Define a porta P1_0 como o motor-bomba, definido como motorbomba no programa;.

Linha 6

Inicia-se a sub-rotina MSDelay, determinando a varivel x como inteira e sem sinal,


unsigned int, com 8 bits e variando de 0 a 255.

Linha 7

Determinam-se as variveis j e i como inteiras e sem sinal, unsigned int, com 8 bits e
variando de 0 a 255

Linha 8

Inicia-se a primeira funo for, como primeiro contador da sub-rotina de atraso;

Linha 9

Inicia-se a segunda funo for, como segundo contador da sub-rotina de atraso, e ao chegar
ao valor 1275, termina-se a sub-rotina;

Linha 11

Inicia-se o programa principal atravs da funo void main;

Linha 13

Inicia-se a funo for, como lao infinito, que far o programa rodar sempre dentro do lao;

Linha 15

Ativa-se a porta P1, P1_0 porta P1_3, setando-a;

Linha 16

Ativa-se a porta P1_4, o sensor de baixa, setando-a pra 1;


Linha 17

Ativa-se a porta P1_5, o sensor de alta, setando-a pra 1;

Linha 18

Comparam-se as posies dos sensores atravs de uma sequncia de funes while,


iniciando-se na linha 18, na qual compara-se se as sensores esto desativados;

Linha 19

Caso os sensores estejam desativados, ativa-se o motor bomba e o programa permanece


nesse lao at que se modifique uma das duas chaves, saltando para a prxima linha;

Linha 21

Compara se o sensormin est ativado e o sensormax est desativado;

Linha 22

Caso a condio seja satisfeita permanece ativo ou ativa-se o motor bomba, caso contrario
salta-se para a prxima instruo, while, na linha 24;

Linha 24

Compara se o sensormin e o sensormax esto ativados;

Linha 25

Caso a condio seja satisfeita desativa-se o motor bomba, caso contrario salta-se para a
prxima instruo, while, na linha 27;

Linha 27

Compara se o sensormin est desativado e o sensormax est ativado, condio de erro;

Linhas 28, 29, 30 e 31

Caso a condio seja satisfeita, desativa-se o motor-bomba e ativam-se as porta P1_1, P1_2
e P1_3, led's;

Linha 32

Chama-se a funo MSDelay;


Linhas 33, 34 e 35

Ativam-se as porta P1_1, P1_2 e P1_3, led's;

Linha 34

Chama-se a funo MSDelay e enquanto a condio da funo da linha 27 estiver satisfeita


o programa permanece nesse lao. Caso a condio mude retorna-se ao inicio do lao for infinito na
linha, reiniciando o programa.

EXERCCIO 2: Faa um programa que realize as seguintes operaes lgicas:


LED1 = DIP1 + DIP2
LED2 = DIP1.DIP2
LED3 = DIP1+DIP2
LED4 = DIP1 + DIP2. DIP1
Nas quais DIP's so chaves

Linha 1

#include<8051.h>, inclui a biblioteca do microcontrolador 8051 ao programa;


Linha 2

Define a porta P1_4 como uma chave denominado como dip1 no programa;

Linha 3

Define a porta P1_5 como uma chave denominado como dip2 no programa;

Linhas 4, 5 e 6

Define as portas P1_0, P1_1 e P1_2 como LED1, LED2, LED3 e LED4, led's no meio
fsico;

Linha 9

Inicia-se o programa principal atravs da funo void main;

Linha 10

Determinam-se o valor inicial da porta P1, P1_0 porta P1_3, zerando-a, atravs do valor
0x00;

Linhas 11 e 12

Determinam-se o valor inicial das portas, chaves, P1_4 e P1_5, dip1 e dip2, setando-as pra
1;

Linha 13, 14, 15 e 16

Ativam-se as portas, chaves, P1_0 a P1_3, LED1 a LED4, setando-as pra 1;

Linha 17

Inicia-se a funo for, como lao infinito, que far o programa rodar sempre dentro do lao;

Linha 19

Comparam-se as posies das chaves dip1 e dip2 atravs de uma sequncia de funes if,
iniciando-se na linha 19, na qual compara-se se uma das chaves esto ativada;

Linhas 20 e 21

Caso a condio do if da linha17 seja satisfeita, ativam-se o LED1 e o LED4, nas linha 20 e
21, respectivamente, caso contrario salta-se para a funo eles na linha 23;
Linha 23

A funo else executa uma tarefa no caso da condio da funo if da linha 17 no seja
satisfeita;

Linhas 24 e 25

A funo else executa a desativao dos LED1 e o LED4;

Linha 27

Compara se as duas chaves, dip1 e dip2, esto ativada;

Linha 28

Caso a condio do if da linha 27 seja satisfeita, ativa-se o LED2, caso contrario salta-se
para a funo eles na linha 29;

Linha 29

A funo else executa uma tarefa no caso da condio da funo if da linha 27 no seja
satisfeita;

Linha 30

A funo else executa a desativao do LED2;

Linha 31

Compara se uma das duas ou as duas chaves, dip1 e dip2, esto ativada;

Linha 32

Caso a condio do if da linha 31 seja satisfeita, desativa-se o LED3, caso contrario salta-se
para a funo eles na linha 33;

Linha 33

A funo else executa uma tarefa no caso da condio funo if da linha 31 no seja
satisfeita;

Linha 34

A funo else executa a ativao do LED3. Aps isso retorna-se ao lao infinito for na linha
17.
EXERCCIO 3: Faa um programa que acione o BZ quando a DIP1 = 1.

Linha 1

O #include<8051.h> inclui a biblioteca do microcontrolador 8051 ao programa;

Linha 2

Define a porta P1_0 como BZ no programa;

Linha 3

Define a porta P1_4 como uma chave denominado como dip1 no programa;

Linha 5

Inicia-se o programa principal atravs da funo void main;

Linha 7

Determinam-se o valor inicial da porta P1, zerando-a atravs do valor 0;

Linhas 8

Ativa-se a porta P1_4, dip1, setando-a pra 1;

Linha 9

Inicia-se a funo for, como lao infinito, que far o programa rodar sempre dentro do lao;
Linha 11

Verifica se a chave dip1 est desativada atravs da funo if;

Linhas 12

Caso a condio do if da linha11 seja satisfeita, desativa-se o BZ, caso contrario salta-se
para a funo eles na linha 13;

Linha 13

A funo else executa uma tarefa no caso da condio da funo if da linha 11 no seja
satisfeita;

Linha 14

A funo else executa a ativao do BZ. Aps isso retorna-se ao lao infinito for na linha 10.
Por impossibilidade tcnica o BZ, buzzer, foi substitudo por um led.

EXERCCIO 3: Faa um programa que faz os LEDS acenderem e apagarem com velocidade
controlada pela DIPS segundo tabela dada a seguir:
Linha 1

#include<8051.h>, inclui a biblioteca do microcontrolador 8051 ao programa;

Linhas 2,3 e 4

Define as portas P1_4, P1_5 e P1_6 como as chaves denominadas como dip1,dip2 e dip3,
respectivamente, no programa;

Linhas 5, 6, 7 e 8

Define as portas P1_0, P1_1, P1_2 e P1_3 como LED1, LED2, LED3 e LED4, led's no meio
fsico;

Linha 10

Inicia-se a sub-rotina MSDelay, determinando a varivel x como inteira e sem sinal,


unsigned int, com 8 bits e variando de 0 a 255.

Linha 11

Determinam-se as variveis j e i como inteiras e sem sinal, unsigned int, com 8 bits e
variando de 0 a 255

Linha 12

Inicia-se a primeira funo for, como primeiro contador da sub-rotina de atraso;

Linha 13

Inicia-se a segunda funo for, como segundo contador da sub-rotina de atraso, e ao chegar
ao valor 1275, termina-se a sub-rotina;
Linha 16

Inicia-se o programa principal atravs da funo void main;

Linha 18

Determinam-se o valor inicial da porta P1, P1_0 porta P1_3, zerando-a, atravs do valor
0x00;

Linhas 19, 20 e 21

Determinam-se o valor inicial das portas, chaves, P1_4, P1_5 e P1_6, dip1, dip2 e dip3,
setando-as pra 1;
Linha 22, 23, 24 e 25

Ativam-se as portas, P1_0 a P1_3, LED1 a LED4, setando-as pra 1;

Linha 27

Inicia-se a funo for, como lao infinito, que far o programa rodar sempre dentro do lao;

Linha 28

Comparam-se as posies das chaves dip1, dip2 e dip3 atravs de uma sequncia de funes
if, iniciando-se na linha 29, na qual compara se as chaves esto desativadas;

Linhas 29, 30, 31 e 32

Caso a condio do if da linha 28 seja satisfeita, ativam-se os LED1, LED2, LED3 e LED4,
nas linha 29,30,31 e 32;

Linha 33

Chama-se a funo MSDelay, com tempo de 100 ms;

Linhas 34, 35, 36 e 37

Aps o termino da sub-rotina MSDelay da linah33, desativam-se os LED1, LED2, LED3 e


LED4, nas linha 34, 35, 36 e 37;

Linha 38

Chama-se a funo MSDelay, com tempo de 100 ms, e enquanto a condio da linha 28
estiver satisfeita os led's acendero e apagaro com um atraso de 100 ms;
Linha 40

Compara se as chaves dip2 e dip3 esto desativadas e dip1 est ativada;

Linhas 41, 42, 43 e 44

Caso a condio do if da linha 40 seja satisfeita, ativam-se os LED1, LED2, LED3 e LED4,
nas linha 41, 42, 43 e 44;

Linha 45

Chama-se a funo MSDelay, com tempo de 200 ms;

Linhas 46, 47, 48 e 49

Aps o termino da sub-rotina MSDelay da linah33, desativam-se os LED1, LED2, LED3 e


LED4, nas linha 34, 35, 36 e 37;

Linha 50

Chama-se a funo MSDelay, com tempo de 200 ms, e enquanto a condio da linha 40
estiver satisfeita os led's acendero e apagaro com um atraso de 200 ms;

Linha 52

Compara se as chaves dip1 e dip3 esto desativadas e dip2 est ativada;

Linhas 53, 54, 55 e 56

Caso a condio do if da linha 52 seja satisfeita, ativam-se os LED1, LED2, LED3 e LED4,
nas linha 53, 54, 55 e 56;

Linha 57

Chama-se a funo MSDelay, com tempo de 300 ms;

Linhas 58, 59, 60 e 61

Aps o termino da sub-rotina MSDelay da linha 52, desativam-se os LED1, LED2, LED3 e
LED4, nas linha 58, 59, 60 e 61;

Linha 62
Chama-se a funo MSDelay, com tempo de 300 ms, e enquanto a condio da linha 52
estiver satisfeita os led's acendero e apagaro com um atraso de 300 ms;

Linha 64

Compara se as chaves dip1 e dip2 esto ativadas e dip3 est desativada;

Linhas 65, 66, 67 e 68

Caso a condio do if da linha 64 seja satisfeita, ativam-se os LED1, LED2, LED3 e LED4,
nas linha 65, 66, 67 e 68;

Linha 69

Chama-se a funo MSDelay, com tempo de 400 ms;

Linhas 70, 71, 72 e 73

Aps o termino da sub-rotina MSDelay da linha 69, desativam-se os LED1, LED2, LED3 e
LED4, nas linha 70, 71, 72 e 73;

Linha 74

Chama-se a funo MSDelay, com tempo de 400 ms, e enquanto a condio da linha 64
estiver satisfeita os led's acendero e apagaro com um atraso de 400 ms;

Linha 76

Compara se as chaves dip1 e dip2 esto desativadas e dip3 est ativada;

Linhas 77, 78, 79 e 80

Caso a condio do if da linha 76 seja satisfeita, ativam-se os LED1, LED2, LED3 e LED4,
nas linha 77, 78, 79 e 80;

Linha 81

Chama-se a funo MSDelay, com tempo de 500 ms;

Linhas 82, 83, 84 e 85

Aps o termino da sub-rotina MSDelay da linha 81, desativam-se os LED1, LED2, LED3 e
LED4, nas linha 82, 83, 84 e 85;
Linha 86

Chama-se a funo MSDelay, com tempo de 500 ms, e enquanto a condio da linha 76
estiver satisfeita os led's acendero e apagaro com um atraso de 500 ms;

Linha 88

Compara se as chaves dip1 e dip3 esto ativadas e dip2 est desativada;

Linhas 89, 90, 91 e 92

Caso a condio do if da linha 88 seja satisfeita, ativam-se os LED1, LED2, LED3 e LED4,
nas linha 89, 90, 91 e 92;

Linha 93

Chama-se a funo MSDelay, com tempo de 600 ms;

Linhas 94, 95, 96 e 97

Aps o termino da sub-rotina MSDelay da linha 88, desativam-se os LED1, LED2, LED3 e
LED4, nas linha 94, 95, 96 e 97;

Linha 98

Chama-se a funo MSDelay, com tempo de 600 ms, e enquanto a condio da linha 88
estiver satisfeita os led's acendero e apagaro com um atraso de 600 ms;

Linha 100

Compara se as chaves dip3 e dip2 esto ativadas e dip1 est desativada;

Linhas 101, 102, 103 e 104

Caso a condio do if da linha 100 seja satisfeita, ativam-se os LED1, LED2, LED3 e
LED4, nas linha 101, 102, 103 e 104;

Linha 105

Chama-se a funo MSDelay, com tempo de 700 ms;

Linhas 106, 107, 108 e 109

Aps o termino da sub-rotina MSDelay da linha 105, desativam-se os LED1, LED2, LED3 e
LED4, nas linha 106, 107, 108 e 109;
Linha 110

Chama-se a funo MSDelay, com tempo de 700 ms, e enquanto a condio da linha 100
estiver satisfeita os led's acendero e apagaro com um atraso de 700 ms;

Linha 112

Compara se as chaves dip1, dip2 e dip3 esto ativadas;

Linhas 113, 114, 115 e 116

Caso a condio do if da linha 112 seja satisfeita, ativam-se os LED1, LED2, LED3 e LED4,
nas linha 113, 114, 115 e 116;

Linha 117

Chama-se a funo MSDelay, com tempo de 800 ms;

Linhas 118, 119, 120 e 121

Aps o termino da sub-rotina MSDelay da linha 117, desativam-se os LED1, LED2, LED3 e
LED4, nas linha 118, 119, 120 e 121;

Linha 122

Chama-se a funo MSDelay, com tempo de 800 ms, e enquanto a condio da linha 112
estiver satisfeita os led's acendero e apagaro com um atraso de 800 ms. Aps isso retorna-se ao
inicio do lao infinito for na linha 17.

EXERCCIO 5: A cada pulso em PB (Chaves) ( 1 0 1 ) deve-se incrementar a contagem e


atualizar os LEDS. A cada incremento deve-se comparar a contagem atual com a contagem mxima
programada. Caso a contagem atingir o nmero programado (Mximo estabelecido) deve-se dar 5
bips no buzzer, zerar a contagem e recomear.
Linha 1

#include<8051.h>, inclui a biblioteca do microcontrolador 8051 ao programa;

Linha 2

Define a porta P1 como LEDS no programa;

Linha 3

Define as portas P2_1 como PB, uma chave, que dar o pulso necessrio;

Linha 5

Inicia-se a sub-rotina MSDelay, determinando a varivel x como inteira e sem sinal,


unsigned int, com 8 bits e variando de 0 a 255.
Linha 6

Determinam-se as variveis j e i como inteiras e sem sinal, unsigned int, com 8 bits e
variando de 0 a 255

Linha 7

Inicia-se a primeira funo for, como primeiro contador da sub-rotina de atraso;

Linha 8

Inicia-se a segunda funo for, como segundo contador da sub-rotina de atraso, e ao chegar
ao valor 1275, termina-se a sub-rotina;

Linha 10

Inicia-se o programa principal atravs da funo void main;

Linha 12

Determinam-se as variveis i e CONT como inteiras e sem sinal, unsigned int, com 8 bits e
variando de 0 a 255

Linhas 13

Ativa-se a porta P1, LEDS , setando-a pra 1;

Linha 14

Utiliza-se a funo while como lao principal;

Linha 15

Utiliza-se a funo while para o pulso de PB, e enquanto o valor for 1 permanece-se nesse
lao, caso contrario salta-se para a prxima linha;

Linha 16

Chama-se a funo MSDelay, com tempo de 1 ms;

Linhas 17

Utiliza-se a funo while para o pulso de PB, e enquanto o valor for 0 permanece-se nesse
lao, caso contrario salta-se para a prxima linha;
Linha 18

Chama-se a funo MSDelay, com tempo de 1 ms;

Linha 19

A varivel CONT incrementada em 1;

Linha 20

A varivel LEDS recebe o valor da varivel CONT, atualiza-se o valor de LEDS acendendo-
os conforme o valor de CONT;

Linha 21

Compara se a varivel CONT igual ao valor de parada, no caso 15;

Linha 22

Caso a condio do if da linha 21 seja satisfeita, entra-se em um lao for, caso contrario
salta-se para a funo while na linha 15;

Linha 24

Na linha 24 a varivel LEDS recebe o valor de CONT;

Linha 25

Zeram-se os led's;

Linha 26

Chama-se a funo MSDelay, com tempo de 1 ms, aps salta-se para a prxima linha;

Linha 27

Atualiza o valor da varivel LEDS;

Linha 28

Atualiza-se o valor da varivel LEDS, apagando-os

Linha 29
Chama-se a funo MSDelay, com tempo de 250 ms, aps salta-se para a prxima linha.
Repete-se esse lao for cinco vezes, aps isso atualizam-se os valores das variveis CONT e LEDS
e salta-se para a linha 15 reiniciando o programa.

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