Baixe o app para aproveitar ainda mais
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
Compartilhar