Buscar

EXERCICIOS COMPLETO15

Prévia do material em texto

Exercícios 
em 
Linguagem C 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Autor: 
Nicolas Daniel 
Fabio Henrique Moura da Silva 
 
2 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Exercícios- Linguagem C 
Aluno: Fabio Moura, Nicolas Daniel –ANO 2016 
1 
 
SUMARIO 
LISTA DE EXERCÍCIOS: ..................................................................................... 3 
1) Fazer um programa que pisque um led (RC2) três vezes e então apague 
(o tempo de piscar deve ser de 0,5 segundos). ................................................... 3 
2) Utilize 4 leds nas seguintes saídas: RC0, RC1, RC2 e RC6. O led RC0 
acende primeiro. Após 2s, ele apaga e então o RC1, e o RC2 acendem juntos. 
Após 2s, o RC2 e o RC6 acende. Após 1s, o RC1 apaga. Após 2s, o RC6 
também apaga. Após 2s, todos os 4 acendem e ficam acesos por 4s. Após esse 
tempo, eles apagam. ............................................................................................. 3 
3) Faça com que dois leds fiquem piscando alternadamente (tempo 0,5). .. 4 
4) Faça com que um led fique piscando sem parar. Se for acionado o botão 
RB0 use tempo de 0,5s, se for acionado RB2 use tempo de 2s, use o botão 
RB3 para parar o processo.................................................................................. 5 
5) Desenvolva um programa para quando o usuário pressionar uma tecla 
inverter o estado de um led, ou seja, se led apagado ele deve acender e se 
acesso ele deve apagar e manter o estado até tecla ser pressionada 
novamente. ............................................................................................................ 5 
6) Utilize 3 leds. Faça um contador binário de 000 até 111. 0(zero) é 
apagado e 1 é aceso. Utilize o botão RB2 para incrementar a contagem. Após 
o término da contagem, ela será reiniciada automaticamente. ........................ 6 
7) Utilize 3 leds. Eles deverão acender na sequencia, um por um (da 
esquerda para a direita). Quando todos estiverem acesos, eles deverão 
apagar, igualmente um por um da direita para a esquerda (isto é, apaga 
primeiro o da direita). Utilize o tempo de 0,7s. O funcionamento deverá se 
repetir indefinidamente. ...................................................................................... 6 
8) Faça com que um led ligado em RC0 pisque 5x e então apague (as 
piscagens podem ser de 0,5 cada) Usando estrutura for. ................................. 7 
9) Utilize 4 led’s, 2 “verdes” (RC2 e RC6) e 2 “vermelhos” (RC0 e RC1). 
Um led verde e vermelho serão um semáforo da Avenida 1. O outro led 
verde e vermelho serão semáforo da Avenida. Faça um programa que 
controle o funcionamento desses semáforos. Você escolhe os tempos. Obs.: 
para evitar acidentes de transito, sempre que um dos semáforos passar para 
vermelho, para então passar verde. Os semáforos deverão funcionar 
continuamente, sem parar nunca, exceto quando o microcontrolador for 
desligado. .............................................................................................................. 8 
10) Fazer um programa para controle de nível de um reservatório de 
água. O reservatório possui dois sensores de nível(mínimo e máximo). 
Quando sensor de nível mínimo sem água (sensor mínimo=0) a bomba 
devera ligar, quando sensor de nível máximo for atingido 
(sensor_máximo=1) desliga bomba. ................................................................... 9 
11) Desenvolver um programa que apareça a seguinte mensagem: .......... 9 
ISI SIM.................................................................................................................. 9 
SENAI CETEMP ................................................................................................. 9 
12) Desenvolver um programa que apareça: ............................................. 10 
Tela 1:.................................................................................................................. 10 
ISIM SIM ............................................................................................................ 10 
SENAI CETEMP, por 2 segundos. ................................................................... 10 
Tela 2:.................................................................................................................. 10 
Grupo ?, a cada vez que foi pressionado o botão RB0 deve aparecer o nome 
de um dos componentes do grupo, tela 3... Após aparecer o nome do último, 
deve retornar para tela 2. .................................................................................. 10 
2 
 
13) Desenvolver um contador de 0 a 9. Quando chegar em 9 deve-se ligar 
um relé. Para reiniciar a contagem o usuário deverá pressionar um botão 
onde será desligado o relé e o display reiniciará a contagem. ........................ 11 
14) Desenvolver um contador de peças de 0 a 99 quando chegar em 99 
deve-se pressionar uma tecla para reiniciar a contagem. ............................... 14 
15) Desenvolver um programa para exibir quantas vagas existem em um 
estacionamento. Quando um carro entrar o estacionamento deve-se subtrair 
a vaga no display. E quando o carro sair do estacionamento deve adicionar a 
vaga ao display. .................................................................................................. 15 
 
3 
 
