Você está na página 1de 3

Dispositivos Perifricos / 2010.

2
Jos caro Santiago Bastos Eletrotcnica

1 Lista de Exerccios

1 O que deve ser feito para programar o pino de uma porta de I/O como:

a) Entrada digital;

Utiliza-se o comando SET_TRIS_PORTA (0xff), onde o valor 0xff define todos os pinos da respectiva
porta como entrada.

b) Sada digital.

Tambm atravs do comando SET_TRIS_PORTA (0x00), onde o valor 0x00 define todos os pinos da
respectiva porta como sada.

2 Explique que operao realizada pelas instrues C para PIC abaixo:

a) OUTPUT_HIGH (PIN);

Coloca o pino identificado em nvel lgico alto.

b) OUTPUT_LOW (PIN);

Coloca o pino identificado em nvel lgico baixo.

c) OUTPUT_BIT (PIN, VALUE);

Coloca o pino identificado em um nvel lgico determinado.

d) OUTPUT_X (VALUE) (X=A, B, C,...);

Manda para a porta X determinada, alguma varivel ou byte.

3 Explique que operao realizada pelas instrues C para PIC abaixo:

a) INPUT (PIN);

L em qual nvel lgico se encontra o pino identificado no comando.

b) INPUT_X ( ), (X=A, B, C...);

L todos os bits que estiverem na porta identificada no comando.

4 Explique que operao realizada pelas instrues C para PIC abaixo:

a) DELAY_MS (VALOR);

Faz com que o microcontrolador espere uma quantidade x de milissegundos antes de executar o
prximo comando.

b) DELAY_US (VALOR);

Faz com que o microcontrolador espere uma quantidade x de microssegundos antes de executar o
prximo comando.

5 Explique que operao realizada pelas instrues C para PIC abaixo:

a) SET_TRIS_X (VALOR) (X=A, B, C, D ou E, representa uma porta de I/O)


O comando define quais sero os pinos de entrada e sada da porta do microcontrolador identificada
por X.

6 Elabore uma rotina em C que ao pressionar um boto, acenda um LED e ao apertar um


segundo boto, apague o respectivo LED. Considere como pinos de entrada para leitura dos
botes os pinos A3 e A4. Considere como sada para acender o LED o pino B0.

#include <16f877A.h> {
#fuses set_tris_a(0xff);
xt,nowdt,noprotect,put,brownout,nolvp set_tris_b(0x00);

#use fast_io(a) porta =0x00;


#use fast_io(b) portb =0x00;
#use fast_io(c)
#use fast_io(d) porta = 0xff;
#use fast_io(e) portb = 0xff;

#byte porta = 0x05 while(TRUE)


#byte portb = 0x06 {
#byte portc = 0x07 if(!liga_led)
#byte portd = 0x08 {
#byte porte = 0x09 output_high(led);
}
#bit liga_led = porta.3 if(!desliga_led)
#bit desliga_led = porta.4 {
output_low(led);
#define led PIN_B0 }
}
void main() }

7 Elabore uma rotina em C para um pisca-pisca de 500 ms para o LED1 (pino B0) e um pisca-
pisca de 250 ms para o LED2 (pino B1).

#include <16f877A.h> #bit led2 = portb.1


#fuses
xt,nowdt,noprotect,put,brownout,nolvp void main()
#use delay(clock=4000000) {
set_tris_b(0x00);
#use fast_io(a)
#use fast_io(b) portb =0xff;
#use fast_io(c)
#use fast_io(d) while(TRUE)
#use fast_io(e) {
delay_ms(250);
#byte porta = 0x05 led2 = !led2;
#byte portb = 0x06 delay_ms(250);
#byte portc = 0x07 led1 = !led1;
#byte portd = 0x08 led2 = !led2;
#byte porte = 0x09 }
}
#bit led1 = portb.0

8 Modifique o exerccio anterior de modo que o pisca-pisca do LED1 funcione sempre que a
chave 1 estiver fechada.

#include <16f877A.h>
#fuses #byte porta = 0x05
xt,nowdt,noprotect,put,brownout,nolvp #byte portb = 0x06
#use delay(clock=4000000) #byte portc = 0x07
#byte portd = 0x08
#use fast_io(a) #byte porte = 0x09
#use fast_io(b)
#use fast_io(c) #bit led1 = portb.0
#use fast_io(d) #bit led2 = portb.1
#use fast_io(e) #bit chave = portb.2
led2 = !led2;
void main() delay_ms(250);
{ led2 = !led2;
set_tris_b(0xfc); if(!chave)
{
portb =0x00; led1=!led1;
}
while(TRUE) }
{ }
delay_ms(250);

9 Elabore uma rotina em C capaz de controlar a sinalizao de um semforo.

#include <16f877A.h>
#fuses
xt,nowdt,noprotect,put,brownout,nolvp
#use delay(clock=4000000)

#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)

#byte porta = 0x05


#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09

#bit RED1 = portb.0


#bit YELLOW1 = portb.1
#bit GREEN1 = portb.2

#bit RED2 = portb.3


#bit YELLOW2 = portb.4
#bit GREEN2 = portb.5

void main()
{
set_tris_b(0x00);

portb =0xff;

while(TRUE)
{
RED1 = 0;
YELLOW1 = 1;
GREEN1 = 1;
RED2 = 1;
YELLOW2 = 1;
GREEN2 = 0;
delay_ms(5000);
RED1 = 1;
YELLOW1 = 0;
GREEN1 = 1;
RED2 = 1;
YELLOW2 = 0;
GREEN2 = 1;
delay_ms(2000);
RED1 = 1;
YELLOW1 = 1;
GREEN1 = 0;
RED2 = 0;
YELLOW2 = 1;
GREEN2 = 1;
delay_ms(5000);
}
}

Você também pode gostar