Você está na página 1de 9

ASSOCIAÇÃO EDUCACIONAL DOM BOSCO

Fundada em 21 de dezembro de 1964

MANTENEDORA DAS FACULDADES DE CIÊNCIAS ECONÔMICAS, ADMINISTRATIVAS,


COMPUTAÇÃO, FILOSOFIA, CIÊNCIAS E LETRAS DOM BOSCO, FACULDADE DE
ENGENHARIA DE RESENDE E COLÉGIO DE APLICAÇÃO DE RESENDE.

LISTA DE EXERCÍCIOS PROGRAMAÇAO C e PIC 16F877a


1- Qual é a impressão na tela do seguinte programa abaixo?

a) #include <stdio.h> b) #include <stdio.h>


int main () int main ()
{ {
int num,valor; int mtrx [20][10];
num=55; int i,j,count;
num++; count=1;
if(num>=56); for (i=0;i<20;i++)
{ valor=num/2; {
} for (j=0;j<10;j++)
else {
{ mtrx[i][j]=count;
printf(“%d”,mtrx[i][j]);
valor=num count++;
} }
printf ("\n%d %d",valor,num); Printf(“\n”);
return(0); }
} return(0);
}

2 - Escreva um programa em linguagem C onde o usuário entre com 100 notas de


alunos. As mesmas deverão ser armazenadas num vetor. Ao final da entrada dos
dados, o programa deverá imprimir a média dos alunos e a maior nota.

3 – Faça um programa que coloque os números de 1 a 100 na tela na ordem inversa.

4 – Responda as seguintes perguntas referente ao programa abaixo

(a) Como esta configurado o pino portb.4?. É uma entrada ou uma saída e por quê?
(b)A variável led esta associada a que pino do PIC?. Responder com o número do pino.
(c) No programa em que linha decide o tipo de PIC a ser usado?
(d)O que mudaria no programa para que quando botão = 1 o led seja 1?
#include <16f877A.h>
#use delay(clock=4000000,RESTART_WDT)
#fuses xt,nowdt,noprotect,put,brownout,nolvp,nocpd,nowrt

#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 botao = portb.0
#bit led = portb.1

void main ()
{
set_tris_a(0b11111111);
set_tris_b(0b11111001);
set_tris_c(0b11111111);
set_tris_d(0b11111111);
set_tris_e(0b00000111);
porta=0x00;
portb=0x00;
portc=0x00;
portd=0x00;
porte=0x00;
while(TRUE)
{
RESTART_WDT();
if(!botao)
led = 1;
else
led=0;
}
}

6 – Sobre o PIC 16F877a responda:


(a) as principais diferenças entre o PIC 16F628A e o PIC 16F877a
(b) Qual a diferença entre a utilização da função delay e interrupção.
7 – Faça um programa que faz com que um speaker, ligado ao pino RB7 da porta B, dê
beeps periódicos a cada segundo. Cada beep dura cerca de 0,5s. Como o ciclo de clock
do microcontrolador é muito pequeno, é necessário introduzir delays para que os
beeps do speaker possam ser ouvidos claramente

(a) Utilizando delay


(b) Utilizando interrupção

8 - Faça um programa em que um LED, ligado à saída RB0, seja aceso, caso uma chave
C, ligada à entrada RA2, esteja em “1”. Caso contrário, o diodo se apaga.

9 – Observando a figura abaixo faça um programa para que apertando o botão SA13
mostre no display DS4 o número 7 e com o botão SA14 o número 9. Escolha outro
botão para desligar todos os leds do display.
RESOLUÇÃO DA LISTA
1)A)

B)
2)
3)

4)

a) O pino portb.4 é uma entrada pois


foi declarado como entrada com o comando
set_tris_b(0b11111001);

B) o led está associado ao portb.1 que é o


pino 34 do pic16f877a
c)
Na primeira
#include <16f877A.h>

d) Deve-se tirar o “!” pois o sinal “!” significa “not”

if(!botao) > if(botao)


led = 1; led = 1;
else else
led=0; led=0;

6)

a)
PIC 16F877A
*Principais especificações
 PIC de 40 pinos, sendo 33 configuraveis
 5 Ports: A, B, C, D, E
 2 pwms
 Conversor A/D de 10 bits
 15 interrupções disponíveis
 Memória EPROM de 256 bytes
 3 timers (2 de 8 bits e 1 de 16 bits)
 Comunicações seriais (USART, I²C)

PIC 16F628A

 3 Timers sendo Timer0 , timer1 e Timer2


 2 comparadores analógicos
 Capture, compare e PWM
 USART (Universal Synchronous / Assynchronous Receiver / Transmitter)
 Voltagem de referencia programável
 10 Fontes de interrupção
 16 Bi-direcional I/O divididos em PORTA e PORTB

b) Utilizando a função delay para contar o tempo você impede que o seu controlador faça
alguma outra coisa até essa contagem acabar e quando fazemos isso por interrupção o
controlador conta o tempo enquanto faz outras operações e ativa o gatilho da interrupção
quando o tempo determinado pelo programa é atingido.

Você também pode gostar