LISTA DE EXERCÍCIOS: 
1) Faça com que um led ligado em RC2 pisque 3x (três vezes) e então 
apague (as piscagens podem ser de 1s cada). 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 int a=0; 
 int q=3; 
 
 while(1){ 
 
 for(a=0; a<q; a++){ 
 RC2=1; 
 tempo_ms(1000); 
 RC2=0; 
 tempo_ms(1000); 
 
2) Utilize 4 leds nas seguintes saídas: RC0, RC1, RC2 e RC6. O led RC0 
acende primeiro. Após 2s, ele apaga e então o RC1, e o RC2 acendem 
juntos. Após 2s, o RC2 e o RC6 acende. Após 1s, o RC1 apaga. Após 2s, 
o RC6 também apaga. Após 2s, todos os 4 acendem e ficam acesos por 
4s. Após esse tempo, eles apagam. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 int a=0; 
 int q=2; 
 
 
 
 for(a=0; a<q; a++){ 
 
 RE0=1; 
 RC0=1; 
 tempo_ms(2000); 
 RC0=0; 
 RC1=1; 
 RC2=1; 
 tempo_ms(2000); 
 RC2=0; 
 RC6=1; 
 tempo_ms(1000); 
4 
 
 RC1=0; 
 tempo_ms(2000); 
 RC6=0; 
 tempo_ms(2000); 
 RC0=1; 
 RC1=1; 
 RC2=1; 
 RC6=1; 
 tempo_ms(4000); 
 RC0=0; 
 RC1=0; 
 RC2=0; 
 RC6=0; 
 RE0=0; 
 tempo_ms(5000); 
 
 } 
 while(1); 
} 
 
3) Faça com que dois leds fiquem piscando alternadamente (tempo 0,5). 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 int a=0; 
 int q=10; 
 
 
 
 for(a=0; a<q; a++){ 
 RC0=1; 
 RC1=0; 
 tempo_ms(500); 
 RC0=0; 
 RC1=1; 
 tempo_ms(500); 
 RC0=0; 
 RC1=0; 
 } 
 while(1); 
} 
5 
 
4) Faça com que um led fique piscando sem parar. Se for acionado o 
botão RB0 use tempo de 0,5s, se for acionado RB2 use tempo de 2s, useo botão RB3 para parar o processo. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 while(1){ 
 
 if(RB0==1){ 
 while(RB1==0 && RB2==0){ 
 RC0=1; 
 tempo_ms(500); 
 RC0=0; 
 tempo_ms(500); 
 } 
 } 
 
 if(RB1==1){ 
 while(RB0==0 && RB2==0){ 
 RC0=1; 
 tempo_ms(1000); 
 RC0=0; 
 tempo_ms(1000); 
 } 
 } 
 
 if(RB2==1){ 
 while(RB0==0 && RB1==0){ 
 RC0=1; 
 tempo_ms(2000); 
 RC0=0; 
 tempo_ms(2000); 
 } 
 } 
 
 if(RB3==1){ 
 RC0=0; 
 } } } 
 
5) Desenvolva um programa para quando o usuário pressionar uma tecla 
inverter o estado de um led, ou seja, se led apagado ele deve acender e 
se acesso ele deve apagar e manter o estado até tecla ser pressionada 
novamente. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
bit selo=0; 
void main(){ 
6 
 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 while(1){ 
 if(RB0&&!selo){ 
 RC0=~RC0; 
 selo=1; 
 } 
 if(!RB0&&selo){ 
 selo=0; 
 } } } 
 
6) Utilize 3 leds. Faça um contador binário de 000 até 111. 0(zero) é 
apagado e 1 é aceso. Utilize o botão RB2 para incrementar a contagem. 
Após o término da contagem, ela será reiniciada automaticamente. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
bit selo=0; 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 while(1){ 
 if(RB0&&!selo){ 
 PORTC++; 
 selo=1; 
 } 
 if(!RB0&&selo){ 
 selo=0; 
 } 
 
 if(PORTC>7) 
 { 
 PORTC=0; 
 } 
 if(RB1==1) 
 { 
 PORTC=0; 
 } } } 
 
7) Utilize 3 leds. Eles deverão acender na sequencia, um por um (da 
esquerda para a direita). Quando todos estiverem acesos, eles deverão 
apagar, igualmente um por um da direita para a esquerda (isto é, 
apaga primeiro o da direita). Utilize o tempo de 0,7s. O funcionamento 
deverá se repetir indefinidamente. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
bit selo=0; 
int x = 0; 
7 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 while(1){ 
 if(RB0&&!selo){ 
 x++; 
 selo=1; 
 } 
 if(!RB0&&selo){ 
 selo=0; 
 } 
 
 if(x==1){ 
 RC0=1; 
 tempo_ms(700); 
 RC1=1; 
 tempo_ms(700); 
 RC2=1; 
 tempo_ms(700); 
 RC5=1; 
 tempo_ms(700); 
 RC6=1; 
 tempo_ms(700); 
 RC7=1; 
 tempo_ms(700); 
 RE1=1; 
 tempo_ms(700); 
 
 RE1=0; 
 tempo_ms(700); 
 RC7=0; 
 tempo_ms(700); 
 RC6=0; 
 tempo_ms(700); 
 RC5=0; 
 tempo_ms(700); 
 RC2=0; 
 tempo_ms(700); 
 RC1=0; 
 tempo_ms(700); 
 RC0=0; 
 tempo_ms(700); 
 } 
 
 if(x>1){ 
 x=0; 
 PORTC=0; 
 PORTE=0; 
 } } } 
 
