Você está na página 1de 3

/*

* FileName: Lista de Exercícios 1 - 29/08/2021


* Dependencies: Veja a seção de Includes
* Processor: PIC18F4550
* Compiles: MPLAB X v3.65 + XC8 1.40
* Company: FATEC - Santo André
* Author: Gabriel dos Santos Jeronimo
* Date: 27/08/2021
* Software License Agreement: Somente para fins didáticos
* File Description: Realizar um sistema de setas de carro, com indicação de
* direção que deve ser mostrada para o usuário em um Display LCD 16X2.
* *******************************************************************************
* Change History:

* Created on 27 de Agosto de 2021, 12:31


********************************************************************
*/

// Includes do Compilador

#include <xc.h>
#include <stdio.h>
#include <p18f4550.h>

//includes do Projeto

#include "Config.h"
#include "config_4550.h"
#include "displayLCD.h"
#include "adc.h"

// Protótipos das Funções

void delay_ms(unsigned int tempodeAtraso);

// Definições dos Apelidos das Variáveis do PIC


#define led1 PORTBbits.RB7
#define led2 PORTBbits.RB6
#define led3 PORTBbits.RB5
#define led4 PORTBbits.RB4
#define led5 PORTBbits.RB3
#define led6 PORTBbits.RB2
#define led7 PORTBbits.RB1
#define led8 PORTBbits.RB0

#define botao_B1 PORTEbits.RE0


#define botao_B2 PORTEbits.RE1

/*****************************************************************************/

void main()
{
ADCON1 = 0x0F;
TRISB = 0b000000000;
TRISE = 0b00000011;
PORTB = 0xFF;
PORTE = 0xFF;

const unsigned char Texto_0[] = "FATEC S.A 2021 ";


const unsigned char Texto_1[] = "Lista Ex 1";
const unsigned char Texto_2[] = "Gabriel Santos";
const unsigned char Texto_3[]= " ";
const unsigned char Texto_4[]= "Seta p/Esquerda ";
const unsigned char Texto_5[]= "Seta p/Direita ";

ConfiguraLCD(); //Prepara e inicia o Display


delay_ms(1);
DesligaCursor();
PosicaoCursorLCD(1,1);
EscreveFraseLCD(Texto_0);
PosicaoCursorLCD(2,1);
EscreveFraseLCD(Texto_1);
delay_ms(3000);

if (botao_B1==0){// Botão Seta da esquerda


PosicaoCursorLCD(1,1);
EscreveFraseLCD(Texto_2);
PosicaoCursorLCD(2,1);
EscreveFraseLCD(Texto_4);
do{
led1 = 0; // Acende
led2 = 0;
led3 = 0;
led4 = 0;
delay_ms(500); // delay de 0,5 segundo antes de ascender
led1 = 1; //Apaga
led2 = 1;
led3 = 1;
led4 = 1;
delay_ms(500); // delay de 0,5 segundo antes de apagar
} while (botao_B1==0); // Mantem o Looping de acordo com a posição do botão
B1
}

if (botao_B2==0){ //Botão Seta da direita


PosicaoCursorLCD(1,1);
EscreveFraseLCD(Texto_2);
PosicaoCursorLCD(2,1);
EscreveFraseLCD(Texto_5);
do {
led5 = 0; // Acende
led6= 0;
led7 = 0;
led8 = 0;
delay_ms(500); // delay de 0,5 segundo antes de ascender
led5 = 1; //Apaga
led6 = 1;
led7 = 1;
led8 = 1;
delay_ms(500); // delay de 0,5 segundo antes de apagar
} while (botao_B2==0); // Mantem o looping de acordo com a posição do botão
B2
}
if(botao_B1==1 && botao_B2==1){ // Caso nenhum dos botões estiver acionado
// deve apenas mostrar meu nome.
do {

PosicaoCursorLCD(1,1);
EscreveFraseLCD(Texto_2);
PosicaoCursorLCD(2,1);
EscreveFraseLCD(Texto_3);

} while (botao_B1==1 && botao_B2==1);


}

// com o valor de while (1) , não é necessario usar a função Do - While


// Porque , o while (1) ja faz a função de repetição por si só.

//******************************************************************************
// Esta função é usada para gerar um delay programável, cuja base de tempo é de
// 1 ms. Assim, se você colocar delay_ms(500), ele esperará um tempo de 500 ms
// para seguir o programa.
//******************************************************************************
void delay_ms(unsigned int tempodeAtraso) // Gera delay para o novo compilador
{
while (--tempodeAtraso)
{
__delay_ms(1);
}
}

Você também pode gostar