8) Faça com que um led ligado em RC0 pisque 5x e então apague (as 
piscagens podem ser de 0,5 cada) Usando estrutura for. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
8 
 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 int a=0; 
 int q=5; 
 
 while(1){ 
 
 if(RB0==1){ 
 for(a=0; a<q; a++){ 
 RC0=1; 
 tempo_ms(500); 
 RC0=0; 
 tempo_ms(500); 
 } } } } 
 
9) Utilize 4 led’s, 2 “verdes” (RC2 e RC6) e 2 “vermelhos” (RC0 e RC1). 
Um led verde e vermelho serão um semáforo da Avenida 1. O outro led 
verde e vermelho serão semáforo da Avenida. Faça um programa que 
controle o funcionamento desses semáforos. Você escolhe os tempos. 
Obs.: para evitar acidentes de transito, sempre que um dos semáforos 
passar para vermelho, para então passar verde. Os semáforos deverão 
funcionar continuamente, sem parar nunca, exceto quando o 
microcontrolador for desligado. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 while(1){ 
 RC0=1; 
 RC2=1; 
 tempo_ms(2000); 
 RC0=0; 
 RC1=1; 
 tempo_ms(5000); 
 RC1=0; 
 RC0=1; 
 tempo_ms(2000); 
 RC2=0; 
 RC6=1; 
 tempo_ms(5000); 
 RC6=0; 
 
 } } 
9 
 
10) Fazer um programa para controle de nível de um reservatório de água. 
O reservatório possui dois sensores de nível(mínimo e máximo). 
Quando sensor de nível mínimo sem água (sensor mínimo=0) a bomba 
devera ligar, quando sensor de nível máximo for atingido 
(sensor_máximo=1) desliga bomba. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 
 while(1){ 
 
 if (RB0==0){ 
 RC0=1; 
 } 
 
 if(RB1==1 && RB0==1){ 
 RC0=0; 
 } } } 
 
11) Desenvolver um programa que apareça a seguinte mensagem: 
ISI SIM 
SENAI CETEMP 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
#include "lcd4bit.h" 
 
void main() 
{ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 init_lcd(_XTAL_FREQ); 
 clear_lcd(); 
 cursor_off(); 
 
 while(1) 
 { 
 char buffer[20]; 
 char milion [20]; 
 
 sprintf(milion,"ISI SIM"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(buffer,"SENAI CETEMP"); 
 lprintf_lin_col(buffer,2,3); 
 } }
10 
 
12) Desenvolver um programa que apareça: 
Tela 1: 
ISIM SIM 
SENAI CETEMP, por 2 segundos. 
Tela 2: 
Grupo ?, a cada vez que foi pressionado o botão RB0 deve aparecer o nome de 
um dos componentes do grupo, tela 3... Após aparecer o nome do último, deve 
retornar para tela 2. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
#include "lcd4bit.h" 
 
 bit selo=0; 
 int x = 0; 
 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 init_lcd(_XTAL_FREQ); 
 clear_lcd(); 
 cursor_off(); 
 
 char buffer[20]; 
 char milion [20]; 
 
 
 sprintf(milion,"ISI SIM"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(buffer,"SENAI CETEMP"); 
 lprintf_lin_col(buffer,2,3); 
 
 tempo_ms(2000); 
 
 clear_lcd(); 
 
 
 while(1){ 
 char grupo [20]; 
 char n1 [20]; 
 char n2 [20]; 
 char n3 [20]; 
 
 if(RB0&&!selo){ 
 x++; 
 selo=1;} 
 if(!RB0&&selo){ 
 selo=0; 
 } 
 
 if(x==0){ 
 clear_lcd(); 
11 
 
 sprintf(grupo,"Grupo 2"); 
 lprintf_lin_col(grupo,1,6); 
 tempo_ms(250); 
 } 
 
 if(x==1){ 
 clear_lcd(); 
 sprintf(n1,"Matheus"); 
 lprintf_lin_col(n1,1,6); 
 tempo_ms(250); 
 } 
 
 if(x==2){ 
 clear_lcd(); 
 sprintf(n2,"Araldi"); 
 lprintf_lin_col(n2,1,6); 
 tempo_ms(250); 
 } 
 
 if(x==3){ 
 clear_lcd(); 
 sprintf(n3,"Nicolas"); 
 lprintf_lin_col(n3,1,6); 
 tempo_ms(250); 
 } 
 
 if(x>3){ 
 x=0; 
 } } } 
 
13) Desenvolver um contador de 0 a 9. Quando chegar em 9 deve-se ligar 
um relé. Para reiniciar a contagem o usuário deverá pressionar um 
botão onde será desligado o relé e o display reiniciará a contagem. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
#include "lcd4bit.h" 
 
 bit selo=0; 
 int x = 0; 
 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 init_lcd(_XTAL_FREQ); 
 clear_lcd(); 
 cursor_off(); 
 
 char milion [20]; 
 
 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 tempo_ms(2000); 
12 
 
 
 clear_lcd(); 
 
 
 while(1){ 
 char num [20]; 
 
 if(RB0&&!selo){ 
 x++; 
 selo=1; 
 } 
 if(!RB0&&selo){ 
 selo=0; 
 } 
 
 if(x==0){ 
 clear_lcd(); 
 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"00"); 
 lprintf_lin_col(num,2,8); 
 
 tempo_ms(250); 
 } 
 
 if(x==1){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"01"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==2){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"02"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==03){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"03"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==4){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
13 
 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"04"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==5){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"05"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==6){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"06"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==7){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"07"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==8){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"08"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==9){ 
 clear_lcd(); 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"09"); 
 lprintf_lin_col(num,2,8); 
 tempo_ms(250); 
 } 
 
 if(x==10){ 
 RC2=1; 
 
14 
 
 clear_lcd(); 
 sprintf(num,"SAIDA RC2"); 
 lprintf_lin_col(num,1,5); 
 
 sprintf(num,"ATIVADA"); 
 lprintf_lin_col(num,2,6); 
 
 tempo_ms(250); 
 } 
 
 if(RB1==1){ 
 RC2=0; 
 x=0; 
 
 clear_lcd(); 
 sprintf(num,"SAIDA RC2"); 
 lprintf_lin_col(num,1,5); 
 sprintf(num,"DESATIVADA"); 
 lprintf_lin_col(num,2,4); 
 tempo_ms(2000); 
 
 clear_lcd(); 
 sprintf(num,"CONTADOR ZERADO"); 
 lprintf_lin_col(num,1,2); 
 
 tempo_ms(2000); 
 
 } } } 
 
14) Desenvolver um contador de peças de 0 a 99 quando chegar em 99 
deve-se pressionar uma tecla para reiniciar a contagem. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
#include "lcd4bit.h" 
 
 bit selo=0; 
 int x = 97; 
 
 
 
void main(){ 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 init_lcd(_XTAL_FREQ); 
 clear_lcd(); 
 cursor_off(); 
 
 char milion [20]; 
 
 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 tempo_ms(2000); 
 
15 
 
 clear_lcd(); 
 
 
 while(1){ 
 char num [20]; 
 
 if(RB0&&!selo){ 
 x++; 
 selo=1; 
 } 
 if(!RB0&&selo){ 
 selo=0; 
 } 
 
 clear_lcd(); 
 
 sprintf(milion,"Contador"); 
 lprintf_lin_col(milion,1,5); 
 
 sprintf(num,"%i",x); 
 lprintf_lin_col(num,2,8); 
 
 tempo_ms(250); 
 
 if(x==99){ 
 TRISB0=0; 
 } 
 
 
 if(RB1==1){ 
 clear_lcd(); 
 
 sprintf(milion,"Contador Zerado"); 
 lprintf_lin_col(milion,1,2); 
 
 tempo_ms(2000); 
 
 x=0; 
 TRISB0=1; 
 
 } } } 
 
15) Desenvolver um programa para exibir quantas vagas existem em um 
estacionamento. Quando um carro entrar o estacionamento deve-se 
subtrair a vaga no display. E quando o carro sair do estacionamento 
deve adicionar a vaga ao display. 
#define _XTAL_FREQ 12000000 
#include <stdio.h> 
#include <stdlib.h> 
#include "Config_PIC18.h" 
#include "lcd4bit.h" 
 
 bit selo1=0; 
 bit selo2=0; 
 int x = 10; 
 
 
 
void main(){ 
 
16 
 
 TRISC=0; 
 TRISE=0; 
 TRISB=1; 
 
 init_lcd(_XTAL_FREQ); 
 clear_lcd(); 
 cursor_off(); 
 
 char milion [20]; 
 
 
 sprintf(milion,"Estacionamento"); 
 lprintf_lin_col(milion,1,3); 
 
 sprintf(milion,"Safe Park"); 
 lprintf_lin_col(milion,2,5); 
 
 tempo_ms(2000); 
 
 clear_lcd(); 
 
 
 while(1){ 
 charnum [20]; 
 
 if(x<11 || x>-1){ 
 
 if(RB0&&!selo1){ 
 x++; 
 selo1=1; 
 } 
 if(!RB0&&selo1){ 
 selo1=0; 
 } 
 
 if(RB1&&!selo2){ 
 x--; 
 selo2=1; 
 } 
 if(!RB1&&selo2){ 
 selo2=0; 
 } 
 
 clear_lcd(); 
 
 sprintf(milion,"Vagas Livres"); 
 lprintf_lin_col(milion,1,4); 
 
 sprintf(num,"%i/10",x); 
 lprintf_lin_col(num,2,8); 
 
 tempo_ms(250); 
 
 if(selo2){ 
 clear_lcd(); 
 sprintf(milion,"Bem Vindo!"); 
 lprintf_lin_col(milion,1,3); 
 
 RC2=1; 
 tempo_ms(4000); 
17 
 
 } 
 
 if(RB7==1){ 
 tempo_ms(2000); 
 RC2=0; 
 } 
 
 if(selo1){ 
 clear_lcd(); 
 sprintf(milion,"Volte Sempre!"); 
 lprintf_lin_col(milion,1,3); 
 
 RC6=1; 
 tempo_ms(4000); 
 } 
 
 if(RB6==1){ 
 tempo_ms(2000); 
 RC6=0; 
 } } } } 
 
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Declaração da variável local 
Tipo Inteira
int a=0;
int q=3; 
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
while=1
sim
Não
RC2=1
Não
a=0
a<3
FIM
"tempo_ms" (500) 
aguarda 0,5 segundos 
RC0=0;
 (DESLIGA LED NO PORT C)
 
"tempo_ms" (1000) 
aguarda 1 segundo
AGUARDA
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
EXERCICIO 1
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Declaração da variável local 
Tipo Inteira, a=0; 
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
while=1
sim
Não
a=0
Não
a=0
a<3
FIM
"tempo_ms" (2000) 
aguarda 2 segundos 
RE0=1; (LIGA LED NO PORT E)
RC0=1;(LIGA LED NO PORT C)
RC0=0; DESLIGA LED NO PORT C
RC1=1; LIGA LED NO PORT C
RC2=1; LIGA LED NO PORT C
 
"tempo_ms" (2000) 
aguarda 2 segundos 
RC2=0; DESLIGA LED NO PORT C
 RC6=1; LIGA LED NO PORT C
 
"tempo_ms" (1000) 
aguarda 1 segundo 
RC1=0; DESLIGA LED NO PORT C
 
"tempo_ms" (2000) 
aguarda 2 segundos 
RC6=0; DESLIGA LED NO PORT C
 
"tempo_ms" (2000) 
aguarda 2 segundos 
RC6=0; DESLIGA LED NO PORT C
 
"tempo_ms" (2000) 
aguarda 2 segundos 
RC0=1; LIGA LED PORT C
 RC1=1; LIGA LED PORT C
 RC2=1; LIGA LED PORT C
RC6=1; LIGA LED PORT C
 
"tempo_ms" (4000) 
aguarda 4 segundos 
RC0=0; DESLIGA LED NO PORT C
 RC1=0; DESLIGA LED NO PORT C 
 RC2=0; DESLIGA LED NO PORT C
 RC6=0; DESLIGA LED NO PORT C
 RE0=0; DESLIGA LED NO PORT E
 
"tempo_ms" (5000) 
aguarda 5 segundos 
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
EXERCICIO 2
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Declaração da variável local 
Tipo Inteira, a=0; 
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
a=0
Não
a=0
a<3
FIM
"tempo_ms" (500) 
aguarda 0,5 segundos 
RC0=1; (LIGA LED NO PORT E)
RC1=0; (DESLIGA LED NO PORT C)
RC0=0; DESLIGA LED NO PORT C
 RC1=1; LIGA LED NO PORT C
 
 
"tempo_ms" (500) 
aguarda 0,5 segundos 
RC0=1; (LIGA LED NO PORT E)
RC1=0; (DESLIGA LED NO PORT C)
while(1) loop infinito
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
EXERCICIO 3
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Declaração da variável local 
Tipo Inteira, a=0; 
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
EXERCICIO 4
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
tempo_ms (500)
tempo de 0,5 segundos
NãoRB0==1 VERIFICA BOTÃO
sim
Não
while
RB1==0
&&
RB2==0
QUANDO O RB1 E RB2
FOREM ZERO
SIMULTANEAMENTE
ESPERA
sim
ESPERA
RC0=1; 
LIGA O RC0 DO PORT C
tempo_ms (500)
tempo de 0,5 segundos
RC0=0; 
DESLIGA O RC0 DO PORT C
tempo_ms (500)
tempo de 0,5 segundos
NãoRB0==1 
VERIFICA BOTÃO
sim
Não
while
RB1==0
&&
RB2==0
QUANDO O RB1 E RB2
FOREM ZERO
SIMULTANEAMENTE
ESPERA
sim
ESPERA
RC0=1; 
LIGA O RC0 DO PORT C
tempo_ms (500)
tempo de 0,5 segundos
RC0=0; 
DESLIGA O RC0 DO PORT C
tempo_ms (500)
tempo de 0,5 segundos
NÃORB0==1 
VERIFICA BOTÃO
SIM
NÃO
while
RB1==0
&&
RB2==0
QUANDO O RB1 E RB2
FOREM ZERO
SIMULTANEAMENTE
ESPERA
SIM
ESPERA
RC0=1; 
LIGA O RC0 DO PORT C
tempo_ms (500)
tempo de 0,5 segundos
RC0=0; 
DESLIGA O RC0 DO PORT C
NÃORB3==1
VERIFICA BOTÃO
SIM
ESPERA
RC0=0; 
DESLIGA O RC0 DO PORT C
while=1
sim
Não
AGUARDA
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
Declaração da variável global 
Bit selo=0; tipo bit faixa 0/1. 
Não
while=1
ESPERARC0=~RC0; //SE RC0 DIFERENTE DE RC0
/Inverte estado do LED
Não
RB0&&!selo 
VERIFICA BOTÃO
sim
sim
!RB0&&selo
DIFERENTE
DE RB0
sim
Não
Bit selo=0 
Desliga LED
while (1)
loop infinito
EXERCICIO 5
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
ESPERA
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Declaração da variável local 
Tipo Inteira, a=0; 
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
ESPERA
Declaração da variável global 
Bit selo=0; tipo bit faixa 0/1. 
PORTC>7
sim
Não
PORTC++ //incrementa
PORT C
Não
PORT C=0 
ZERA O PORT C
RB0&&!selo 
VERIFICA BOTÃO
while (1)
loop infinito
sim
EXERCICIO 6
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Declaração da variável local 
Tipo Inteira, x = 0; 
ESPERA
Declaração da variável global 
Bit selo=0; tipo bit faixa 0/1. 
x==1
sim
Não
x++ //incrementa
PORT C
Não
RB0&&!selo 
VERIFICA BOTÃO
while (1)
loop infinito
sim
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
RC0=1; LIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC1=1; LIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC1=1; LIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC2=1; LIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC5=1; LIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC6=1; LIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC7=1; LIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda0,7 segundos 
RE1=1; LIGA LED NO PORT E
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RE1=0; DESLIGA LED NO PORT E
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC7=0; DESLIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC6=0; DESLIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC5=0; DESLIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC2=0; DESLIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC1=0; DESLIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
RC0=0; DESLIGA LED NO PORT C
 
"tempo_ms" (700) 
aguarda 0,7 segundos 
ESPERAx=0;
x>1 
VERIFICA BOTÃO
PORTC=0;;
PORTE=0;
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
ESPERA
EXERCICIO 7
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Declaração da variável local 
Tipo Inteira, x = 0; 
q=5;
Declaração da variável global 
Bit selo=0; tipo bit faixa 0/1. 
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
ESPERA
a++
Botão de Incremento
NãoRB0==1 VERIFICA BOTÃO
sim
RC2=1
Nãoa<q
FIM
while=1
sim
Não
AGUARDA
RC0=1; LIGA LED NO PORT C
 
"tempo_ms" (500) 
aguarda 0,5 segundos 
RC0=0; DESLIGA LED NO PORT C
 
"tempo_ms" (500) 
aguarda 0,5 segundos 
EXERCICIO 8
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Declaração da variável local 
Tipo Inteira, x = 0; 
q=5;
Declaração da variável global 
Bit selo=0; tipo bit faixa 0/1. 
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
while=1
sim
Não
AGUARDA
RC0=1; LIGA LED NO PORT C
RC2=1; LIGA LED NO PORT C
 
"tempo_ms" (2000) 
aguarda 2 segundos 
RC0=0; DESLIGA LED NO PORT C
RC1=1; LIGA LED NO PORT C
 
"tempo_ms" (5000) 
aguarda 5 segundos 
RC1=0; DESLIGA LED NO PORT C
RC0=1; LIGA LED NO PORT C
 
"tempo_ms" (2000) 
aguarda 2 segundos 
RC2=0; DESLIGA LED NO PORT C
RC6=1; LIGA LED NO PORT C
 
"tempo_ms" (5000) 
aguarda 5 segundos 
RC6=0; DESLIGA LED NO PORT C
 
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
EXERCICIO 9
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
while=1
sim
Não
AGUARDA
ESPERA
RC0=1;
LIGA LED NO PORT C
NãoRB0==0 
VERIFICA BOTÃO
sim
RC0=0;
DESLIGA LED NO PORT C
NãoRB1==1 && RB0==1
CONDIÇÃO SE FOR VERDADEIRA
FIM
sim
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
EXERCICIO 10
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
cursor_off();
RETIRA O CURSOR DO DISPLAY
char buffer[20];
char milion [20];
CHAR VARIAVEL DE 8 BITS
20 CARACTERES
VARIAVEL BUFFER
VARIAVEL MILION
Nãowhile(1)
sim
init_lcd(_XTAL_FREQ);
INICIA O LCD, VALOR DA FREQ.
CRISTAL
clear_lcd();
LIMPA O LCD
sprintf(milion,"ISI SIM");
lprintf_lin_col(milion,1,5);
PRINTAR INFORMAÇÃO NO DISPLAY "ISI SIM"
NA COLUNA 1.
sprintf(buffer,"SENAI CETEMP");
 lprintf_lin_col(buffer,2,3);
PRINTAR INFORMAÇÃO NO DISPLAY 
NA COLUNA 2 "SENAI CETEMP"
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
EXERCICIO 11
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
cursor_off();
RETIRA O CURSOR DO DISPLAY
char buffer[20];
char milion [20];
CHAR VARIAVEL DE 8 BITS
20 CARACTERES
VARIAVEL BUFFER
VARIAVEL MILION
init_lcd(_XTAL_FREQ);
INICIA O LCD, VALOR DA FREQ.
CRISTAL
clear_lcd();
LIMPA O LCD
sprintf(milion,"ISI SIM");
lprintf_lin_col(milion,1,5);
PRINTAR INFORMAÇÃO NO DISPLAY "ISI SIM"
NA COLUNA 1.
sprintf(buffer,"SENAI CETEMP");
 lprintf_lin_col(buffer,2,3);
PRINTAR INFORMAÇÃO NO DISPLAY 
NA COLUNA 2 "SENAI CETEMP"
Declaração da variável global 
Bit selo=0; tipo bit faixa 0/1. 
Declaração da variável local 
Tipo Inteira, x = 0; 
"tempo_ms" (2000) 
aguarda 2 segundos 
clear_lcd();
LIMPA O LCD
Nãowhile(1)
sim
 char grupo [20];
char n1 [20];
 char n2 [20];
 char n3 [20];
CHAR VARIAVEL DE 8 BITS
20 CARACTERES
VARIAVEL GRUPO
VARIAVEL N1, N2 e N3
ESPERA
x++ //incrementa
Variavel X
Não
RB0&&!selo 
VERIFICA BOTÃO
sim
sprintf(grupo,"Grupo 2");
lprintf_lin_col(grupo,1,6); 
PRINTAR INFORMAÇÃO NO DISPLAY "GRUPO 2"
NA COLUNA 1.
"tempo_ms" (250) 
aguarda 0,25 segundos 
1
sprintf(n1,"Matheus");
lprintf_lin_col(n1,1,6); 
PRINTAR INFORMAÇÃO NO DISPLAY "MATHEUS"
NA COLUNA 1.
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(n2,"Araldi");
lprintf_lin_col(n2,1,6); 
PRINTAR INFORMAÇÃO NO DISPLAY "ARALDI"
NA COLUNA 1.
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(n3,"Nicolas");
lprintf_lin_col(n2,1,6); 
PRINTAR INFORMAÇÃO NO DISPLAY "NICOLAS"
NA COLUNA 1.
"tempo_ms" (250) 
aguarda 0,25 segundos 
CONTINUA O
CICLO PROGRAMADO
x=0;
REINICIA O PROCESSO
Não(x>3) VERIFICA SE A VARIAVEL X
É MAIOR QUE 3
sim
1
EXERCICIO 12
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
Declaração da variável global 
Bit selo=0; tipo bit faixa 0/1. 
Declaração da variável local 
Tipo Inteira, x = 0; 
cursor_off();
RETIRA O CURSOR DO DISPLAY
char milion [20];
char num [20];
CHAR VARIAVEL DE 8 BITS
20 CARACTERES
VARIAVEL MILION
VARIAVEL NUM
init_lcd(_XTAL_FREQ);
INICIA O LCD, VALOR DA FREQ.
CRISTAL
clear_lcd();
LIMPA O LCD
sprintf(milion,"CONTADOR");
lprintf_lin_col(milion,1,5);
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
Nãowhile(1)
sim
1
ESPERAx++ //incrementa
Variavel X
NãoRB0&&!selo 
VERIFICA BOTÃO
sim
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"00");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "00"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"01");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "01"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"02");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "02"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"03");lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "03"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"04");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "04"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"05");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "05"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"06");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "06"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"07");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "07"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"08");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "08"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(milion,"Contador");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"09");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "09"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
sprintf(num,"SAIDA RC2");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "SAIDA RC2"
NA COLUNA 1.
sprintf(num,"ATIVADA");
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "ATIVADA"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
ESPERARC2=0;
x=0;
COLOCA 
Variavel "RC2" e "X" EM ZERO
NãoRB1==1 
VERIFICA BOTÃO
É IGUAL A 1
sim
sprintf(num,"SAIDA RC2");
lprintf_lin_col(grupo,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "SAIDA RC2"
NA COLUNA 1.
sprintf(num,"DESATIVADA");
 lprintf_lin_col(num,2,4); 
PRINTAR INFORMAÇÃO NO DISPLAY "ATIVADA"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
clear_lcd();
LIMPA O LCD
sprintf(num,"CONTADOR ZERADO");
lprintf_lin_col(num,1,2); 
PRINTAR INFORMAÇÃO NO DISPLAY
"CONTADOR ZERADO" NA COLUNA 1.
"tempo_ms" (2000) 
aguarda 2 segundos 
1
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
EXERCICIO 13
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
Declaração da variável global 
Bit selo1=0; tipo bit faixa 0/1.
Bit selo2=0; tipo bit faixa 0/1
 
Declaração da variável local 
Tipo Inteira, x = 0; 
cursor_off();
RETIRA O CURSOR DO DISPLAY
char milion [20];
char num [20];
CHAR VARIAVEL DE 8 BITS
20 CARACTERES
VARIAVEL MILION
VARIAVEL NUM
init_lcd(_XTAL_FREQ);
INICIA O LCD, VALOR DA FREQ.
CRISTAL
clear_lcd();
LIMPA O LCD
sprintf(milion,"CONTADOR");
lprintf_lin_col(milion,1,5);
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
 Incluindo biblioteca do LCD
#include "lcd4bit.h"
void main ( )
DETERMINA FUNÇÃO PRINCIPAL A
SER EXECUTADA
"tempo_ms" (2000) 
aguarda 2 segundos 
clear_lcd();
LIMPA O LCD
Nãowhile(1)
sim
1
clear_lcd();
LIMPA O LCD
ESPERAx++ //incrementa
Variavel X
NãoRB0&&!selo 
VERIFICA BOTÃO
sim
clear_lcd();
LIMPA O LCD
sprintf(milion,"Contador");
lprintf_lin_col(milion,1,5); 
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(num,"%i", x);
 lprintf_lin_col(num,2,8); 
PRINTAR INFORMAÇÃO NO DISPLAY "VALOR 
CONTAGEM"
NA COLUNA 2
"tempo_ms" (250) 
aguarda 0,25 segundos 
ESPERATRISB0=0
PORT B0=0;
Nãox==99 
VERIFICA BOTÃO
sim
ESPERAclear_lcd( );
LIMPA O LCD
NãoRB1==1 
VERIFICA BOTÃO
sim
sprintf(milion,"CONTADOR ZERADO");
lprintf_lin_col(milion,1,2);
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR
ZERADO"
NA COLUNA 1.
"tempo_ms" (250) 
aguarda 0,25 segundos 
x=0;
COLOCA VARIAVEL "X" = 0;
EXERCICIO 14
INICIO
Definição da Freq. do Cristal
#define _XTAL_FREQ 12000000
Inclusão das Bibliotecas 
#include <stdio.h>
#include <stdlib.h>
 Configuração das fuses
#include "Config_PIC18.h"
Configuração dos PORT'S I/O
 (PORTC, PORT E=Saída PORT B=Entrada)
Declaração da variável global 
Bit selo1=0; tipo bit faixa 0/1.
Bit selo2=0; tipo bit faixa 0/1
 
Declaração da variável local 
Tipo Inteira, x = 0; 
cursor_off();
RETIRA O CURSOR DO DISPLAY
char milion [20];
char num [20];
CHAR VARIAVEL DE 8 BITS
20 CARACTERES
VARIAVEL MILION
VARIAVEL NUM
init_lcd(_XTAL_FREQ);
INICIA O LCD, VALOR DA FREQ.
CRISTAL
clear_lcd();
LIMPA O LCD
sprintf(milion,"ESTACIONAMENTO");
lprintf_lin_col(milion,1,3);
PRINTAR INFORMAÇÃO NO DISPLAY "CONTADOR"
NA COLUNA 1.
sprintf(milion,"Safe Park");
 lprintf_lin_col(milion,2,5);
PRINTAR INFORMAÇÃO NO DISPLAY "SAFE PARK" NA
 Incluindo biblioteca do LCD
#include "lcd4bit.h"
void main ( )
DETERMINA A FUNÇÃO PRINCIPAL A SER
EXCUTADA
"tempo_ms" (2000) 
aguarda 2 segundos 
clear_lcd();
LIMPA O LCD
Não
while(1)
sim
1
ESPERA
Nãox<10 && x>-1
Se "x" for menor que 10 
compara "x" menor que -1
sim
ESPERAx++ //incrementa
Variavel X
NãoRB0&&!selo1 
VERIFICA BOTÃO
sim
ESPERAx-- //decrementa
Variavel X
NãoRB0&&!selo2 
VERIFICA BOTÃO
sim
clear_lcd();
LIMPA O LCD
sprintf(milion,"VAGAS LIVRES");
lprintf_lin_col(milion,1,4);
PRINTAR INFORMAÇÃO NO DISPLAY "VAGAS LIVRES"
NA COLUNA 1.
sprintf(milion,"%I/10", x);
 lprintf_lin_col(num,2,8);
PRINTAR INFORMAÇÃO NO DISPLAY "SAFE PARK" NA
"tempo_ms" (250) 
aguarda 0,25 segundos 
ESPERAclear_lcd( );
LIMPA O LCD
Nãoselo2 
VERIFICA BOTÃO
sim
sprintf(milion,"BEM VINDO");
lprintf_lin_col(milion,1,3);
PRINTAR INFORMAÇÃO NO DISPLAY "BEM VINDO!"
NA COLUNA 1.
RC2=1;
LIGA O RELÉ DO PORT C
"tempo_ms" (4000) 
aguarda 4 segundos 
ESPERAtempo_ms(2000);
aguarda 2 segundos
NãoRB7==1 
VERIFICA BOTÃO
sim
RC2=0;
DESLIGA O RELÉ NO PORT C
sprintf(milion,"VOLTE SEMPRE!");
lprintf_lin_col(milion,1,3);
PRINTAR INFORMAÇÃO NO DISPLAY "VOLTE SEMPRE"
NA COLUNA 1.
"tempo_ms" (4000) 
aguarda 4 segundos 
RC6=1;
LIGA O RC6 DO PORT C
ESPERA
NãoRB6==1 
VERIFICA BOTÃO
sim
"tempo_ms" (2000) 
aguarda 2 segundos 
RC6=1;
LIGA O RC6 DO PORT C
1
EXERCICIO 15

Outros materiais